mirror of
				https://github.com/libsdl-org/SDL.git
				synced 2025-11-04 09:44:35 +00:00 
			
		
		
		
	Added the Chrome HDR tonemap operator
Also added support for the SDL_PIXELFORMAT_XBGR2101010 pixel format to the D3D12, D3D11, and Metal renderers.
This commit is contained in:
		@@ -212,9 +212,9 @@ extern DECLSPEC void SDLCALL SDL_DestroySurface(SDL_Surface *surface);
 | 
				
			|||||||
 *   for YUV surfaces.
 | 
					 *   for YUV surfaces.
 | 
				
			||||||
 * - `SDL_PROP_SURFACE_MAXCLL_NUMBER`: MaxCLL (Maximum Content Light Level) indicates the maximum light level of any single pixel (in cd/m2 or nits) of the content. MaxCLL is usually measured off the final delivered content after mastering. If one uses the full light level of the HDR mastering display and adds a hard clip at its maximum value, MaxCLL would be equal to the peak luminance of the mastering monitor. This defaults to 400 for HDR10 surfaces.
 | 
					 * - `SDL_PROP_SURFACE_MAXCLL_NUMBER`: MaxCLL (Maximum Content Light Level) indicates the maximum light level of any single pixel (in cd/m2 or nits) of the content. MaxCLL is usually measured off the final delivered content after mastering. If one uses the full light level of the HDR mastering display and adds a hard clip at its maximum value, MaxCLL would be equal to the peak luminance of the mastering monitor. This defaults to 400 for HDR10 surfaces.
 | 
				
			||||||
 * - `SDL_PROP_SURFACE_MAXFALL_NUMBER`: MaxFALL (Maximum Frame Average Light Level) indicates the maximum value of the frame average light level (in cd/m2 or nits) of the content. MaxFALL is calculated by averaging the decoded luminance values of all the pixels within a frame. MaxFALL is usually much lower than MaxCLL.
 | 
					 * - `SDL_PROP_SURFACE_MAXFALL_NUMBER`: MaxFALL (Maximum Frame Average Light Level) indicates the maximum value of the frame average light level (in cd/m2 or nits) of the content. MaxFALL is calculated by averaging the decoded luminance values of all the pixels within a frame. MaxFALL is usually much lower than MaxCLL.
 | 
				
			||||||
 * - `SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT`: for HDR10 and floating point surfaces, this defines the value of 100% diffuse white, with higher values being displayed in the High Dynamic Range headroom. This defaults to 100 for surfaces using the PQ colorspace and 1.0 for other surfaces.
 | 
					 * - `SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT`: for HDR10 and floating point surfaces, this defines the value of 100% diffuse white, with higher values being displayed in the High Dynamic Range headroom. This defaults to 100 for HDR10 surfaces and 1.0 for other surfaces.
 | 
				
			||||||
 * - `SDL_PROP_SURFACE_HDR_HEADROOM_FLOAT`: for HDR10 and floating point surfaces, this defines the maximum dynamic range used by the content, in terms of the SDR white point. This defaults to SDL_PROP_SURFACE_MAXCLL_NUMBER / SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT, or 4.0, for HDR10 surfaces.
 | 
					 * - `SDL_PROP_SURFACE_HDR_HEADROOM_FLOAT`: for HDR10 and floating point surfaces, this defines the maximum dynamic range used by the content, in terms of the SDR white point. This defaults to SDL_PROP_SURFACE_MAXCLL_NUMBER / SDL_PROP_SURFACE_SDR_WHITE_POINT_FLOAT, or 4.0, for HDR10 surfaces.
 | 
				
			||||||
 * - `SDL_PROP_SURFACE_TONEMAP_OPERATOR_STRING`: the tone mapping operator used when converting between different SDR/HDR ranges. Currently this supports the form "*=N", where N is a floating point scale factor applied in linear space.
 | 
					 * - `SDL_PROP_SURFACE_TONEMAP_OPERATOR_STRING`: the tone mapping operator used when compressing from a surface with high dynamic range to another with lower dynamic range. Currently this supports "chrome", which uses the same tone mapping that Chrome uses for HDR content, the form "*=N", where N is a floating point scale factor applied in linear space, and "none", which disables tone mapping. This defaults to "chrome".
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * \param surface the SDL_Surface structure to query
 | 
					 * \param surface the SDL_Surface structure to query
 | 
				
			||||||
 * \returns a valid property ID on success or 0 on failure; call
 | 
					 * \returns a valid property ID on success or 0 on failure; call
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1060
									
								
								src/render/direct3d11/D3D11_PixelShader_Advanced.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1060
									
								
								src/render/direct3d11/D3D11_PixelShader_Advanced.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										7
									
								
								src/render/direct3d11/D3D11_PixelShader_Advanced.hlsl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								src/render/direct3d11/D3D11_PixelShader_Advanced.hlsl
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					#include "D3D11_PixelShader_Common.incl"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float4 main(PixelShaderInput input) : SV_TARGET
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    return AdvancedPixelShader(input);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -9,13 +9,17 @@
 | 
				
			|||||||
// {
 | 
					// {
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//   float scRGB_output;                // Offset:    0 Size:     4 [unused]
 | 
					//   float scRGB_output;                // Offset:    0 Size:     4 [unused]
 | 
				
			||||||
//   float color_scale;                 // Offset:    4 Size:     4
 | 
					//   float texture_type;                // Offset:    4 Size:     4 [unused]
 | 
				
			||||||
//   float unused1;                     // Offset:    8 Size:     4 [unused]
 | 
					//   float input_type;                  // Offset:    8 Size:     4 [unused]
 | 
				
			||||||
//   float unused2;                     // Offset:   12 Size:     4 [unused]
 | 
					//   float color_scale;                 // Offset:   12 Size:     4
 | 
				
			||||||
//   float4 Yoffset;                    // Offset:   16 Size:    16 [unused]
 | 
					//   float tonemap_method;              // Offset:   16 Size:     4 [unused]
 | 
				
			||||||
//   float4 Rcoeff;                     // Offset:   32 Size:    16 [unused]
 | 
					//   float tonemap_factor1;             // Offset:   20 Size:     4 [unused]
 | 
				
			||||||
//   float4 Gcoeff;                     // Offset:   48 Size:    16 [unused]
 | 
					//   float tonemap_factor2;             // Offset:   24 Size:     4 [unused]
 | 
				
			||||||
//   float4 Bcoeff;                     // Offset:   64 Size:    16 [unused]
 | 
					//   float sdr_white_point;             // Offset:   28 Size:     4 [unused]
 | 
				
			||||||
 | 
					//   float4 Yoffset;                    // Offset:   32 Size:    16 [unused]
 | 
				
			||||||
 | 
					//   float4 Rcoeff;                     // Offset:   48 Size:    16 [unused]
 | 
				
			||||||
 | 
					//   float4 Gcoeff;                     // Offset:   64 Size:    16 [unused]
 | 
				
			||||||
 | 
					//   float4 Bcoeff;                     // Offset:   80 Size:    16 [unused]
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// }
 | 
					// }
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -55,7 +59,7 @@
 | 
				
			|||||||
//
 | 
					//
 | 
				
			||||||
    ps_2_0
 | 
					    ps_2_0
 | 
				
			||||||
    dcl t1
 | 
					    dcl t1
 | 
				
			||||||
    mul r0.xyz, t1, c0.y
 | 
					    mul r0.xyz, t1, c0.w
 | 
				
			||||||
    mov r0.w, t1.w
 | 
					    mov r0.w, t1.w
 | 
				
			||||||
    mov oC0, r0
 | 
					    mov oC0, r0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -65,7 +69,7 @@ dcl_constantbuffer CB0[1], immediateIndexed
 | 
				
			|||||||
dcl_input_ps linear v2.xyzw
 | 
					dcl_input_ps linear v2.xyzw
 | 
				
			||||||
dcl_output o0.xyzw
 | 
					dcl_output o0.xyzw
 | 
				
			||||||
dcl_temps 1
 | 
					dcl_temps 1
 | 
				
			||||||
mov r0.x, cb0[0].y
 | 
					mov r0.x, cb0[0].w
 | 
				
			||||||
mov r0.w, l(1.000000)
 | 
					mov r0.w, l(1.000000)
 | 
				
			||||||
mul o0.xyzw, r0.xxxw, v2.xyzw
 | 
					mul o0.xyzw, r0.xxxw, v2.xyzw
 | 
				
			||||||
ret 
 | 
					ret 
 | 
				
			||||||
@@ -74,15 +78,15 @@ ret
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const BYTE g_main[] =
 | 
					const BYTE g_main[] =
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
     68,  88,  66,  67,  76, 154, 
 | 
					     68,  88,  66,  67,  78, 223, 
 | 
				
			||||||
    233, 103, 201,  50, 167, 173, 
 | 
					     23,  23,  93, 184, 255,  26, 
 | 
				
			||||||
    112, 159, 134,  20, 133, 254, 
 | 
					    153,   0, 220, 179,  25, 194, 
 | 
				
			||||||
    166,  35,   1,   0,   0,   0, 
 | 
					     30, 249,   1,   0,   0,   0, 
 | 
				
			||||||
     24,   4,   0,   0,   6,   0, 
 | 
					    192,   4,   0,   0,   6,   0, 
 | 
				
			||||||
      0,   0,  56,   0,   0,   0, 
 | 
					      0,   0,  56,   0,   0,   0, 
 | 
				
			||||||
    172,   0,   0,   0,  56,   1, 
 | 
					    172,   0,   0,   0,  56,   1, 
 | 
				
			||||||
      0,   0, 180,   1,   0,   0, 
 | 
					      0,   0, 180,   1,   0,   0, 
 | 
				
			||||||
    112,   3,   0,   0, 228,   3, 
 | 
					     24,   4,   0,   0, 140,   4, 
 | 
				
			||||||
      0,   0,  65, 111, 110,  57, 
 | 
					      0,   0,  65, 111, 110,  57, 
 | 
				
			||||||
    108,   0,   0,   0, 108,   0, 
 | 
					    108,   0,   0,   0, 108,   0, 
 | 
				
			||||||
      0,   0,   0,   2, 255, 255, 
 | 
					      0,   0,   0,   2, 255, 255, 
 | 
				
			||||||
@@ -97,7 +101,7 @@ const BYTE g_main[] =
 | 
				
			|||||||
      0,   0,   0, 128,   1,   0, 
 | 
					      0,   0,   0, 128,   1,   0, 
 | 
				
			||||||
     15, 176,   5,   0,   0,   3, 
 | 
					     15, 176,   5,   0,   0,   3, 
 | 
				
			||||||
      0,   0,   7, 128,   1,   0, 
 | 
					      0,   0,   7, 128,   1,   0, 
 | 
				
			||||||
    228, 176,   0,   0,  85, 160, 
 | 
					    228, 176,   0,   0, 255, 160, 
 | 
				
			||||||
      1,   0,   0,   2,   0,   0, 
 | 
					      1,   0,   0,   2,   0,   0, 
 | 
				
			||||||
      8, 128,   1,   0, 255, 176, 
 | 
					      8, 128,   1,   0, 255, 176, 
 | 
				
			||||||
      1,   0,   0,   2,   0,   8, 
 | 
					      1,   0,   0,   2,   0,   8, 
 | 
				
			||||||
@@ -115,7 +119,7 @@ const BYTE g_main[] =
 | 
				
			|||||||
    104,   0,   0,   2,   1,   0, 
 | 
					    104,   0,   0,   2,   1,   0, 
 | 
				
			||||||
      0,   0,  54,   0,   0,   6, 
 | 
					      0,   0,  54,   0,   0,   6, 
 | 
				
			||||||
     18,   0,  16,   0,   0,   0, 
 | 
					     18,   0,  16,   0,   0,   0, 
 | 
				
			||||||
      0,   0,  26, 128,  32,   0, 
 | 
					      0,   0,  58, 128,  32,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,  54,   0,   0,   5, 
 | 
					      0,   0,  54,   0,   0,   5, 
 | 
				
			||||||
    130,   0,  16,   0,   0,   0, 
 | 
					    130,   0,  16,   0,   0,   0, 
 | 
				
			||||||
@@ -147,12 +151,12 @@ const BYTE g_main[] =
 | 
				
			|||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,  82,  68, 
 | 
					      0,   0,   0,   0,  82,  68, 
 | 
				
			||||||
     69,  70, 180,   1,   0,   0, 
 | 
					     69,  70,  92,   2,   0,   0, 
 | 
				
			||||||
      1,   0,   0,   0,  72,   0, 
 | 
					      1,   0,   0,   0,  72,   0, 
 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					      0,   0,   1,   0,   0,   0, 
 | 
				
			||||||
     28,   0,   0,   0,   0,   4, 
 | 
					     28,   0,   0,   0,   0,   4, 
 | 
				
			||||||
    255, 255,   0,   1,   0,   0, 
 | 
					    255, 255,   0,   1,   0,   0, 
 | 
				
			||||||
    137,   1,   0,   0,  60,   0, 
 | 
					     49,   2,   0,   0,  60,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
@@ -160,54 +164,82 @@ const BYTE g_main[] =
 | 
				
			|||||||
      0,   0,   1,   0,   0,   0, 
 | 
					      0,   0,   1,   0,   0,   0, 
 | 
				
			||||||
     67, 111, 110, 115, 116,  97, 
 | 
					     67, 111, 110, 115, 116,  97, 
 | 
				
			||||||
    110, 116, 115,   0, 171, 171, 
 | 
					    110, 116, 115,   0, 171, 171, 
 | 
				
			||||||
     60,   0,   0,   0,   8,   0, 
 | 
					     60,   0,   0,   0,  12,   0, 
 | 
				
			||||||
      0,   0,  96,   0,   0,   0, 
 | 
					      0,   0,  96,   0,   0,   0, 
 | 
				
			||||||
     80,   0,   0,   0,   0,   0, 
 | 
					     96,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
     32,   1,   0,   0,   0,   0, 
 | 
					    128,   1,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					      0,   0,   4,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,  48,   1, 
 | 
					      0,   0,   0,   0, 144,   1, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
     64,   1,   0,   0,   4,   0, 
 | 
					    160,   1,   0,   0,   4,   0, 
 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					      0,   0,   4,   0,   0,   0, 
 | 
				
			||||||
      2,   0,   0,   0,  48,   1, 
 | 
					      0,   0,   0,   0, 144,   1, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
     76,   1,   0,   0,   8,   0, 
 | 
					    173,   1,   0,   0,   8,   0, 
 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					      0,   0,   4,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,  48,   1, 
 | 
					      0,   0,   0,   0, 144,   1, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
     84,   1,   0,   0,  12,   0, 
 | 
					    184,   1,   0,   0,  12,   0, 
 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					      0,   0,   4,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,  48,   1, 
 | 
					      2,   0,   0,   0, 144,   1, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
     92,   1,   0,   0,  16,   0, 
 | 
					    196,   1,   0,   0,  16,   0, 
 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					      0,   0,   4,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0, 100,   1, 
 | 
					      0,   0,   0,   0, 144,   1, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
    116,   1,   0,   0,  32,   0, 
 | 
					    211,   1,   0,   0,  20,   0, 
 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					      0,   0,   4,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0, 100,   1, 
 | 
					      0,   0,   0,   0, 144,   1, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
    123,   1,   0,   0,  48,   0, 
 | 
					    227,   1,   0,   0,  24,   0, 
 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					      0,   0,   4,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0, 100,   1, 
 | 
					      0,   0,   0,   0, 144,   1, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
    130,   1,   0,   0,  64,   0, 
 | 
					    243,   1,   0,   0,  28,   0, 
 | 
				
			||||||
 | 
					      0,   0,   4,   0,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0, 144,   1, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					      3,   2,   0,   0,  32,   0, 
 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					      0,   0,  16,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0, 100,   1, 
 | 
					      0,   0,   0,   0,  12,   2, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					     28,   2,   0,   0,  48,   0, 
 | 
				
			||||||
 | 
					      0,   0,  16,   0,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,  12,   2, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					     35,   2,   0,   0,  64,   0, 
 | 
				
			||||||
 | 
					      0,   0,  16,   0,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,  12,   2, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					     42,   2,   0,   0,  80,   0, 
 | 
				
			||||||
 | 
					      0,   0,  16,   0,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,  12,   2, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
    115,  99,  82,  71,  66,  95, 
 | 
					    115,  99,  82,  71,  66,  95, 
 | 
				
			||||||
    111, 117, 116, 112, 117, 116, 
 | 
					    111, 117, 116, 112, 117, 116, 
 | 
				
			||||||
      0, 171, 171, 171,   0,   0, 
 | 
					      0, 171, 171, 171,   0,   0, 
 | 
				
			||||||
      3,   0,   1,   0,   1,   0, 
 | 
					      3,   0,   1,   0,   1,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,  99, 111, 108, 111, 
 | 
					      0,   0, 116, 101, 120, 116, 
 | 
				
			||||||
 | 
					    117, 114, 101,  95, 116, 121, 
 | 
				
			||||||
 | 
					    112, 101,   0, 105, 110, 112, 
 | 
				
			||||||
 | 
					    117, 116,  95, 116, 121, 112, 
 | 
				
			||||||
 | 
					    101,   0,  99, 111, 108, 111, 
 | 
				
			||||||
    114,  95, 115,  99,  97, 108, 
 | 
					    114,  95, 115,  99,  97, 108, 
 | 
				
			||||||
    101,   0, 117, 110, 117, 115, 
 | 
					    101,   0, 116, 111, 110, 101, 
 | 
				
			||||||
    101, 100,  49,   0, 117, 110, 
 | 
					    109,  97, 112,  95, 109, 101, 
 | 
				
			||||||
    117, 115, 101, 100,  50,   0, 
 | 
					    116, 104, 111, 100,   0, 116, 
 | 
				
			||||||
     89, 111, 102, 102, 115, 101, 
 | 
					    111, 110, 101, 109,  97, 112, 
 | 
				
			||||||
    116,   0,   1,   0,   3,   0, 
 | 
					     95, 102,  97,  99, 116, 111, 
 | 
				
			||||||
 | 
					    114,  49,   0, 116, 111, 110, 
 | 
				
			||||||
 | 
					    101, 109,  97, 112,  95, 102, 
 | 
				
			||||||
 | 
					     97,  99, 116, 111, 114,  50, 
 | 
				
			||||||
 | 
					      0, 115, 100, 114,  95, 119, 
 | 
				
			||||||
 | 
					    104, 105, 116, 101,  95, 112, 
 | 
				
			||||||
 | 
					    111, 105, 110, 116,   0,  89, 
 | 
				
			||||||
 | 
					    111, 102, 102, 115, 101, 116, 
 | 
				
			||||||
 | 
					      0, 171,   1,   0,   3,   0, 
 | 
				
			||||||
      1,   0,   4,   0,   0,   0, 
 | 
					      1,   0,   4,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
     82,  99, 111, 101, 102, 102, 
 | 
					     82,  99, 111, 101, 102, 102, 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					Texture2D texture0 : register(t0);
 | 
				
			||||||
 | 
					Texture2D texture1 : register(t1);
 | 
				
			||||||
 | 
					Texture2D texture2 : register(t2);
 | 
				
			||||||
 | 
					SamplerState sampler0 : register(s0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct PixelShaderInput
 | 
					struct PixelShaderInput
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float4 pos : SV_POSITION;
 | 
					    float4 pos : SV_POSITION;
 | 
				
			||||||
@@ -5,12 +11,33 @@ struct PixelShaderInput
 | 
				
			|||||||
    float4 color : COLOR0;
 | 
					    float4 color : COLOR0;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// These should mirror the definitions in SDL_render_d3d12.c
 | 
				
			||||||
 | 
					static const float TONEMAP_NONE = 0;
 | 
				
			||||||
 | 
					static const float TONEMAP_LINEAR = 1;
 | 
				
			||||||
 | 
					static const float TONEMAP_CHROME = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NONE = 0;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_RGB = 1;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NV12 = 2;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NV21 = 3;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_YUV = 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const float INPUTTYPE_UNSPECIFIED = 0;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_SRGB = 1;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_SCRGB = 2;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_HDR10 = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cbuffer Constants : register(b0)
 | 
					cbuffer Constants : register(b0)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float scRGB_output;
 | 
					    float scRGB_output;
 | 
				
			||||||
 | 
					    float texture_type;
 | 
				
			||||||
 | 
					    float input_type;
 | 
				
			||||||
    float color_scale;
 | 
					    float color_scale;
 | 
				
			||||||
    float unused1;
 | 
					
 | 
				
			||||||
    float unused2;
 | 
					    float tonemap_method;
 | 
				
			||||||
 | 
					    float tonemap_factor1;
 | 
				
			||||||
 | 
					    float tonemap_factor2;
 | 
				
			||||||
 | 
					    float sdr_white_point;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    float4 Yoffset;
 | 
					    float4 Yoffset;
 | 
				
			||||||
    float4 Rcoeff;
 | 
					    float4 Rcoeff;
 | 
				
			||||||
@@ -18,15 +45,17 @@ cbuffer Constants : register(b0)
 | 
				
			|||||||
    float4 Bcoeff;
 | 
					    float4 Bcoeff;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float3 scRGBtoNits(float3 v)
 | 
					static const float3x3 mat709to2020 = {
 | 
				
			||||||
{
 | 
					    { 0.627404, 0.329283, 0.043313 },
 | 
				
			||||||
    return v * 80.0;
 | 
					    { 0.069097, 0.919541, 0.011362 },
 | 
				
			||||||
}
 | 
					    { 0.016391, 0.088013, 0.895595 }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float3 scRGBfromNits(float3 v)
 | 
					static const float3x3 mat2020to709 = {
 | 
				
			||||||
{
 | 
					    { 1.660496, -0.587656, -0.072840 },
 | 
				
			||||||
    return v / 80.0;
 | 
					    { -0.124547, 1.132895, -0.008348 },
 | 
				
			||||||
}
 | 
					    { -0.018154, -0.100597, 1.118751 }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float sRGBtoLinear(float v)
 | 
					float sRGBtoLinear(float v)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -48,6 +77,92 @@ float sRGBfromLinear(float v)
 | 
				
			|||||||
    return v;
 | 
					    return v;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float3 PQtoLinear(float3 v)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    const float c1 = 0.8359375;
 | 
				
			||||||
 | 
					    const float c2 = 18.8515625;
 | 
				
			||||||
 | 
					    const float c3 = 18.6875;
 | 
				
			||||||
 | 
					    const float oo_m1 = 1.0 / 0.1593017578125;
 | 
				
			||||||
 | 
					    const float oo_m2 = 1.0 / 78.84375;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    float3 num = max(pow(abs(v), oo_m2) - c1, 0.0);
 | 
				
			||||||
 | 
					    float3 den = c2 - c3 * pow(abs(v), oo_m2);
 | 
				
			||||||
 | 
					    return (10000.0 * pow(abs(num / den), oo_m1) / sdr_white_point);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float3 ApplyTonemap(float3 v)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (tonemap_method == TONEMAP_LINEAR) {
 | 
				
			||||||
 | 
					        v *= tonemap_factor1;
 | 
				
			||||||
 | 
					    } else if (tonemap_method == TONEMAP_CHROME) {
 | 
				
			||||||
 | 
					        if (input_type == INPUTTYPE_SCRGB) {
 | 
				
			||||||
 | 
					            // Convert to BT.2020 colorspace for tone mapping
 | 
				
			||||||
 | 
					            v = mul(mat709to2020, v);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        float vmax = max(v.r, max(v.g, v.b));
 | 
				
			||||||
 | 
					        if (vmax > 0.0) {
 | 
				
			||||||
 | 
					            float scale = (1.0 + tonemap_factor1 * vmax) / (1.0 + tonemap_factor2 * vmax);
 | 
				
			||||||
 | 
					            v *= scale;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (input_type == INPUTTYPE_SCRGB) {
 | 
				
			||||||
 | 
					            // Convert to BT.709 colorspace after tone mapping
 | 
				
			||||||
 | 
					            v = mul(mat2020to709, v);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return v;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float4 GetInputColor(PixelShaderInput input)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    float4 rgba;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (texture_type == TEXTURETYPE_NONE) {
 | 
				
			||||||
 | 
					        rgba = 1.0;
 | 
				
			||||||
 | 
					    } else if (texture_type == TEXTURETYPE_RGB) {
 | 
				
			||||||
 | 
					        rgba = texture0.Sample(sampler0, input.tex);
 | 
				
			||||||
 | 
					    } else if (texture_type == TEXTURETYPE_NV12) {
 | 
				
			||||||
 | 
					        float3 yuv;
 | 
				
			||||||
 | 
					        yuv.x = texture0.Sample(sampler0, input.tex).r;
 | 
				
			||||||
 | 
					        yuv.yz = texture1.Sample(sampler0, input.tex).rg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        yuv += Yoffset.xyz;
 | 
				
			||||||
 | 
					        rgba.r = dot(yuv, Rcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.g = dot(yuv, Gcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.b = dot(yuv, Bcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.a = 1.0;
 | 
				
			||||||
 | 
					    } else if (texture_type == TEXTURETYPE_NV21) {
 | 
				
			||||||
 | 
					        float3 yuv;
 | 
				
			||||||
 | 
					        yuv.x = texture0.Sample(sampler0, input.tex).r;
 | 
				
			||||||
 | 
					        yuv.yz = texture1.Sample(sampler0, input.tex).gr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        yuv += Yoffset.xyz;
 | 
				
			||||||
 | 
					        rgba.r = dot(yuv, Rcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.g = dot(yuv, Gcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.b = dot(yuv, Bcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.a = 1.0;
 | 
				
			||||||
 | 
					    } else if (texture_type == TEXTURETYPE_YUV) {
 | 
				
			||||||
 | 
					        float3 yuv;
 | 
				
			||||||
 | 
					        yuv.x = texture0.Sample(sampler0, input.tex).r;
 | 
				
			||||||
 | 
					        yuv.y = texture1.Sample(sampler0, input.tex).r;
 | 
				
			||||||
 | 
					        yuv.z = texture2.Sample(sampler0, input.tex).r;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        yuv += Yoffset.xyz;
 | 
				
			||||||
 | 
					        rgba.r = dot(yuv, Rcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.g = dot(yuv, Gcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.b = dot(yuv, Bcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.a = 1.0;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        // Error!
 | 
				
			||||||
 | 
					        rgba.r = 1.0;
 | 
				
			||||||
 | 
					        rgba.g = 0.0;
 | 
				
			||||||
 | 
					        rgba.b = 0.0;
 | 
				
			||||||
 | 
					        rgba.a = 1.0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return rgba;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float4 GetOutputColor(float4 rgba)
 | 
					float4 GetOutputColor(float4 rgba)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float4 output;
 | 
					    float4 output;
 | 
				
			||||||
@@ -58,9 +173,9 @@ float4 GetOutputColor(float4 rgba)
 | 
				
			|||||||
    return output;
 | 
					    return output;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float4 GetOutputColorFromSRGB(float3 rgb)
 | 
					float3 GetOutputColorFromSRGB(float3 rgb)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float4 output;
 | 
					    float3 output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (scRGB_output) {
 | 
					    if (scRGB_output) {
 | 
				
			||||||
        rgb.r = sRGBtoLinear(rgb.r);
 | 
					        rgb.r = sRGBtoLinear(rgb.r);
 | 
				
			||||||
@@ -69,17 +184,15 @@ float4 GetOutputColorFromSRGB(float3 rgb)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    output.rgb = rgb * color_scale;
 | 
					    output.rgb = rgb * color_scale;
 | 
				
			||||||
    output.a = 1.0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return output;
 | 
					    return output;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float4 GetOutputColorFromSCRGB(float3 rgb)
 | 
					float3 GetOutputColorFromLinear(float3 rgb)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float4 output;
 | 
					    float3 output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    output.rgb = rgb * color_scale;
 | 
					    output.rgb = rgb * color_scale;
 | 
				
			||||||
    output.a = 1.0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!scRGB_output) {
 | 
					    if (!scRGB_output) {
 | 
				
			||||||
        output.r = sRGBfromLinear(output.r);
 | 
					        output.r = sRGBfromLinear(output.r);
 | 
				
			||||||
@@ -90,3 +203,33 @@ float4 GetOutputColorFromSCRGB(float3 rgb)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    return output;
 | 
					    return output;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float4 AdvancedPixelShader(PixelShaderInput input)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    float4 rgba = GetInputColor(input);
 | 
				
			||||||
 | 
					    float4 output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (input_type == INPUTTYPE_HDR10) {
 | 
				
			||||||
 | 
					        rgba.rgb = PQtoLinear(rgba.rgb);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (tonemap_method != TONEMAP_NONE) {
 | 
				
			||||||
 | 
					        rgba.rgb = ApplyTonemap(rgba.rgb);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (input_type == INPUTTYPE_SRGB) {
 | 
				
			||||||
 | 
					        output.rgb = GetOutputColorFromSRGB(rgba.rgb);
 | 
				
			||||||
 | 
					        output.a = rgba.a;
 | 
				
			||||||
 | 
					    } else if (input_type == INPUTTYPE_SCRGB) {
 | 
				
			||||||
 | 
					        output.rgb = GetOutputColorFromLinear(rgba.rgb);
 | 
				
			||||||
 | 
					        output.a = rgba.a;
 | 
				
			||||||
 | 
					    } else if (input_type == INPUTTYPE_HDR10) {
 | 
				
			||||||
 | 
					        rgba.rgb = mul(mat2020to709, rgba.rgb);
 | 
				
			||||||
 | 
					        output.rgb = GetOutputColorFromLinear(rgba.rgb);
 | 
				
			||||||
 | 
					        output.a = rgba.a;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        output = GetOutputColor(rgba);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return output * input.color;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,507 +0,0 @@
 | 
				
			|||||||
#if 0
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Buffer Definitions: 
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// cbuffer Constants
 | 
					 | 
				
			||||||
// {
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//   float scRGB_output;                // Offset:    0 Size:     4
 | 
					 | 
				
			||||||
//   float color_scale;                 // Offset:    4 Size:     4
 | 
					 | 
				
			||||||
//   float unused1;                     // Offset:    8 Size:     4 [unused]
 | 
					 | 
				
			||||||
//   float unused2;                     // Offset:   12 Size:     4 [unused]
 | 
					 | 
				
			||||||
//   float4 Yoffset;                    // Offset:   16 Size:    16
 | 
					 | 
				
			||||||
//   float4 Rcoeff;                     // Offset:   32 Size:    16
 | 
					 | 
				
			||||||
//   float4 Gcoeff;                     // Offset:   48 Size:    16
 | 
					 | 
				
			||||||
//   float4 Bcoeff;                     // Offset:   64 Size:    16
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Resource Bindings:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                                 Type  Format         Dim      HLSL Bind  Count
 | 
					 | 
				
			||||||
// ------------------------------ ---------- ------- ----------- -------------- ------
 | 
					 | 
				
			||||||
// theSampler                        sampler      NA          NA             s0      1 
 | 
					 | 
				
			||||||
// theTextureY                       texture  float4          2d             t0      1 
 | 
					 | 
				
			||||||
// theTextureUV                      texture  float4          2d             t1      1 
 | 
					 | 
				
			||||||
// Constants                         cbuffer      NA          NA            cb0      1 
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Input signature:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
// -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
// SV_POSITION              0   xyzw        0      POS   float       
 | 
					 | 
				
			||||||
// TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
					 | 
				
			||||||
// COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Output signature:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
// -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
// SV_TARGET                0   xyzw        0   TARGET   float   xyzw
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
ps_5_0
 | 
					 | 
				
			||||||
dcl_globalFlags refactoringAllowed
 | 
					 | 
				
			||||||
dcl_constantbuffer CB0[5], immediateIndexed
 | 
					 | 
				
			||||||
dcl_sampler s0, mode_default
 | 
					 | 
				
			||||||
dcl_resource_texture2d (float,float,float,float) t0
 | 
					 | 
				
			||||||
dcl_resource_texture2d (float,float,float,float) t1
 | 
					 | 
				
			||||||
dcl_input_ps linear v1.xy
 | 
					 | 
				
			||||||
dcl_input_ps linear v2.xyzw
 | 
					 | 
				
			||||||
dcl_output o0.xyzw
 | 
					 | 
				
			||||||
dcl_temps 4
 | 
					 | 
				
			||||||
sample_indexable(texture2d)(float,float,float,float) r0.x, v1.xyxx, t0.xyzw, s0
 | 
					 | 
				
			||||||
sample_indexable(texture2d)(float,float,float,float) r0.yz, v1.xyxx, t1.zxyw, s0
 | 
					 | 
				
			||||||
add r0.xyz, r0.xyzx, cb0[1].xyzx
 | 
					 | 
				
			||||||
dp3 r1.x, r0.xyzx, cb0[2].xyzx
 | 
					 | 
				
			||||||
dp3 r1.y, r0.xyzx, cb0[3].xyzx
 | 
					 | 
				
			||||||
dp3 r1.z, r0.xyzx, cb0[4].xyzx
 | 
					 | 
				
			||||||
log r0.xyz, |r1.xyzx|
 | 
					 | 
				
			||||||
mul r0.xyz, r0.xyzx, l(0.012683, 0.012683, 0.012683, 0.000000)
 | 
					 | 
				
			||||||
exp r0.xyz, r0.xyzx
 | 
					 | 
				
			||||||
add r1.xyz, r0.xyzx, l(-0.835938, -0.835938, -0.835938, 0.000000)
 | 
					 | 
				
			||||||
max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
 | 
					 | 
				
			||||||
mad r0.xyz, -r0.xyzx, l(18.687500, 18.687500, 18.687500, 0.000000), l(18.851562, 18.851562, 18.851562, 0.000000)
 | 
					 | 
				
			||||||
div r0.xyz, r1.xyzx, r0.xyzx
 | 
					 | 
				
			||||||
log r0.xyz, |r0.xyzx|
 | 
					 | 
				
			||||||
mul r0.xyz, r0.xyzx, l(6.277395, 6.277395, 6.277395, 0.000000)
 | 
					 | 
				
			||||||
exp r0.xyz, r0.xyzx
 | 
					 | 
				
			||||||
mul r0.xyz, r0.xyzx, l(10000.000000, 10000.000000, 10000.000000, 0.000000)
 | 
					 | 
				
			||||||
dp3 r1.x, l(1.660496, -0.587656, -0.072840, 0.000000), r0.xyzx
 | 
					 | 
				
			||||||
dp3 r1.y, l(-0.124547, 1.132895, -0.008348, 0.000000), r0.xyzx
 | 
					 | 
				
			||||||
dp3 r1.z, l(-0.018154, -0.100597, 1.118751, 0.000000), r0.xyzx
 | 
					 | 
				
			||||||
mul r0.xyz, r1.xyzx, cb0[0].yyyy
 | 
					 | 
				
			||||||
mul r1.xyz, r0.xyzx, l(0.012500, 0.012500, 0.012500, 0.000000)
 | 
					 | 
				
			||||||
ne r0.w, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].x
 | 
					 | 
				
			||||||
if_z r0.w
 | 
					 | 
				
			||||||
  ge r2.xyz, l(0.250464, 0.250464, 0.250464, 0.000000), r0.xyzx
 | 
					 | 
				
			||||||
  mul r0.xyz, r0.xyzx, l(0.161500, 0.161500, 0.161500, 0.000000)
 | 
					 | 
				
			||||||
  log r3.xyz, |r1.xyzx|
 | 
					 | 
				
			||||||
  mul r3.xyz, r3.xyzx, l(0.416667, 0.416667, 0.416667, 0.000000)
 | 
					 | 
				
			||||||
  exp r3.xyz, r3.xyzx
 | 
					 | 
				
			||||||
  mad r3.xyz, r3.xyzx, l(1.055000, 1.055000, 1.055000, 0.000000), l(-0.055000, -0.055000, -0.055000, 0.000000)
 | 
					 | 
				
			||||||
  movc_sat r1.xyz, r2.xyzx, r0.xyzx, r3.xyzx
 | 
					 | 
				
			||||||
endif 
 | 
					 | 
				
			||||||
mov r1.w, l(1.000000)
 | 
					 | 
				
			||||||
mul o0.xyzw, r1.xyzw, v2.xyzw
 | 
					 | 
				
			||||||
ret 
 | 
					 | 
				
			||||||
// Approximately 35 instruction slots used
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const BYTE g_main[] =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
     68,  88,  66,  67,  95, 217, 
 | 
					 | 
				
			||||||
    108, 181,  38, 184,  86,  20, 
 | 
					 | 
				
			||||||
     51,  33, 123, 248, 135,  60, 
 | 
					 | 
				
			||||||
      0, 250,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
    144,   9,   0,   0,   5,   0, 
 | 
					 | 
				
			||||||
      0,   0,  52,   0,   0,   0, 
 | 
					 | 
				
			||||||
     72,   3,   0,   0, 188,   3, 
 | 
					 | 
				
			||||||
      0,   0, 240,   3,   0,   0, 
 | 
					 | 
				
			||||||
    244,   8,   0,   0,  82,  68, 
 | 
					 | 
				
			||||||
     69,  70,  12,   3,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0, 236,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
     60,   0,   0,   0,   0,   5, 
 | 
					 | 
				
			||||||
    255, 255,   0,   1,   0,   0, 
 | 
					 | 
				
			||||||
    225,   2,   0,   0,  82,  68, 
 | 
					 | 
				
			||||||
     49,  49,  60,   0,   0,   0, 
 | 
					 | 
				
			||||||
     24,   0,   0,   0,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,  40,   0,   0,   0, 
 | 
					 | 
				
			||||||
     36,   0,   0,   0,  12,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    188,   0,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0, 199,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,   5,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
    255, 255, 255, 255,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     13,   0,   0,   0, 211,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
      5,   0,   0,   0,   4,   0, 
 | 
					 | 
				
			||||||
      0,   0, 255, 255, 255, 255, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  13,   0,   0,   0, 
 | 
					 | 
				
			||||||
    224,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0, 116, 104, 101,  83, 
 | 
					 | 
				
			||||||
     97, 109, 112, 108, 101, 114, 
 | 
					 | 
				
			||||||
      0, 116, 104, 101,  84, 101, 
 | 
					 | 
				
			||||||
    120, 116, 117, 114, 101,  89, 
 | 
					 | 
				
			||||||
      0, 116, 104, 101,  84, 101, 
 | 
					 | 
				
			||||||
    120, 116, 117, 114, 101,  85, 
 | 
					 | 
				
			||||||
     86,   0,  67, 111, 110, 115, 
 | 
					 | 
				
			||||||
    116,  97, 110, 116, 115,   0, 
 | 
					 | 
				
			||||||
    171, 171, 224,   0,   0,   0, 
 | 
					 | 
				
			||||||
      8,   0,   0,   0,   4,   1, 
 | 
					 | 
				
			||||||
      0,   0,  80,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  68,   2,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   4,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
     88,   2,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 255, 255, 255, 255, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 255, 255, 
 | 
					 | 
				
			||||||
    255, 255,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    124,   2,   0,   0,   4,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,  88,   2, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    255, 255, 255, 255,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 255, 255, 255, 255, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 136,   2, 
 | 
					 | 
				
			||||||
      0,   0,   8,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  88,   2,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 255, 255, 
 | 
					 | 
				
			||||||
    255, 255,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    255, 255, 255, 255,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 144,   2,   0,   0, 
 | 
					 | 
				
			||||||
     12,   0,   0,   0,   4,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     88,   2,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 255, 255, 255, 255, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 255, 255, 
 | 
					 | 
				
			||||||
    255, 255,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    152,   2,   0,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 168,   2, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    255, 255, 255, 255,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 255, 255, 255, 255, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 204,   2, 
 | 
					 | 
				
			||||||
      0,   0,  32,   0,   0,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0, 168,   2,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 255, 255, 
 | 
					 | 
				
			||||||
    255, 255,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    255, 255, 255, 255,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 211,   2,   0,   0, 
 | 
					 | 
				
			||||||
     48,   0,   0,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
    168,   2,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 255, 255, 255, 255, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 255, 255, 
 | 
					 | 
				
			||||||
    255, 255,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    218,   2,   0,   0,  64,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 168,   2, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    255, 255, 255, 255,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 255, 255, 255, 255, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 115,  99, 
 | 
					 | 
				
			||||||
     82,  71,  66,  95, 111, 117, 
 | 
					 | 
				
			||||||
    116, 112, 117, 116,   0, 102, 
 | 
					 | 
				
			||||||
    108, 111,  97, 116,   0, 171, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   1,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  81,   2,   0,   0, 
 | 
					 | 
				
			||||||
     99, 111, 108, 111, 114,  95, 
 | 
					 | 
				
			||||||
    115,  99,  97, 108, 101,   0, 
 | 
					 | 
				
			||||||
    117, 110, 117, 115, 101, 100, 
 | 
					 | 
				
			||||||
     49,   0, 117, 110, 117, 115, 
 | 
					 | 
				
			||||||
    101, 100,  50,   0,  89, 111, 
 | 
					 | 
				
			||||||
    102, 102, 115, 101, 116,   0, 
 | 
					 | 
				
			||||||
    102, 108, 111,  97, 116,  52, 
 | 
					 | 
				
			||||||
      0, 171,   1,   0,   3,   0, 
 | 
					 | 
				
			||||||
      1,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 160,   2, 
 | 
					 | 
				
			||||||
      0,   0,  82,  99, 111, 101, 
 | 
					 | 
				
			||||||
    102, 102,   0,  71,  99, 111, 
 | 
					 | 
				
			||||||
    101, 102, 102,   0,  66,  99, 
 | 
					 | 
				
			||||||
    111, 101, 102, 102,   0,  77, 
 | 
					 | 
				
			||||||
    105,  99, 114, 111, 115, 111, 
 | 
					 | 
				
			||||||
    102, 116,  32,  40,  82,  41, 
 | 
					 | 
				
			||||||
     32,  72,  76,  83,  76,  32, 
 | 
					 | 
				
			||||||
     83, 104,  97, 100, 101, 114, 
 | 
					 | 
				
			||||||
     32,  67, 111, 109, 112, 105, 
 | 
					 | 
				
			||||||
    108, 101, 114,  32,  49,  48, 
 | 
					 | 
				
			||||||
     46,  49,   0, 171, 171, 171, 
 | 
					 | 
				
			||||||
     73,  83,  71,  78, 108,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      8,   0,   0,   0,  80,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     15,   0,   0,   0,  92,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      3,   3,   0,   0, 101,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
     15,  15,   0,   0,  83,  86, 
 | 
					 | 
				
			||||||
     95,  80,  79,  83,  73,  84, 
 | 
					 | 
				
			||||||
     73,  79,  78,   0,  84,  69, 
 | 
					 | 
				
			||||||
     88,  67,  79,  79,  82,  68, 
 | 
					 | 
				
			||||||
      0,  67,  79,  76,  79,  82, 
 | 
					 | 
				
			||||||
      0, 171,  79,  83,  71,  78, 
 | 
					 | 
				
			||||||
     44,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   8,   0,   0,   0, 
 | 
					 | 
				
			||||||
     32,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  15,   0,   0,   0, 
 | 
					 | 
				
			||||||
     83,  86,  95,  84,  65,  82, 
 | 
					 | 
				
			||||||
     71,  69,  84,   0, 171, 171, 
 | 
					 | 
				
			||||||
     83,  72,  69,  88, 252,   4, 
 | 
					 | 
				
			||||||
      0,   0,  80,   0,   0,   0, 
 | 
					 | 
				
			||||||
     63,   1,   0,   0, 106,   8, 
 | 
					 | 
				
			||||||
      0,   1,  89,   0,   0,   4, 
 | 
					 | 
				
			||||||
     70, 142,  32,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   5,   0,   0,   0, 
 | 
					 | 
				
			||||||
     90,   0,   0,   3,   0,  96, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     88,  24,   0,   4,   0, 112, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     85,  85,   0,   0,  88,  24, 
 | 
					 | 
				
			||||||
      0,   4,   0, 112,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  85,  85, 
 | 
					 | 
				
			||||||
      0,   0,  98,  16,   0,   3, 
 | 
					 | 
				
			||||||
     50,  16,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  98,  16,   0,   3, 
 | 
					 | 
				
			||||||
    242,  16,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0, 101,   0,   0,   3, 
 | 
					 | 
				
			||||||
    242,  32,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 104,   0,   0,   2, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,  69,   0, 
 | 
					 | 
				
			||||||
      0, 139, 194,   0,   0, 128, 
 | 
					 | 
				
			||||||
     67,  85,  21,   0,  18,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,  16,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70, 126,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,  96, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     69,   0,   0, 139, 194,   0, 
 | 
					 | 
				
			||||||
      0, 128,  67,  85,  21,   0, 
 | 
					 | 
				
			||||||
     98,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,  16,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  38, 125, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,  96,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   8, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70, 130, 
 | 
					 | 
				
			||||||
     32,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   8,  18,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70, 130,  32,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   8,  34,   0, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70, 130,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   8, 
 | 
					 | 
				
			||||||
     66,   0,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70, 130, 
 | 
					 | 
				
			||||||
     32,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,  47,   0, 
 | 
					 | 
				
			||||||
      0,   6, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16, 128, 129,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  56,   0, 
 | 
					 | 
				
			||||||
      0,  10, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,  64,   0,   0, 172, 205, 
 | 
					 | 
				
			||||||
     79,  60, 172, 205,  79,  60, 
 | 
					 | 
				
			||||||
    172, 205,  79,  60,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  25,   0,   0,   5, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,  10, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,  64,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     86, 191,   0,   0,  86, 191, 
 | 
					 | 
				
			||||||
      0,   0,  86, 191,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  52,   0,   0,  10, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     50,   0,   0,  16, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16, 128,  65,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,  64,   0,   0,   0, 128, 
 | 
					 | 
				
			||||||
    149,  65,   0, 128, 149,  65, 
 | 
					 | 
				
			||||||
      0, 128, 149,  65,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,  64,   0,   0, 
 | 
					 | 
				
			||||||
      0, 208, 150,  65,   0, 208, 
 | 
					 | 
				
			||||||
    150,  65,   0, 208, 150,  65, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  14,   0, 
 | 
					 | 
				
			||||||
      0,   7, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  47,   0,   0,   6, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16, 128, 
 | 
					 | 
				
			||||||
    129,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,  10, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 107, 224, 200,  64, 
 | 
					 | 
				
			||||||
    107, 224, 200,  64, 107, 224, 
 | 
					 | 
				
			||||||
    200,  64,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     25,   0,   0,   5, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,  10, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0,   0,  64,  28,  70, 
 | 
					 | 
				
			||||||
      0,  64,  28,  70,   0,  64, 
 | 
					 | 
				
			||||||
     28,  70,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,  10,  18,   0, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,  64,   0,   0,  34, 139, 
 | 
					 | 
				
			||||||
    212,  63, 160, 112,  22, 191, 
 | 
					 | 
				
			||||||
     35,  45, 149, 189,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,  10,  34,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 127,  18, 255, 189, 
 | 
					 | 
				
			||||||
    180,   2, 145,  63,  13, 198, 
 | 
					 | 
				
			||||||
      8, 188,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,  10, 
 | 
					 | 
				
			||||||
     66,   0,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,  64,   0,   0, 
 | 
					 | 
				
			||||||
    179, 183, 148, 188, 205,   5, 
 | 
					 | 
				
			||||||
    206, 189,  60,  51, 143,  63, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     56,   0,   0,   8, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  86, 133,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,  10, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 205, 204,  76,  60, 
 | 
					 | 
				
			||||||
    205, 204,  76,  60, 205, 204, 
 | 
					 | 
				
			||||||
     76,  60,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     57,   0,   0,  11, 130,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,  64,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  10, 128,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  31,   0,   0,   3, 
 | 
					 | 
				
			||||||
     58,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  29,   0,   0,  10, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,  64,   0,   0, 
 | 
					 | 
				
			||||||
    209,  60, 128,  62, 209,  60, 
 | 
					 | 
				
			||||||
    128,  62, 209,  60, 128,  62, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     56,   0,   0,  10, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,  64,   0,   0, 
 | 
					 | 
				
			||||||
     66,  96,  37,  62,  66,  96, 
 | 
					 | 
				
			||||||
     37,  62,  66,  96,  37,  62, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  47,   0, 
 | 
					 | 
				
			||||||
      0,   6, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16, 128, 129,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  56,   0, 
 | 
					 | 
				
			||||||
      0,  10, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,  64,   0,   0,  85,  85, 
 | 
					 | 
				
			||||||
    213,  62,  85,  85, 213,  62, 
 | 
					 | 
				
			||||||
     85,  85, 213,  62,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  25,   0,   0,   5, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,  50,   0, 
 | 
					 | 
				
			||||||
      0,  15, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,  64,   0,   0,  61,  10, 
 | 
					 | 
				
			||||||
    135,  63,  61,  10, 135,  63, 
 | 
					 | 
				
			||||||
     61,  10, 135,  63,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,  64,   0,   0, 
 | 
					 | 
				
			||||||
    174,  71,  97, 189, 174,  71, 
 | 
					 | 
				
			||||||
     97, 189, 174,  71,  97, 189, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  55,  32, 
 | 
					 | 
				
			||||||
      0,   9, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,  21,   0, 
 | 
					 | 
				
			||||||
      0,   1,  54,   0,   0,   5, 
 | 
					 | 
				
			||||||
    130,   0,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,  64,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 128,  63,  56,   0, 
 | 
					 | 
				
			||||||
      0,   7, 242,  32,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,  14, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,  30,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,  62,   0,   0,   1, 
 | 
					 | 
				
			||||||
     83,  84,  65,  84, 148,   0, 
 | 
					 | 
				
			||||||
      0,   0,  35,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     27,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,45 +0,0 @@
 | 
				
			|||||||
Texture2D theTextureY : register(t0);
 | 
					 | 
				
			||||||
Texture2D theTextureUV : register(t1);
 | 
					 | 
				
			||||||
SamplerState theSampler : register(s0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "D3D11_PixelShader_Common.incl"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float3 PQtoNits(float3 v)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    const float c1 = 0.8359375;
 | 
					 | 
				
			||||||
    const float c2 = 18.8515625;
 | 
					 | 
				
			||||||
    const float c3 = 18.6875;
 | 
					 | 
				
			||||||
    const float oo_m1 = 1.0 / 0.1593017578125;
 | 
					 | 
				
			||||||
    const float oo_m2 = 1.0 / 78.84375;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 num = max(pow(abs(v), oo_m2) - c1, 0.0);
 | 
					 | 
				
			||||||
    float3 den = c2 - c3 * pow(abs(v), oo_m2);
 | 
					 | 
				
			||||||
    return 10000.0 * pow(abs(num / den), oo_m1);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float4 main(PixelShaderInput input) : SV_TARGET
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    const float3x3 mat2020to709 = {
 | 
					 | 
				
			||||||
        1.660496, -0.587656, -0.072840,
 | 
					 | 
				
			||||||
        -0.124547, 1.132895, -0.008348,
 | 
					 | 
				
			||||||
        -0.018154, -0.100597, 1.118751
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 yuv;
 | 
					 | 
				
			||||||
    yuv.x = theTextureY.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
    yuv.yz = theTextureUV.Sample(theSampler, input.tex).rg;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 rgb;
 | 
					 | 
				
			||||||
    yuv += Yoffset.xyz;
 | 
					 | 
				
			||||||
    rgb.r = dot(yuv, Rcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.g = dot(yuv, Gcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.b = dot(yuv, Bcoeff.xyz);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    rgb = PQtoNits(rgb);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    rgb = mul(mat2020to709, rgb);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    rgb = scRGBfromNits(rgb);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return GetOutputColorFromSCRGB(rgb) * input.color;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,545 +0,0 @@
 | 
				
			|||||||
#if 0
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Buffer Definitions: 
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// cbuffer Constants
 | 
					 | 
				
			||||||
// {
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//   float scRGB_output;                // Offset:    0 Size:     4
 | 
					 | 
				
			||||||
//   float color_scale;                 // Offset:    4 Size:     4
 | 
					 | 
				
			||||||
//   float unused1;                     // Offset:    8 Size:     4 [unused]
 | 
					 | 
				
			||||||
//   float unused2;                     // Offset:   12 Size:     4 [unused]
 | 
					 | 
				
			||||||
//   float4 Yoffset;                    // Offset:   16 Size:    16
 | 
					 | 
				
			||||||
//   float4 Rcoeff;                     // Offset:   32 Size:    16
 | 
					 | 
				
			||||||
//   float4 Gcoeff;                     // Offset:   48 Size:    16
 | 
					 | 
				
			||||||
//   float4 Bcoeff;                     // Offset:   64 Size:    16
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Resource Bindings:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                                 Type  Format         Dim      HLSL Bind  Count
 | 
					 | 
				
			||||||
// ------------------------------ ---------- ------- ----------- -------------- ------
 | 
					 | 
				
			||||||
// theSampler                        sampler      NA          NA             s0      1 
 | 
					 | 
				
			||||||
// theTextureY                       texture  float4          2d             t0      1 
 | 
					 | 
				
			||||||
// theTextureUV                      texture  float4          2d             t1      1 
 | 
					 | 
				
			||||||
// Constants                         cbuffer      NA          NA            cb0      1 
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Input signature:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
// -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
// SV_POSITION              0   xyzw        0      POS   float       
 | 
					 | 
				
			||||||
// TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
					 | 
				
			||||||
// COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Output signature:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
// -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
// SV_TARGET                0   xyzw        0   TARGET   float   xyzw
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Constant buffer to DX9 shader constant mappings:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Target Reg Buffer  Start Reg # of Regs        Data Conversion
 | 
					 | 
				
			||||||
// ---------- ------- --------- --------- ----------------------
 | 
					 | 
				
			||||||
// c0         cb0             0         5  ( FLT, FLT, FLT, FLT)
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Sampler/Resource to DX9 shader sampler mappings:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Target Sampler Source Sampler  Source Resource
 | 
					 | 
				
			||||||
// -------------- --------------- ----------------
 | 
					 | 
				
			||||||
// s0             s0              t0               
 | 
					 | 
				
			||||||
// s1             s0              t1               
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Level9 shader bytecode:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
    ps_2_0
 | 
					 | 
				
			||||||
    def c5, 0.0404499993, 0.0773993805, 0.0549999997, 0.947867334
 | 
					 | 
				
			||||||
    def c6, 2.4000001, 1, 0, 0
 | 
					 | 
				
			||||||
    dcl t0.xy
 | 
					 | 
				
			||||||
    dcl t1
 | 
					 | 
				
			||||||
    dcl_2d s0
 | 
					 | 
				
			||||||
    dcl_2d s1
 | 
					 | 
				
			||||||
    texld r0, t0, s0
 | 
					 | 
				
			||||||
    texld r1, t0, s1
 | 
					 | 
				
			||||||
    mov r0.yz, r1.zxyw
 | 
					 | 
				
			||||||
    add r0.xyz, r0, c1
 | 
					 | 
				
			||||||
    dp3 r1.x, r0, c2
 | 
					 | 
				
			||||||
    add r0.w, r1.x, c5.z
 | 
					 | 
				
			||||||
    abs r0.w, r0.w
 | 
					 | 
				
			||||||
    mul r0.w, r0.w, c5.w
 | 
					 | 
				
			||||||
    pow r1.w, r0.w, c6.x
 | 
					 | 
				
			||||||
    add r0.w, -r1.x, c5.x
 | 
					 | 
				
			||||||
    mul r2.w, r1.x, c5.y
 | 
					 | 
				
			||||||
    cmp r2.x, r0.w, r2.w, r1.w
 | 
					 | 
				
			||||||
    dp3 r1.y, r0, c3
 | 
					 | 
				
			||||||
    dp3 r1.z, r0, c4
 | 
					 | 
				
			||||||
    add r1.w, r1.y, c5.z
 | 
					 | 
				
			||||||
    abs r1.w, r1.w
 | 
					 | 
				
			||||||
    mul r1.w, r1.w, c5.w
 | 
					 | 
				
			||||||
    pow r2.w, r1.w, c6.x
 | 
					 | 
				
			||||||
    add r1.w, -r1.y, c5.x
 | 
					 | 
				
			||||||
    mul r0.x, r1.y, c5.y
 | 
					 | 
				
			||||||
    cmp r2.y, r1.w, r0.x, r2.w
 | 
					 | 
				
			||||||
    add r1.w, r1.z, c5.z
 | 
					 | 
				
			||||||
    abs r1.w, r1.w
 | 
					 | 
				
			||||||
    mul r1.w, r1.w, c5.w
 | 
					 | 
				
			||||||
    pow r2.w, r1.w, c6.x
 | 
					 | 
				
			||||||
    add r1.w, -r1.z, c5.x
 | 
					 | 
				
			||||||
    mul r0.x, r1.z, c5.y
 | 
					 | 
				
			||||||
    cmp r2.z, r1.w, r0.x, r2.w
 | 
					 | 
				
			||||||
    mul r1.w, c0.x, c0.x
 | 
					 | 
				
			||||||
    cmp r0.xyz, -r1.w, r1, r2
 | 
					 | 
				
			||||||
    mul r0.xyz, r0, c0.y
 | 
					 | 
				
			||||||
    mov r0.w, c6.y
 | 
					 | 
				
			||||||
    mul r0, r0, t1
 | 
					 | 
				
			||||||
    mov oC0, r0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// approximately 40 instruction slots used (2 texture, 38 arithmetic)
 | 
					 | 
				
			||||||
ps_4_0
 | 
					 | 
				
			||||||
dcl_constantbuffer CB0[5], immediateIndexed
 | 
					 | 
				
			||||||
dcl_sampler s0, mode_default
 | 
					 | 
				
			||||||
dcl_resource_texture2d (float,float,float,float) t0
 | 
					 | 
				
			||||||
dcl_resource_texture2d (float,float,float,float) t1
 | 
					 | 
				
			||||||
dcl_input_ps linear v1.xy
 | 
					 | 
				
			||||||
dcl_input_ps linear v2.xyzw
 | 
					 | 
				
			||||||
dcl_output o0.xyzw
 | 
					 | 
				
			||||||
dcl_temps 4
 | 
					 | 
				
			||||||
sample r0.xyzw, v1.xyxx, t0.xyzw, s0
 | 
					 | 
				
			||||||
sample r1.xyzw, v1.xyxx, t1.zxyw, s0
 | 
					 | 
				
			||||||
mov r1.x, r0.x
 | 
					 | 
				
			||||||
add r0.xyz, r1.xyzx, cb0[1].xyzx
 | 
					 | 
				
			||||||
dp3 r1.x, r0.xyzx, cb0[2].xyzx
 | 
					 | 
				
			||||||
dp3 r1.y, r0.xyzx, cb0[3].xyzx
 | 
					 | 
				
			||||||
dp3 r1.z, r0.xyzx, cb0[4].xyzx
 | 
					 | 
				
			||||||
ne r0.x, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].x
 | 
					 | 
				
			||||||
if_nz r0.x
 | 
					 | 
				
			||||||
  ge r0.xyz, l(0.040450, 0.040450, 0.040450, 0.000000), r1.xyzx
 | 
					 | 
				
			||||||
  mul r2.xyz, r1.xyzx, l(0.077399, 0.077399, 0.077399, 0.000000)
 | 
					 | 
				
			||||||
  add r3.xyz, r1.xyzx, l(0.055000, 0.055000, 0.055000, 0.000000)
 | 
					 | 
				
			||||||
  mul r3.xyz, |r3.xyzx|, l(0.947867, 0.947867, 0.947867, 0.000000)
 | 
					 | 
				
			||||||
  log r3.xyz, r3.xyzx
 | 
					 | 
				
			||||||
  mul r3.xyz, r3.xyzx, l(2.400000, 2.400000, 2.400000, 0.000000)
 | 
					 | 
				
			||||||
  exp r3.xyz, r3.xyzx
 | 
					 | 
				
			||||||
  movc r1.xyz, r0.xyzx, r2.xyzx, r3.xyzx
 | 
					 | 
				
			||||||
endif 
 | 
					 | 
				
			||||||
mul r0.xyz, r1.xyzx, cb0[0].yyyy
 | 
					 | 
				
			||||||
mov r0.w, l(1.000000)
 | 
					 | 
				
			||||||
mul o0.xyzw, r0.xyzw, v2.xyzw
 | 
					 | 
				
			||||||
ret 
 | 
					 | 
				
			||||||
// Approximately 22 instruction slots used
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const BYTE g_main[] =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
     68,  88,  66,  67,  58,  20, 
 | 
					 | 
				
			||||||
    110,  34, 151,  86,  32,  17, 
 | 
					 | 
				
			||||||
    118,  15,  98,  32, 139, 247, 
 | 
					 | 
				
			||||||
    137, 113,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     88,   9,   0,   0,   6,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,   0, 
 | 
					 | 
				
			||||||
    248,   2,   0,   0, 244,   5, 
 | 
					 | 
				
			||||||
      0,   0, 112,   6,   0,   0, 
 | 
					 | 
				
			||||||
    176,   8,   0,   0,  36,   9, 
 | 
					 | 
				
			||||||
      0,   0,  65, 111, 110,  57, 
 | 
					 | 
				
			||||||
    184,   2,   0,   0, 184,   2, 
 | 
					 | 
				
			||||||
      0,   0,   0,   2, 255, 255, 
 | 
					 | 
				
			||||||
    128,   2,   0,   0,  56,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,  44,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,   0, 
 | 
					 | 
				
			||||||
     56,   0,   2,   0,  36,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   5,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   2, 255, 255,  81,   0, 
 | 
					 | 
				
			||||||
      0,   5,   5,   0,  15, 160, 
 | 
					 | 
				
			||||||
    230, 174,  37,  61, 145, 131, 
 | 
					 | 
				
			||||||
    158,  61, 174,  71,  97,  61, 
 | 
					 | 
				
			||||||
    111, 167, 114,  63,  81,   0, 
 | 
					 | 
				
			||||||
      0,   5,   6,   0,  15, 160, 
 | 
					 | 
				
			||||||
    154, 153,  25,  64,   0,   0, 
 | 
					 | 
				
			||||||
    128,  63,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  31,   0, 
 | 
					 | 
				
			||||||
      0,   2,   0,   0,   0, 128, 
 | 
					 | 
				
			||||||
      0,   0,   3, 176,  31,   0, 
 | 
					 | 
				
			||||||
      0,   2,   0,   0,   0, 128, 
 | 
					 | 
				
			||||||
      1,   0,  15, 176,  31,   0, 
 | 
					 | 
				
			||||||
      0,   2,   0,   0,   0, 144, 
 | 
					 | 
				
			||||||
      0,   8,  15, 160,  31,   0, 
 | 
					 | 
				
			||||||
      0,   2,   0,   0,   0, 144, 
 | 
					 | 
				
			||||||
      1,   8,  15, 160,  66,   0, 
 | 
					 | 
				
			||||||
      0,   3,   0,   0,  15, 128, 
 | 
					 | 
				
			||||||
      0,   0, 228, 176,   0,   8, 
 | 
					 | 
				
			||||||
    228, 160,  66,   0,   0,   3, 
 | 
					 | 
				
			||||||
      1,   0,  15, 128,   0,   0, 
 | 
					 | 
				
			||||||
    228, 176,   1,   8, 228, 160, 
 | 
					 | 
				
			||||||
      1,   0,   0,   2,   0,   0, 
 | 
					 | 
				
			||||||
      6, 128,   1,   0, 210, 128, 
 | 
					 | 
				
			||||||
      2,   0,   0,   3,   0,   0, 
 | 
					 | 
				
			||||||
      7, 128,   0,   0, 228, 128, 
 | 
					 | 
				
			||||||
      1,   0, 228, 160,   8,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   1, 128, 
 | 
					 | 
				
			||||||
      0,   0, 228, 128,   2,   0, 
 | 
					 | 
				
			||||||
    228, 160,   2,   0,   0,   3, 
 | 
					 | 
				
			||||||
      0,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
      0, 128,   5,   0, 170, 160, 
 | 
					 | 
				
			||||||
     35,   0,   0,   2,   0,   0, 
 | 
					 | 
				
			||||||
      8, 128,   0,   0, 255, 128, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   0,   0, 
 | 
					 | 
				
			||||||
      8, 128,   0,   0, 255, 128, 
 | 
					 | 
				
			||||||
      5,   0, 255, 160,  32,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   8, 128, 
 | 
					 | 
				
			||||||
      0,   0, 255, 128,   6,   0, 
 | 
					 | 
				
			||||||
      0, 160,   2,   0,   0,   3, 
 | 
					 | 
				
			||||||
      0,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
      0, 129,   5,   0,   0, 160, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   2,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0,   0, 128, 
 | 
					 | 
				
			||||||
      5,   0,  85, 160,  88,   0, 
 | 
					 | 
				
			||||||
      0,   4,   2,   0,   1, 128, 
 | 
					 | 
				
			||||||
      0,   0, 255, 128,   2,   0, 
 | 
					 | 
				
			||||||
    255, 128,   1,   0, 255, 128, 
 | 
					 | 
				
			||||||
      8,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      2, 128,   0,   0, 228, 128, 
 | 
					 | 
				
			||||||
      3,   0, 228, 160,   8,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   4, 128, 
 | 
					 | 
				
			||||||
      0,   0, 228, 128,   4,   0, 
 | 
					 | 
				
			||||||
    228, 160,   2,   0,   0,   3, 
 | 
					 | 
				
			||||||
      1,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
     85, 128,   5,   0, 170, 160, 
 | 
					 | 
				
			||||||
     35,   0,   0,   2,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0, 255, 128, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0, 255, 128, 
 | 
					 | 
				
			||||||
      5,   0, 255, 160,  32,   0, 
 | 
					 | 
				
			||||||
      0,   3,   2,   0,   8, 128, 
 | 
					 | 
				
			||||||
      1,   0, 255, 128,   6,   0, 
 | 
					 | 
				
			||||||
      0, 160,   2,   0,   0,   3, 
 | 
					 | 
				
			||||||
      1,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
     85, 129,   5,   0,   0, 160, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   0,   0, 
 | 
					 | 
				
			||||||
      1, 128,   1,   0,  85, 128, 
 | 
					 | 
				
			||||||
      5,   0,  85, 160,  88,   0, 
 | 
					 | 
				
			||||||
      0,   4,   2,   0,   2, 128, 
 | 
					 | 
				
			||||||
      1,   0, 255, 128,   0,   0, 
 | 
					 | 
				
			||||||
      0, 128,   2,   0, 255, 128, 
 | 
					 | 
				
			||||||
      2,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0, 170, 128, 
 | 
					 | 
				
			||||||
      5,   0, 170, 160,  35,   0, 
 | 
					 | 
				
			||||||
      0,   2,   1,   0,   8, 128, 
 | 
					 | 
				
			||||||
      1,   0, 255, 128,   5,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   8, 128, 
 | 
					 | 
				
			||||||
      1,   0, 255, 128,   5,   0, 
 | 
					 | 
				
			||||||
    255, 160,  32,   0,   0,   3, 
 | 
					 | 
				
			||||||
      2,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
    255, 128,   6,   0,   0, 160, 
 | 
					 | 
				
			||||||
      2,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0, 170, 129, 
 | 
					 | 
				
			||||||
      5,   0,   0, 160,   5,   0, 
 | 
					 | 
				
			||||||
      0,   3,   0,   0,   1, 128, 
 | 
					 | 
				
			||||||
      1,   0, 170, 128,   5,   0, 
 | 
					 | 
				
			||||||
     85, 160,  88,   0,   0,   4, 
 | 
					 | 
				
			||||||
      2,   0,   4, 128,   1,   0, 
 | 
					 | 
				
			||||||
    255, 128,   0,   0,   0, 128, 
 | 
					 | 
				
			||||||
      2,   0, 255, 128,   5,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   8, 128, 
 | 
					 | 
				
			||||||
      0,   0,   0, 160,   0,   0, 
 | 
					 | 
				
			||||||
      0, 160,  88,   0,   0,   4, 
 | 
					 | 
				
			||||||
      0,   0,   7, 128,   1,   0, 
 | 
					 | 
				
			||||||
    255, 129,   1,   0, 228, 128, 
 | 
					 | 
				
			||||||
      2,   0, 228, 128,   5,   0, 
 | 
					 | 
				
			||||||
      0,   3,   0,   0,   7, 128, 
 | 
					 | 
				
			||||||
      0,   0, 228, 128,   0,   0, 
 | 
					 | 
				
			||||||
     85, 160,   1,   0,   0,   2, 
 | 
					 | 
				
			||||||
      0,   0,   8, 128,   6,   0, 
 | 
					 | 
				
			||||||
     85, 160,   5,   0,   0,   3, 
 | 
					 | 
				
			||||||
      0,   0,  15, 128,   0,   0, 
 | 
					 | 
				
			||||||
    228, 128,   1,   0, 228, 176, 
 | 
					 | 
				
			||||||
      1,   0,   0,   2,   0,   8, 
 | 
					 | 
				
			||||||
     15, 128,   0,   0, 228, 128, 
 | 
					 | 
				
			||||||
    255, 255,   0,   0,  83,  72, 
 | 
					 | 
				
			||||||
     68,  82, 244,   2,   0,   0, 
 | 
					 | 
				
			||||||
     64,   0,   0,   0, 189,   0, 
 | 
					 | 
				
			||||||
      0,   0,  89,   0,   0,   4, 
 | 
					 | 
				
			||||||
     70, 142,  32,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   5,   0,   0,   0, 
 | 
					 | 
				
			||||||
     90,   0,   0,   3,   0,  96, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     88,  24,   0,   4,   0, 112, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     85,  85,   0,   0,  88,  24, 
 | 
					 | 
				
			||||||
      0,   4,   0, 112,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  85,  85, 
 | 
					 | 
				
			||||||
      0,   0,  98,  16,   0,   3, 
 | 
					 | 
				
			||||||
     50,  16,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  98,  16,   0,   3, 
 | 
					 | 
				
			||||||
    242,  16,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0, 101,   0,   0,   3, 
 | 
					 | 
				
			||||||
    242,  32,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 104,   0,   0,   2, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,  69,   0, 
 | 
					 | 
				
			||||||
      0,   9, 242,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,  16, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70, 126,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,  96,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  69,   0, 
 | 
					 | 
				
			||||||
      0,   9, 242,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  70,  16, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     38, 125,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,  96,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  54,   0, 
 | 
					 | 
				
			||||||
      0,   5,  18,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  10,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   8, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70, 130,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   8, 
 | 
					 | 
				
			||||||
     18,   0,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70, 130, 
 | 
					 | 
				
			||||||
     32,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   8,  34,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70, 130,  32,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   8,  66,   0, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70, 130,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   4,   0, 
 | 
					 | 
				
			||||||
      0,   0,  57,   0,   0,  11, 
 | 
					 | 
				
			||||||
     18,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,  64,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  10, 128, 
 | 
					 | 
				
			||||||
     32,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  31,   0, 
 | 
					 | 
				
			||||||
      4,   3,  10,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  29,   0, 
 | 
					 | 
				
			||||||
      0,  10, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 230, 174,  37,  61, 
 | 
					 | 
				
			||||||
    230, 174,  37,  61, 230, 174, 
 | 
					 | 
				
			||||||
     37,  61,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,  10, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 145, 131, 158,  61, 
 | 
					 | 
				
			||||||
    145, 131, 158,  61, 145, 131, 
 | 
					 | 
				
			||||||
    158,  61,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,  10, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,  64,   0,   0, 
 | 
					 | 
				
			||||||
    174,  71,  97,  61, 174,  71, 
 | 
					 | 
				
			||||||
     97,  61, 174,  71,  97,  61, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  56,   0, 
 | 
					 | 
				
			||||||
      0,  11, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16, 128, 129,   0,   0,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 111, 167, 114,  63, 
 | 
					 | 
				
			||||||
    111, 167, 114,  63, 111, 167, 
 | 
					 | 
				
			||||||
    114,  63,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     47,   0,   0,   5, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,  10, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 154, 153,  25,  64, 
 | 
					 | 
				
			||||||
    154, 153,  25,  64, 154, 153, 
 | 
					 | 
				
			||||||
     25,  64,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     25,   0,   0,   5, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  55,   0,   0,   9, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  21,   0,   0,   1, 
 | 
					 | 
				
			||||||
     56,   0,   0,   8, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  86, 133,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  54,   0,   0,   5, 
 | 
					 | 
				
			||||||
    130,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,  64,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 128,  63,  56,   0, 
 | 
					 | 
				
			||||||
      0,   7, 242,  32,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,  14, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,  30,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,  62,   0,   0,   1, 
 | 
					 | 
				
			||||||
     83,  84,  65,  84, 116,   0, 
 | 
					 | 
				
			||||||
      0,   0,  22,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     13,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  82,  68, 
 | 
					 | 
				
			||||||
     69,  70,  56,   2,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0, 204,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
     28,   0,   0,   0,   0,   4, 
 | 
					 | 
				
			||||||
    255, 255,   0,   1,   0,   0, 
 | 
					 | 
				
			||||||
     13,   2,   0,   0, 156,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
    167,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,   5,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0, 255, 255, 
 | 
					 | 
				
			||||||
    255, 255,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  13,   0, 
 | 
					 | 
				
			||||||
      0,   0, 179,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,   5,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
    255, 255, 255, 255,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     13,   0,   0,   0, 192,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
    116, 104, 101,  83,  97, 109, 
 | 
					 | 
				
			||||||
    112, 108, 101, 114,   0, 116, 
 | 
					 | 
				
			||||||
    104, 101,  84, 101, 120, 116, 
 | 
					 | 
				
			||||||
    117, 114, 101,  89,   0, 116, 
 | 
					 | 
				
			||||||
    104, 101,  84, 101, 120, 116, 
 | 
					 | 
				
			||||||
    117, 114, 101,  85,  86,   0, 
 | 
					 | 
				
			||||||
     67, 111, 110, 115, 116,  97, 
 | 
					 | 
				
			||||||
    110, 116, 115,   0, 171, 171, 
 | 
					 | 
				
			||||||
    192,   0,   0,   0,   8,   0, 
 | 
					 | 
				
			||||||
      0,   0, 228,   0,   0,   0, 
 | 
					 | 
				
			||||||
     80,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    164,   1,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 180,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    196,   1,   0,   0,   4,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 180,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    208,   1,   0,   0,   8,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 180,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    216,   1,   0,   0,  12,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 180,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    224,   1,   0,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 232,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    248,   1,   0,   0,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 232,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    255,   1,   0,   0,  48,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 232,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      6,   2,   0,   0,  64,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 232,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    115,  99,  82,  71,  66,  95, 
 | 
					 | 
				
			||||||
    111, 117, 116, 112, 117, 116, 
 | 
					 | 
				
			||||||
      0, 171, 171, 171,   0,   0, 
 | 
					 | 
				
			||||||
      3,   0,   1,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  99, 111, 108, 111, 
 | 
					 | 
				
			||||||
    114,  95, 115,  99,  97, 108, 
 | 
					 | 
				
			||||||
    101,   0, 117, 110, 117, 115, 
 | 
					 | 
				
			||||||
    101, 100,  49,   0, 117, 110, 
 | 
					 | 
				
			||||||
    117, 115, 101, 100,  50,   0, 
 | 
					 | 
				
			||||||
     89, 111, 102, 102, 115, 101, 
 | 
					 | 
				
			||||||
    116,   0,   1,   0,   3,   0, 
 | 
					 | 
				
			||||||
      1,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     82,  99, 111, 101, 102, 102, 
 | 
					 | 
				
			||||||
      0,  71,  99, 111, 101, 102, 
 | 
					 | 
				
			||||||
    102,   0,  66,  99, 111, 101, 
 | 
					 | 
				
			||||||
    102, 102,   0,  77, 105,  99, 
 | 
					 | 
				
			||||||
    114, 111, 115, 111, 102, 116, 
 | 
					 | 
				
			||||||
     32,  40,  82,  41,  32,  72, 
 | 
					 | 
				
			||||||
     76,  83,  76,  32,  83, 104, 
 | 
					 | 
				
			||||||
     97, 100, 101, 114,  32,  67, 
 | 
					 | 
				
			||||||
    111, 109, 112, 105, 108, 101, 
 | 
					 | 
				
			||||||
    114,  32,  49,  48,  46,  49, 
 | 
					 | 
				
			||||||
      0, 171, 171, 171,  73,  83, 
 | 
					 | 
				
			||||||
     71,  78, 108,   0,   0,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,   8,   0, 
 | 
					 | 
				
			||||||
      0,   0,  80,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  15,   0, 
 | 
					 | 
				
			||||||
      0,   0,  92,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   3,   3, 
 | 
					 | 
				
			||||||
      0,   0, 101,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,  15,  15, 
 | 
					 | 
				
			||||||
      0,   0,  83,  86,  95,  80, 
 | 
					 | 
				
			||||||
     79,  83,  73,  84,  73,  79, 
 | 
					 | 
				
			||||||
     78,   0,  84,  69,  88,  67, 
 | 
					 | 
				
			||||||
     79,  79,  82,  68,   0,  67, 
 | 
					 | 
				
			||||||
     79,  76,  79,  82,   0, 171, 
 | 
					 | 
				
			||||||
     79,  83,  71,  78,  44,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      8,   0,   0,   0,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     15,   0,   0,   0,  83,  86, 
 | 
					 | 
				
			||||||
     95,  84,  65,  82,  71,  69, 
 | 
					 | 
				
			||||||
     84,   0, 171, 171
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,20 +0,0 @@
 | 
				
			|||||||
Texture2D theTextureY : register(t0);
 | 
					 | 
				
			||||||
Texture2D theTextureUV : register(t1);
 | 
					 | 
				
			||||||
SamplerState theSampler : register(s0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "D3D11_PixelShader_Common.incl"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float4 main(PixelShaderInput input) : SV_TARGET
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    float3 yuv;
 | 
					 | 
				
			||||||
    yuv.x = theTextureY.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
    yuv.yz = theTextureUV.Sample(theSampler, input.tex).rg;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 rgb;
 | 
					 | 
				
			||||||
    yuv += Yoffset.xyz;
 | 
					 | 
				
			||||||
    rgb.r = dot(yuv, Rcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.g = dot(yuv, Gcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.b = dot(yuv, Bcoeff.xyz);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return GetOutputColorFromSRGB(rgb) * input.color;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,548 +0,0 @@
 | 
				
			|||||||
#if 0
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Buffer Definitions: 
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// cbuffer Constants
 | 
					 | 
				
			||||||
// {
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//   float scRGB_output;                // Offset:    0 Size:     4
 | 
					 | 
				
			||||||
//   float color_scale;                 // Offset:    4 Size:     4
 | 
					 | 
				
			||||||
//   float unused1;                     // Offset:    8 Size:     4 [unused]
 | 
					 | 
				
			||||||
//   float unused2;                     // Offset:   12 Size:     4 [unused]
 | 
					 | 
				
			||||||
//   float4 Yoffset;                    // Offset:   16 Size:    16
 | 
					 | 
				
			||||||
//   float4 Rcoeff;                     // Offset:   32 Size:    16
 | 
					 | 
				
			||||||
//   float4 Gcoeff;                     // Offset:   48 Size:    16
 | 
					 | 
				
			||||||
//   float4 Bcoeff;                     // Offset:   64 Size:    16
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Resource Bindings:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                                 Type  Format         Dim      HLSL Bind  Count
 | 
					 | 
				
			||||||
// ------------------------------ ---------- ------- ----------- -------------- ------
 | 
					 | 
				
			||||||
// theSampler                        sampler      NA          NA             s0      1 
 | 
					 | 
				
			||||||
// theTextureY                       texture  float4          2d             t0      1 
 | 
					 | 
				
			||||||
// theTextureUV                      texture  float4          2d             t1      1 
 | 
					 | 
				
			||||||
// Constants                         cbuffer      NA          NA            cb0      1 
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Input signature:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
// -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
// SV_POSITION              0   xyzw        0      POS   float       
 | 
					 | 
				
			||||||
// TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
					 | 
				
			||||||
// COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Output signature:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
// -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
// SV_TARGET                0   xyzw        0   TARGET   float   xyzw
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Constant buffer to DX9 shader constant mappings:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Target Reg Buffer  Start Reg # of Regs        Data Conversion
 | 
					 | 
				
			||||||
// ---------- ------- --------- --------- ----------------------
 | 
					 | 
				
			||||||
// c0         cb0             0         5  ( FLT, FLT, FLT, FLT)
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Sampler/Resource to DX9 shader sampler mappings:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Target Sampler Source Sampler  Source Resource
 | 
					 | 
				
			||||||
// -------------- --------------- ----------------
 | 
					 | 
				
			||||||
// s0             s0              t0               
 | 
					 | 
				
			||||||
// s1             s0              t1               
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Level9 shader bytecode:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
    ps_2_0
 | 
					 | 
				
			||||||
    def c5, 0.0404499993, 0.0773993805, 0.0549999997, 0.947867334
 | 
					 | 
				
			||||||
    def c6, 2.4000001, 1, 0, 0
 | 
					 | 
				
			||||||
    dcl t0.xy
 | 
					 | 
				
			||||||
    dcl t1
 | 
					 | 
				
			||||||
    dcl_2d s0
 | 
					 | 
				
			||||||
    dcl_2d s1
 | 
					 | 
				
			||||||
    texld r0, t0, s0
 | 
					 | 
				
			||||||
    texld r1, t0, s1
 | 
					 | 
				
			||||||
    mov r0.y, r1.y
 | 
					 | 
				
			||||||
    mov r0.z, r1.x
 | 
					 | 
				
			||||||
    add r0.xyz, r0, c1
 | 
					 | 
				
			||||||
    dp3 r1.x, r0, c2
 | 
					 | 
				
			||||||
    add r0.w, r1.x, c5.z
 | 
					 | 
				
			||||||
    abs r0.w, r0.w
 | 
					 | 
				
			||||||
    mul r0.w, r0.w, c5.w
 | 
					 | 
				
			||||||
    pow r1.w, r0.w, c6.x
 | 
					 | 
				
			||||||
    add r0.w, -r1.x, c5.x
 | 
					 | 
				
			||||||
    mul r2.w, r1.x, c5.y
 | 
					 | 
				
			||||||
    cmp r2.x, r0.w, r2.w, r1.w
 | 
					 | 
				
			||||||
    dp3 r1.y, r0, c3
 | 
					 | 
				
			||||||
    dp3 r1.z, r0, c4
 | 
					 | 
				
			||||||
    add r1.w, r1.y, c5.z
 | 
					 | 
				
			||||||
    abs r1.w, r1.w
 | 
					 | 
				
			||||||
    mul r1.w, r1.w, c5.w
 | 
					 | 
				
			||||||
    pow r2.w, r1.w, c6.x
 | 
					 | 
				
			||||||
    add r1.w, -r1.y, c5.x
 | 
					 | 
				
			||||||
    mul r0.x, r1.y, c5.y
 | 
					 | 
				
			||||||
    cmp r2.y, r1.w, r0.x, r2.w
 | 
					 | 
				
			||||||
    add r1.w, r1.z, c5.z
 | 
					 | 
				
			||||||
    abs r1.w, r1.w
 | 
					 | 
				
			||||||
    mul r1.w, r1.w, c5.w
 | 
					 | 
				
			||||||
    pow r2.w, r1.w, c6.x
 | 
					 | 
				
			||||||
    add r1.w, -r1.z, c5.x
 | 
					 | 
				
			||||||
    mul r0.x, r1.z, c5.y
 | 
					 | 
				
			||||||
    cmp r2.z, r1.w, r0.x, r2.w
 | 
					 | 
				
			||||||
    mul r1.w, c0.x, c0.x
 | 
					 | 
				
			||||||
    cmp r0.xyz, -r1.w, r1, r2
 | 
					 | 
				
			||||||
    mul r0.xyz, r0, c0.y
 | 
					 | 
				
			||||||
    mov r0.w, c6.y
 | 
					 | 
				
			||||||
    mul r0, r0, t1
 | 
					 | 
				
			||||||
    mov oC0, r0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// approximately 41 instruction slots used (2 texture, 39 arithmetic)
 | 
					 | 
				
			||||||
ps_4_0
 | 
					 | 
				
			||||||
dcl_constantbuffer CB0[5], immediateIndexed
 | 
					 | 
				
			||||||
dcl_sampler s0, mode_default
 | 
					 | 
				
			||||||
dcl_resource_texture2d (float,float,float,float) t0
 | 
					 | 
				
			||||||
dcl_resource_texture2d (float,float,float,float) t1
 | 
					 | 
				
			||||||
dcl_input_ps linear v1.xy
 | 
					 | 
				
			||||||
dcl_input_ps linear v2.xyzw
 | 
					 | 
				
			||||||
dcl_output o0.xyzw
 | 
					 | 
				
			||||||
dcl_temps 4
 | 
					 | 
				
			||||||
sample r0.xyzw, v1.xyxx, t0.xyzw, s0
 | 
					 | 
				
			||||||
sample r1.xyzw, v1.xyxx, t1.zyxw, s0
 | 
					 | 
				
			||||||
mov r1.x, r0.x
 | 
					 | 
				
			||||||
add r0.xyz, r1.xyzx, cb0[1].xyzx
 | 
					 | 
				
			||||||
dp3 r1.x, r0.xyzx, cb0[2].xyzx
 | 
					 | 
				
			||||||
dp3 r1.y, r0.xyzx, cb0[3].xyzx
 | 
					 | 
				
			||||||
dp3 r1.z, r0.xyzx, cb0[4].xyzx
 | 
					 | 
				
			||||||
ne r0.x, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].x
 | 
					 | 
				
			||||||
if_nz r0.x
 | 
					 | 
				
			||||||
  ge r0.xyz, l(0.040450, 0.040450, 0.040450, 0.000000), r1.xyzx
 | 
					 | 
				
			||||||
  mul r2.xyz, r1.xyzx, l(0.077399, 0.077399, 0.077399, 0.000000)
 | 
					 | 
				
			||||||
  add r3.xyz, r1.xyzx, l(0.055000, 0.055000, 0.055000, 0.000000)
 | 
					 | 
				
			||||||
  mul r3.xyz, |r3.xyzx|, l(0.947867, 0.947867, 0.947867, 0.000000)
 | 
					 | 
				
			||||||
  log r3.xyz, r3.xyzx
 | 
					 | 
				
			||||||
  mul r3.xyz, r3.xyzx, l(2.400000, 2.400000, 2.400000, 0.000000)
 | 
					 | 
				
			||||||
  exp r3.xyz, r3.xyzx
 | 
					 | 
				
			||||||
  movc r1.xyz, r0.xyzx, r2.xyzx, r3.xyzx
 | 
					 | 
				
			||||||
endif 
 | 
					 | 
				
			||||||
mul r0.xyz, r1.xyzx, cb0[0].yyyy
 | 
					 | 
				
			||||||
mov r0.w, l(1.000000)
 | 
					 | 
				
			||||||
mul o0.xyzw, r0.xyzw, v2.xyzw
 | 
					 | 
				
			||||||
ret 
 | 
					 | 
				
			||||||
// Approximately 22 instruction slots used
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const BYTE g_main[] =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
     68,  88,  66,  67, 150, 187, 
 | 
					 | 
				
			||||||
    194, 202,  50, 132, 111, 243, 
 | 
					 | 
				
			||||||
     88, 169, 196, 166, 186, 146, 
 | 
					 | 
				
			||||||
     56,  89,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
    100,   9,   0,   0,   6,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   3,   0,   0,   0,   6, 
 | 
					 | 
				
			||||||
      0,   0, 124,   6,   0,   0, 
 | 
					 | 
				
			||||||
    188,   8,   0,   0,  48,   9, 
 | 
					 | 
				
			||||||
      0,   0,  65, 111, 110,  57, 
 | 
					 | 
				
			||||||
    196,   2,   0,   0, 196,   2, 
 | 
					 | 
				
			||||||
      0,   0,   0,   2, 255, 255, 
 | 
					 | 
				
			||||||
    140,   2,   0,   0,  56,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,  44,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,   0, 
 | 
					 | 
				
			||||||
     56,   0,   2,   0,  36,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   5,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   2, 255, 255,  81,   0, 
 | 
					 | 
				
			||||||
      0,   5,   5,   0,  15, 160, 
 | 
					 | 
				
			||||||
    230, 174,  37,  61, 145, 131, 
 | 
					 | 
				
			||||||
    158,  61, 174,  71,  97,  61, 
 | 
					 | 
				
			||||||
    111, 167, 114,  63,  81,   0, 
 | 
					 | 
				
			||||||
      0,   5,   6,   0,  15, 160, 
 | 
					 | 
				
			||||||
    154, 153,  25,  64,   0,   0, 
 | 
					 | 
				
			||||||
    128,  63,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  31,   0, 
 | 
					 | 
				
			||||||
      0,   2,   0,   0,   0, 128, 
 | 
					 | 
				
			||||||
      0,   0,   3, 176,  31,   0, 
 | 
					 | 
				
			||||||
      0,   2,   0,   0,   0, 128, 
 | 
					 | 
				
			||||||
      1,   0,  15, 176,  31,   0, 
 | 
					 | 
				
			||||||
      0,   2,   0,   0,   0, 144, 
 | 
					 | 
				
			||||||
      0,   8,  15, 160,  31,   0, 
 | 
					 | 
				
			||||||
      0,   2,   0,   0,   0, 144, 
 | 
					 | 
				
			||||||
      1,   8,  15, 160,  66,   0, 
 | 
					 | 
				
			||||||
      0,   3,   0,   0,  15, 128, 
 | 
					 | 
				
			||||||
      0,   0, 228, 176,   0,   8, 
 | 
					 | 
				
			||||||
    228, 160,  66,   0,   0,   3, 
 | 
					 | 
				
			||||||
      1,   0,  15, 128,   0,   0, 
 | 
					 | 
				
			||||||
    228, 176,   1,   8, 228, 160, 
 | 
					 | 
				
			||||||
      1,   0,   0,   2,   0,   0, 
 | 
					 | 
				
			||||||
      2, 128,   1,   0,  85, 128, 
 | 
					 | 
				
			||||||
      1,   0,   0,   2,   0,   0, 
 | 
					 | 
				
			||||||
      4, 128,   1,   0,   0, 128, 
 | 
					 | 
				
			||||||
      2,   0,   0,   3,   0,   0, 
 | 
					 | 
				
			||||||
      7, 128,   0,   0, 228, 128, 
 | 
					 | 
				
			||||||
      1,   0, 228, 160,   8,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   1, 128, 
 | 
					 | 
				
			||||||
      0,   0, 228, 128,   2,   0, 
 | 
					 | 
				
			||||||
    228, 160,   2,   0,   0,   3, 
 | 
					 | 
				
			||||||
      0,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
      0, 128,   5,   0, 170, 160, 
 | 
					 | 
				
			||||||
     35,   0,   0,   2,   0,   0, 
 | 
					 | 
				
			||||||
      8, 128,   0,   0, 255, 128, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   0,   0, 
 | 
					 | 
				
			||||||
      8, 128,   0,   0, 255, 128, 
 | 
					 | 
				
			||||||
      5,   0, 255, 160,  32,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   8, 128, 
 | 
					 | 
				
			||||||
      0,   0, 255, 128,   6,   0, 
 | 
					 | 
				
			||||||
      0, 160,   2,   0,   0,   3, 
 | 
					 | 
				
			||||||
      0,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
      0, 129,   5,   0,   0, 160, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   2,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0,   0, 128, 
 | 
					 | 
				
			||||||
      5,   0,  85, 160,  88,   0, 
 | 
					 | 
				
			||||||
      0,   4,   2,   0,   1, 128, 
 | 
					 | 
				
			||||||
      0,   0, 255, 128,   2,   0, 
 | 
					 | 
				
			||||||
    255, 128,   1,   0, 255, 128, 
 | 
					 | 
				
			||||||
      8,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      2, 128,   0,   0, 228, 128, 
 | 
					 | 
				
			||||||
      3,   0, 228, 160,   8,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   4, 128, 
 | 
					 | 
				
			||||||
      0,   0, 228, 128,   4,   0, 
 | 
					 | 
				
			||||||
    228, 160,   2,   0,   0,   3, 
 | 
					 | 
				
			||||||
      1,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
     85, 128,   5,   0, 170, 160, 
 | 
					 | 
				
			||||||
     35,   0,   0,   2,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0, 255, 128, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0, 255, 128, 
 | 
					 | 
				
			||||||
      5,   0, 255, 160,  32,   0, 
 | 
					 | 
				
			||||||
      0,   3,   2,   0,   8, 128, 
 | 
					 | 
				
			||||||
      1,   0, 255, 128,   6,   0, 
 | 
					 | 
				
			||||||
      0, 160,   2,   0,   0,   3, 
 | 
					 | 
				
			||||||
      1,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
     85, 129,   5,   0,   0, 160, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   0,   0, 
 | 
					 | 
				
			||||||
      1, 128,   1,   0,  85, 128, 
 | 
					 | 
				
			||||||
      5,   0,  85, 160,  88,   0, 
 | 
					 | 
				
			||||||
      0,   4,   2,   0,   2, 128, 
 | 
					 | 
				
			||||||
      1,   0, 255, 128,   0,   0, 
 | 
					 | 
				
			||||||
      0, 128,   2,   0, 255, 128, 
 | 
					 | 
				
			||||||
      2,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0, 170, 128, 
 | 
					 | 
				
			||||||
      5,   0, 170, 160,  35,   0, 
 | 
					 | 
				
			||||||
      0,   2,   1,   0,   8, 128, 
 | 
					 | 
				
			||||||
      1,   0, 255, 128,   5,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   8, 128, 
 | 
					 | 
				
			||||||
      1,   0, 255, 128,   5,   0, 
 | 
					 | 
				
			||||||
    255, 160,  32,   0,   0,   3, 
 | 
					 | 
				
			||||||
      2,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
    255, 128,   6,   0,   0, 160, 
 | 
					 | 
				
			||||||
      2,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0, 170, 129, 
 | 
					 | 
				
			||||||
      5,   0,   0, 160,   5,   0, 
 | 
					 | 
				
			||||||
      0,   3,   0,   0,   1, 128, 
 | 
					 | 
				
			||||||
      1,   0, 170, 128,   5,   0, 
 | 
					 | 
				
			||||||
     85, 160,  88,   0,   0,   4, 
 | 
					 | 
				
			||||||
      2,   0,   4, 128,   1,   0, 
 | 
					 | 
				
			||||||
    255, 128,   0,   0,   0, 128, 
 | 
					 | 
				
			||||||
      2,   0, 255, 128,   5,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   8, 128, 
 | 
					 | 
				
			||||||
      0,   0,   0, 160,   0,   0, 
 | 
					 | 
				
			||||||
      0, 160,  88,   0,   0,   4, 
 | 
					 | 
				
			||||||
      0,   0,   7, 128,   1,   0, 
 | 
					 | 
				
			||||||
    255, 129,   1,   0, 228, 128, 
 | 
					 | 
				
			||||||
      2,   0, 228, 128,   5,   0, 
 | 
					 | 
				
			||||||
      0,   3,   0,   0,   7, 128, 
 | 
					 | 
				
			||||||
      0,   0, 228, 128,   0,   0, 
 | 
					 | 
				
			||||||
     85, 160,   1,   0,   0,   2, 
 | 
					 | 
				
			||||||
      0,   0,   8, 128,   6,   0, 
 | 
					 | 
				
			||||||
     85, 160,   5,   0,   0,   3, 
 | 
					 | 
				
			||||||
      0,   0,  15, 128,   0,   0, 
 | 
					 | 
				
			||||||
    228, 128,   1,   0, 228, 176, 
 | 
					 | 
				
			||||||
      1,   0,   0,   2,   0,   8, 
 | 
					 | 
				
			||||||
     15, 128,   0,   0, 228, 128, 
 | 
					 | 
				
			||||||
    255, 255,   0,   0,  83,  72, 
 | 
					 | 
				
			||||||
     68,  82, 244,   2,   0,   0, 
 | 
					 | 
				
			||||||
     64,   0,   0,   0, 189,   0, 
 | 
					 | 
				
			||||||
      0,   0,  89,   0,   0,   4, 
 | 
					 | 
				
			||||||
     70, 142,  32,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   5,   0,   0,   0, 
 | 
					 | 
				
			||||||
     90,   0,   0,   3,   0,  96, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     88,  24,   0,   4,   0, 112, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     85,  85,   0,   0,  88,  24, 
 | 
					 | 
				
			||||||
      0,   4,   0, 112,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  85,  85, 
 | 
					 | 
				
			||||||
      0,   0,  98,  16,   0,   3, 
 | 
					 | 
				
			||||||
     50,  16,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  98,  16,   0,   3, 
 | 
					 | 
				
			||||||
    242,  16,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0, 101,   0,   0,   3, 
 | 
					 | 
				
			||||||
    242,  32,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 104,   0,   0,   2, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,  69,   0, 
 | 
					 | 
				
			||||||
      0,   9, 242,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,  16, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70, 126,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,  96,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  69,   0, 
 | 
					 | 
				
			||||||
      0,   9, 242,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  70,  16, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
    102, 124,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,  96,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  54,   0, 
 | 
					 | 
				
			||||||
      0,   5,  18,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  10,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   8, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70, 130,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   8, 
 | 
					 | 
				
			||||||
     18,   0,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70, 130, 
 | 
					 | 
				
			||||||
     32,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   8,  34,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70, 130,  32,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   8,  66,   0, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70, 130,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   4,   0, 
 | 
					 | 
				
			||||||
      0,   0,  57,   0,   0,  11, 
 | 
					 | 
				
			||||||
     18,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,  64,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  10, 128, 
 | 
					 | 
				
			||||||
     32,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  31,   0, 
 | 
					 | 
				
			||||||
      4,   3,  10,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  29,   0, 
 | 
					 | 
				
			||||||
      0,  10, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 230, 174,  37,  61, 
 | 
					 | 
				
			||||||
    230, 174,  37,  61, 230, 174, 
 | 
					 | 
				
			||||||
     37,  61,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,  10, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 145, 131, 158,  61, 
 | 
					 | 
				
			||||||
    145, 131, 158,  61, 145, 131, 
 | 
					 | 
				
			||||||
    158,  61,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,  10, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,  64,   0,   0, 
 | 
					 | 
				
			||||||
    174,  71,  97,  61, 174,  71, 
 | 
					 | 
				
			||||||
     97,  61, 174,  71,  97,  61, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  56,   0, 
 | 
					 | 
				
			||||||
      0,  11, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16, 128, 129,   0,   0,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 111, 167, 114,  63, 
 | 
					 | 
				
			||||||
    111, 167, 114,  63, 111, 167, 
 | 
					 | 
				
			||||||
    114,  63,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     47,   0,   0,   5, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,  10, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 154, 153,  25,  64, 
 | 
					 | 
				
			||||||
    154, 153,  25,  64, 154, 153, 
 | 
					 | 
				
			||||||
     25,  64,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     25,   0,   0,   5, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  55,   0,   0,   9, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  21,   0,   0,   1, 
 | 
					 | 
				
			||||||
     56,   0,   0,   8, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  86, 133,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  54,   0,   0,   5, 
 | 
					 | 
				
			||||||
    130,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,  64,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 128,  63,  56,   0, 
 | 
					 | 
				
			||||||
      0,   7, 242,  32,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,  14, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,  30,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,  62,   0,   0,   1, 
 | 
					 | 
				
			||||||
     83,  84,  65,  84, 116,   0, 
 | 
					 | 
				
			||||||
      0,   0,  22,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     13,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  82,  68, 
 | 
					 | 
				
			||||||
     69,  70,  56,   2,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0, 204,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
     28,   0,   0,   0,   0,   4, 
 | 
					 | 
				
			||||||
    255, 255,   0,   1,   0,   0, 
 | 
					 | 
				
			||||||
     13,   2,   0,   0, 156,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
    167,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,   5,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0, 255, 255, 
 | 
					 | 
				
			||||||
    255, 255,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  13,   0, 
 | 
					 | 
				
			||||||
      0,   0, 179,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,   5,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
    255, 255, 255, 255,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     13,   0,   0,   0, 192,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
    116, 104, 101,  83,  97, 109, 
 | 
					 | 
				
			||||||
    112, 108, 101, 114,   0, 116, 
 | 
					 | 
				
			||||||
    104, 101,  84, 101, 120, 116, 
 | 
					 | 
				
			||||||
    117, 114, 101,  89,   0, 116, 
 | 
					 | 
				
			||||||
    104, 101,  84, 101, 120, 116, 
 | 
					 | 
				
			||||||
    117, 114, 101,  85,  86,   0, 
 | 
					 | 
				
			||||||
     67, 111, 110, 115, 116,  97, 
 | 
					 | 
				
			||||||
    110, 116, 115,   0, 171, 171, 
 | 
					 | 
				
			||||||
    192,   0,   0,   0,   8,   0, 
 | 
					 | 
				
			||||||
      0,   0, 228,   0,   0,   0, 
 | 
					 | 
				
			||||||
     80,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    164,   1,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 180,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    196,   1,   0,   0,   4,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 180,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    208,   1,   0,   0,   8,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 180,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    216,   1,   0,   0,  12,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 180,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    224,   1,   0,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 232,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    248,   1,   0,   0,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 232,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    255,   1,   0,   0,  48,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 232,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      6,   2,   0,   0,  64,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0, 232,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
    115,  99,  82,  71,  66,  95, 
 | 
					 | 
				
			||||||
    111, 117, 116, 112, 117, 116, 
 | 
					 | 
				
			||||||
      0, 171, 171, 171,   0,   0, 
 | 
					 | 
				
			||||||
      3,   0,   1,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  99, 111, 108, 111, 
 | 
					 | 
				
			||||||
    114,  95, 115,  99,  97, 108, 
 | 
					 | 
				
			||||||
    101,   0, 117, 110, 117, 115, 
 | 
					 | 
				
			||||||
    101, 100,  49,   0, 117, 110, 
 | 
					 | 
				
			||||||
    117, 115, 101, 100,  50,   0, 
 | 
					 | 
				
			||||||
     89, 111, 102, 102, 115, 101, 
 | 
					 | 
				
			||||||
    116,   0,   1,   0,   3,   0, 
 | 
					 | 
				
			||||||
      1,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     82,  99, 111, 101, 102, 102, 
 | 
					 | 
				
			||||||
      0,  71,  99, 111, 101, 102, 
 | 
					 | 
				
			||||||
    102,   0,  66,  99, 111, 101, 
 | 
					 | 
				
			||||||
    102, 102,   0,  77, 105,  99, 
 | 
					 | 
				
			||||||
    114, 111, 115, 111, 102, 116, 
 | 
					 | 
				
			||||||
     32,  40,  82,  41,  32,  72, 
 | 
					 | 
				
			||||||
     76,  83,  76,  32,  83, 104, 
 | 
					 | 
				
			||||||
     97, 100, 101, 114,  32,  67, 
 | 
					 | 
				
			||||||
    111, 109, 112, 105, 108, 101, 
 | 
					 | 
				
			||||||
    114,  32,  49,  48,  46,  49, 
 | 
					 | 
				
			||||||
      0, 171, 171, 171,  73,  83, 
 | 
					 | 
				
			||||||
     71,  78, 108,   0,   0,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,   8,   0, 
 | 
					 | 
				
			||||||
      0,   0,  80,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  15,   0, 
 | 
					 | 
				
			||||||
      0,   0,  92,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   3,   3, 
 | 
					 | 
				
			||||||
      0,   0, 101,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,  15,  15, 
 | 
					 | 
				
			||||||
      0,   0,  83,  86,  95,  80, 
 | 
					 | 
				
			||||||
     79,  83,  73,  84,  73,  79, 
 | 
					 | 
				
			||||||
     78,   0,  84,  69,  88,  67, 
 | 
					 | 
				
			||||||
     79,  79,  82,  68,   0,  67, 
 | 
					 | 
				
			||||||
     79,  76,  79,  82,   0, 171, 
 | 
					 | 
				
			||||||
     79,  83,  71,  78,  44,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      8,   0,   0,   0,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     15,   0,   0,   0,  83,  86, 
 | 
					 | 
				
			||||||
     95,  84,  65,  82,  71,  69, 
 | 
					 | 
				
			||||||
     84,   0, 171, 171
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,20 +0,0 @@
 | 
				
			|||||||
Texture2D theTextureY : register(t0);
 | 
					 | 
				
			||||||
Texture2D theTextureUV : register(t1);
 | 
					 | 
				
			||||||
SamplerState theSampler : register(s0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "D3D11_PixelShader_Common.incl"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float4 main(PixelShaderInput input) : SV_TARGET
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    float3 yuv;
 | 
					 | 
				
			||||||
    yuv.x = theTextureY.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
    yuv.yz = theTextureUV.Sample(theSampler, input.tex).gr;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 rgb;
 | 
					 | 
				
			||||||
    yuv += Yoffset.xyz;
 | 
					 | 
				
			||||||
    rgb.r = dot(yuv, Rcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.g = dot(yuv, Gcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.b = dot(yuv, Bcoeff.xyz);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return GetOutputColorFromSRGB(rgb) * input.color;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -9,13 +9,17 @@
 | 
				
			|||||||
// {
 | 
					// {
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
//   float scRGB_output;                // Offset:    0 Size:     4 [unused]
 | 
					//   float scRGB_output;                // Offset:    0 Size:     4 [unused]
 | 
				
			||||||
//   float color_scale;                 // Offset:    4 Size:     4
 | 
					//   float texture_type;                // Offset:    4 Size:     4 [unused]
 | 
				
			||||||
//   float unused1;                     // Offset:    8 Size:     4 [unused]
 | 
					//   float input_type;                  // Offset:    8 Size:     4 [unused]
 | 
				
			||||||
//   float unused2;                     // Offset:   12 Size:     4 [unused]
 | 
					//   float color_scale;                 // Offset:   12 Size:     4
 | 
				
			||||||
//   float4 Yoffset;                    // Offset:   16 Size:    16 [unused]
 | 
					//   float tonemap_method;              // Offset:   16 Size:     4 [unused]
 | 
				
			||||||
//   float4 Rcoeff;                     // Offset:   32 Size:    16 [unused]
 | 
					//   float tonemap_factor1;             // Offset:   20 Size:     4 [unused]
 | 
				
			||||||
//   float4 Gcoeff;                     // Offset:   48 Size:    16 [unused]
 | 
					//   float tonemap_factor2;             // Offset:   24 Size:     4 [unused]
 | 
				
			||||||
//   float4 Bcoeff;                     // Offset:   64 Size:    16 [unused]
 | 
					//   float sdr_white_point;             // Offset:   28 Size:     4 [unused]
 | 
				
			||||||
 | 
					//   float4 Yoffset;                    // Offset:   32 Size:    16 [unused]
 | 
				
			||||||
 | 
					//   float4 Rcoeff;                     // Offset:   48 Size:    16 [unused]
 | 
				
			||||||
 | 
					//   float4 Gcoeff;                     // Offset:   64 Size:    16 [unused]
 | 
				
			||||||
 | 
					//   float4 Bcoeff;                     // Offset:   80 Size:    16 [unused]
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
// }
 | 
					// }
 | 
				
			||||||
//
 | 
					//
 | 
				
			||||||
@@ -67,7 +71,7 @@
 | 
				
			|||||||
    dcl t1
 | 
					    dcl t1
 | 
				
			||||||
    dcl_2d s0
 | 
					    dcl_2d s0
 | 
				
			||||||
    texld r0, t0, s0
 | 
					    texld r0, t0, s0
 | 
				
			||||||
    mul r0.xyz, r0, c0.y
 | 
					    mul r0.xyz, r0, c0.w
 | 
				
			||||||
    mul r0, r0, t1
 | 
					    mul r0, r0, t1
 | 
				
			||||||
    mov oC0, r0
 | 
					    mov oC0, r0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -81,7 +85,7 @@ dcl_input_ps linear v2.xyzw
 | 
				
			|||||||
dcl_output o0.xyzw
 | 
					dcl_output o0.xyzw
 | 
				
			||||||
dcl_temps 1
 | 
					dcl_temps 1
 | 
				
			||||||
sample r0.xyzw, v1.xyxx, t0.xyzw, s0
 | 
					sample r0.xyzw, v1.xyxx, t0.xyzw, s0
 | 
				
			||||||
mul r0.xyz, r0.xyzx, cb0[0].yyyy
 | 
					mul r0.xyz, r0.xyzx, cb0[0].wwww
 | 
				
			||||||
mul o0.xyzw, r0.xyzw, v2.xyzw
 | 
					mul o0.xyzw, r0.xyzw, v2.xyzw
 | 
				
			||||||
ret 
 | 
					ret 
 | 
				
			||||||
// Approximately 4 instruction slots used
 | 
					// Approximately 4 instruction slots used
 | 
				
			||||||
@@ -89,15 +93,15 @@ ret
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
const BYTE g_main[] =
 | 
					const BYTE g_main[] =
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
     68,  88,  66,  67, 159, 171, 
 | 
					     68,  88,  66,  67,   8, 152, 
 | 
				
			||||||
     49, 134, 139, 171, 105,  34, 
 | 
					    224, 210, 182, 254,  37,  89, 
 | 
				
			||||||
    166,   1, 101, 132, 110,   4, 
 | 
					     68, 213,  13, 174,  95,  42, 
 | 
				
			||||||
    121,  76,   1,   0,   0,   0, 
 | 
					      2,  11,   1,   0,   0,   0, 
 | 
				
			||||||
    220,   4,   0,   0,   6,   0, 
 | 
					    132,   5,   0,   0,   6,   0, 
 | 
				
			||||||
      0,   0,  56,   0,   0,   0, 
 | 
					      0,   0,  56,   0,   0,   0, 
 | 
				
			||||||
    220,   0,   0,   0, 168,   1, 
 | 
					    220,   0,   0,   0, 168,   1, 
 | 
				
			||||||
      0,   0,  36,   2,   0,   0, 
 | 
					      0,   0,  36,   2,   0,   0, 
 | 
				
			||||||
     52,   4,   0,   0, 168,   4, 
 | 
					    220,   4,   0,   0,  80,   5, 
 | 
				
			||||||
      0,   0,  65, 111, 110,  57, 
 | 
					      0,   0,  65, 111, 110,  57, 
 | 
				
			||||||
    156,   0,   0,   0, 156,   0, 
 | 
					    156,   0,   0,   0, 156,   0, 
 | 
				
			||||||
      0,   0,   0,   2, 255, 255, 
 | 
					      0,   0,   0,   2, 255, 255, 
 | 
				
			||||||
@@ -120,7 +124,7 @@ const BYTE g_main[] =
 | 
				
			|||||||
      0,   8, 228, 160,   5,   0, 
 | 
					      0,   8, 228, 160,   5,   0, 
 | 
				
			||||||
      0,   3,   0,   0,   7, 128, 
 | 
					      0,   3,   0,   0,   7, 128, 
 | 
				
			||||||
      0,   0, 228, 128,   0,   0, 
 | 
					      0,   0, 228, 128,   0,   0, 
 | 
				
			||||||
     85, 160,   5,   0,   0,   3, 
 | 
					    255, 160,   5,   0,   0,   3, 
 | 
				
			||||||
      0,   0,  15, 128,   0,   0, 
 | 
					      0,   0,  15, 128,   0,   0, 
 | 
				
			||||||
    228, 128,   1,   0, 228, 176, 
 | 
					    228, 128,   1,   0, 228, 176, 
 | 
				
			||||||
      1,   0,   0,   2,   0,   8, 
 | 
					      1,   0,   0,   2,   0,   8, 
 | 
				
			||||||
@@ -152,7 +156,7 @@ const BYTE g_main[] =
 | 
				
			|||||||
     56,   0,   0,   8, 114,   0, 
 | 
					     56,   0,   0,   8, 114,   0, 
 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					     16,   0,   0,   0,   0,   0, 
 | 
				
			||||||
     70,   2,  16,   0,   0,   0, 
 | 
					     70,   2,  16,   0,   0,   0, 
 | 
				
			||||||
      0,   0,  86, 133,  32,   0, 
 | 
					      0,   0, 246, 143,  32,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,  56,   0,   0,   7, 
 | 
					      0,   0,  56,   0,   0,   7, 
 | 
				
			||||||
    242,  32,  16,   0,   0,   0, 
 | 
					    242,  32,  16,   0,   0,   0, 
 | 
				
			||||||
@@ -181,11 +185,11 @@ const BYTE g_main[] =
 | 
				
			|||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,  82,  68,  69,  70, 
 | 
					      0,   0,  82,  68,  69,  70, 
 | 
				
			||||||
      8,   2,   0,   0,   1,   0, 
 | 
					    176,   2,   0,   0,   1,   0, 
 | 
				
			||||||
      0,   0, 156,   0,   0,   0, 
 | 
					      0,   0, 156,   0,   0,   0, 
 | 
				
			||||||
      3,   0,   0,   0,  28,   0, 
 | 
					      3,   0,   0,   0,  28,   0, 
 | 
				
			||||||
      0,   0,   0,   4, 255, 255, 
 | 
					      0,   0,   0,   4, 255, 255, 
 | 
				
			||||||
      0,   1,   0,   0, 221,   1, 
 | 
					      0,   1,   0,   0, 133,   2, 
 | 
				
			||||||
      0,   0, 124,   0,   0,   0, 
 | 
					      0,   0, 124,   0,   0,   0, 
 | 
				
			||||||
      3,   0,   0,   0,   0,   0, 
 | 
					      3,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
@@ -208,53 +212,81 @@ const BYTE g_main[] =
 | 
				
			|||||||
    120, 116, 117, 114, 101,   0, 
 | 
					    120, 116, 117, 114, 101,   0, 
 | 
				
			||||||
     67, 111, 110, 115, 116,  97, 
 | 
					     67, 111, 110, 115, 116,  97, 
 | 
				
			||||||
    110, 116, 115,   0, 146,   0, 
 | 
					    110, 116, 115,   0, 146,   0, 
 | 
				
			||||||
      0,   0,   8,   0,   0,   0, 
 | 
					 | 
				
			||||||
    180,   0,   0,   0,  80,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 116,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 132,   1,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 148,   1, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0, 132,   1,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 160,   1, 
 | 
					 | 
				
			||||||
      0,   0,   8,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 132,   1,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 168,   1, 
 | 
					 | 
				
			||||||
      0,   0,  12,   0,   0,   0, 
 | 
					      0,   0,  12,   0,   0,   0, 
 | 
				
			||||||
 | 
					    180,   0,   0,   0,  96,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0, 212,   1, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      4,   0,   0,   0,   0,   0, 
 | 
					      4,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0, 132,   1,   0,   0, 
 | 
					      0,   0, 228,   1,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0, 176,   1, 
 | 
					      0,   0,   0,   0, 244,   1, 
 | 
				
			||||||
 | 
					      0,   0,   4,   0,   0,   0, 
 | 
				
			||||||
 | 
					      4,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0, 228,   1,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,   1,   2, 
 | 
				
			||||||
 | 
					      0,   0,   8,   0,   0,   0, 
 | 
				
			||||||
 | 
					      4,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0, 228,   1,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,  12,   2, 
 | 
				
			||||||
 | 
					      0,   0,  12,   0,   0,   0, 
 | 
				
			||||||
 | 
					      4,   0,   0,   0,   2,   0, 
 | 
				
			||||||
 | 
					      0,   0, 228,   1,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,  24,   2, 
 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					      0,   0,  16,   0,   0,   0, 
 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					      4,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0, 184,   1,   0,   0, 
 | 
					      0,   0, 228,   1,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0, 200,   1, 
 | 
					      0,   0,   0,   0,  39,   2, 
 | 
				
			||||||
 | 
					      0,   0,  20,   0,   0,   0, 
 | 
				
			||||||
 | 
					      4,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0, 228,   1,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,  55,   2, 
 | 
				
			||||||
 | 
					      0,   0,  24,   0,   0,   0, 
 | 
				
			||||||
 | 
					      4,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0, 228,   1,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,  71,   2, 
 | 
				
			||||||
 | 
					      0,   0,  28,   0,   0,   0, 
 | 
				
			||||||
 | 
					      4,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0, 228,   1,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0,  87,   2, 
 | 
				
			||||||
      0,   0,  32,   0,   0,   0, 
 | 
					      0,   0,  32,   0,   0,   0, 
 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					     16,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0, 184,   1,   0,   0, 
 | 
					      0,   0,  96,   2,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0, 207,   1, 
 | 
					      0,   0,   0,   0, 112,   2, 
 | 
				
			||||||
      0,   0,  48,   0,   0,   0, 
 | 
					      0,   0,  48,   0,   0,   0, 
 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					     16,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0, 184,   1,   0,   0, 
 | 
					      0,   0,  96,   2,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0, 214,   1, 
 | 
					      0,   0,   0,   0, 119,   2, 
 | 
				
			||||||
      0,   0,  64,   0,   0,   0, 
 | 
					      0,   0,  64,   0,   0,   0, 
 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					     16,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0, 184,   1,   0,   0, 
 | 
					      0,   0,  96,   2,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,   0,   0, 126,   2, 
 | 
				
			||||||
 | 
					      0,   0,  80,   0,   0,   0, 
 | 
				
			||||||
 | 
					     16,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					      0,   0,  96,   2,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0, 115,  99, 
 | 
					      0,   0,   0,   0, 115,  99, 
 | 
				
			||||||
     82,  71,  66,  95, 111, 117, 
 | 
					     82,  71,  66,  95, 111, 117, 
 | 
				
			||||||
    116, 112, 117, 116,   0, 171, 
 | 
					    116, 112, 117, 116,   0, 171, 
 | 
				
			||||||
    171, 171,   0,   0,   3,   0, 
 | 
					    171, 171,   0,   0,   3,   0, 
 | 
				
			||||||
      1,   0,   1,   0,   0,   0, 
 | 
					      1,   0,   1,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					      0,   0,   0,   0,   0,   0, 
 | 
				
			||||||
 | 
					    116, 101, 120, 116, 117, 114, 
 | 
				
			||||||
 | 
					    101,  95, 116, 121, 112, 101, 
 | 
				
			||||||
 | 
					      0, 105, 110, 112, 117, 116, 
 | 
				
			||||||
 | 
					     95, 116, 121, 112, 101,   0, 
 | 
				
			||||||
     99, 111, 108, 111, 114,  95, 
 | 
					     99, 111, 108, 111, 114,  95, 
 | 
				
			||||||
    115,  99,  97, 108, 101,   0, 
 | 
					    115,  99,  97, 108, 101,   0, 
 | 
				
			||||||
    117, 110, 117, 115, 101, 100, 
 | 
					    116, 111, 110, 101, 109,  97, 
 | 
				
			||||||
     49,   0, 117, 110, 117, 115, 
 | 
					    112,  95, 109, 101, 116, 104, 
 | 
				
			||||||
    101, 100,  50,   0,  89, 111, 
 | 
					    111, 100,   0, 116, 111, 110, 
 | 
				
			||||||
    102, 102, 115, 101, 116,   0, 
 | 
					    101, 109,  97, 112,  95, 102, 
 | 
				
			||||||
 | 
					     97,  99, 116, 111, 114,  49, 
 | 
				
			||||||
 | 
					      0, 116, 111, 110, 101, 109, 
 | 
				
			||||||
 | 
					     97, 112,  95, 102,  97,  99, 
 | 
				
			||||||
 | 
					    116, 111, 114,  50,   0, 115, 
 | 
				
			||||||
 | 
					    100, 114,  95, 119, 104, 105, 
 | 
				
			||||||
 | 
					    116, 101,  95, 112, 111, 105, 
 | 
				
			||||||
 | 
					    110, 116,   0,  89, 111, 102, 
 | 
				
			||||||
 | 
					    102, 115, 101, 116,   0, 171, 
 | 
				
			||||||
      1,   0,   3,   0,   1,   0, 
 | 
					      1,   0,   3,   0,   1,   0, 
 | 
				
			||||||
      4,   0,   0,   0,   0,   0, 
 | 
					      4,   0,   0,   0,   0,   0, 
 | 
				
			||||||
      0,   0,   0,   0,  82,  99, 
 | 
					      0,   0,   0,   0,  82,  99, 
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,580 +0,0 @@
 | 
				
			|||||||
#if 0
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Generated by Microsoft (R) HLSL Shader Compiler 10.1
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Buffer Definitions: 
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// cbuffer Constants
 | 
					 | 
				
			||||||
// {
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//   float scRGB_output;                // Offset:    0 Size:     4
 | 
					 | 
				
			||||||
//   float color_scale;                 // Offset:    4 Size:     4
 | 
					 | 
				
			||||||
//   float unused1;                     // Offset:    8 Size:     4 [unused]
 | 
					 | 
				
			||||||
//   float unused2;                     // Offset:   12 Size:     4 [unused]
 | 
					 | 
				
			||||||
//   float4 Yoffset;                    // Offset:   16 Size:    16
 | 
					 | 
				
			||||||
//   float4 Rcoeff;                     // Offset:   32 Size:    16
 | 
					 | 
				
			||||||
//   float4 Gcoeff;                     // Offset:   48 Size:    16
 | 
					 | 
				
			||||||
//   float4 Bcoeff;                     // Offset:   64 Size:    16
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// }
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Resource Bindings:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                                 Type  Format         Dim      HLSL Bind  Count
 | 
					 | 
				
			||||||
// ------------------------------ ---------- ------- ----------- -------------- ------
 | 
					 | 
				
			||||||
// theSampler                        sampler      NA          NA             s0      1 
 | 
					 | 
				
			||||||
// theTextureY                       texture  float4          2d             t0      1 
 | 
					 | 
				
			||||||
// theTextureU                       texture  float4          2d             t1      1 
 | 
					 | 
				
			||||||
// theTextureV                       texture  float4          2d             t2      1 
 | 
					 | 
				
			||||||
// Constants                         cbuffer      NA          NA            cb0      1 
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Input signature:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
// -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
// SV_POSITION              0   xyzw        0      POS   float       
 | 
					 | 
				
			||||||
// TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
					 | 
				
			||||||
// COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Output signature:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
// -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
// SV_TARGET                0   xyzw        0   TARGET   float   xyzw
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Constant buffer to DX9 shader constant mappings:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Target Reg Buffer  Start Reg # of Regs        Data Conversion
 | 
					 | 
				
			||||||
// ---------- ------- --------- --------- ----------------------
 | 
					 | 
				
			||||||
// c0         cb0             0         5  ( FLT, FLT, FLT, FLT)
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Sampler/Resource to DX9 shader sampler mappings:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Target Sampler Source Sampler  Source Resource
 | 
					 | 
				
			||||||
// -------------- --------------- ----------------
 | 
					 | 
				
			||||||
// s0             s0              t0               
 | 
					 | 
				
			||||||
// s1             s0              t1               
 | 
					 | 
				
			||||||
// s2             s0              t2               
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Level9 shader bytecode:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
    ps_2_0
 | 
					 | 
				
			||||||
    def c5, 0.0404499993, 0.0773993805, 0.0549999997, 0.947867334
 | 
					 | 
				
			||||||
    def c6, 2.4000001, 1, 0, 0
 | 
					 | 
				
			||||||
    dcl t0.xy
 | 
					 | 
				
			||||||
    dcl t1
 | 
					 | 
				
			||||||
    dcl_2d s0
 | 
					 | 
				
			||||||
    dcl_2d s1
 | 
					 | 
				
			||||||
    dcl_2d s2
 | 
					 | 
				
			||||||
    texld r0, t0, s0
 | 
					 | 
				
			||||||
    texld r1, t0, s1
 | 
					 | 
				
			||||||
    texld r2, t0, s2
 | 
					 | 
				
			||||||
    mov r0.y, r1.x
 | 
					 | 
				
			||||||
    mov r0.z, r2.x
 | 
					 | 
				
			||||||
    add r0.xyz, r0, c1
 | 
					 | 
				
			||||||
    dp3 r1.x, r0, c2
 | 
					 | 
				
			||||||
    add r0.w, r1.x, c5.z
 | 
					 | 
				
			||||||
    abs r0.w, r0.w
 | 
					 | 
				
			||||||
    mul r0.w, r0.w, c5.w
 | 
					 | 
				
			||||||
    pow r1.w, r0.w, c6.x
 | 
					 | 
				
			||||||
    add r0.w, -r1.x, c5.x
 | 
					 | 
				
			||||||
    mul r2.x, r1.x, c5.y
 | 
					 | 
				
			||||||
    cmp r2.x, r0.w, r2.x, r1.w
 | 
					 | 
				
			||||||
    dp3 r1.y, r0, c3
 | 
					 | 
				
			||||||
    dp3 r1.z, r0, c4
 | 
					 | 
				
			||||||
    add r1.w, r1.y, c5.z
 | 
					 | 
				
			||||||
    abs r1.w, r1.w
 | 
					 | 
				
			||||||
    mul r1.w, r1.w, c5.w
 | 
					 | 
				
			||||||
    pow r2.w, r1.w, c6.x
 | 
					 | 
				
			||||||
    add r1.w, -r1.y, c5.x
 | 
					 | 
				
			||||||
    mul r0.x, r1.y, c5.y
 | 
					 | 
				
			||||||
    cmp r2.y, r1.w, r0.x, r2.w
 | 
					 | 
				
			||||||
    add r1.w, r1.z, c5.z
 | 
					 | 
				
			||||||
    abs r1.w, r1.w
 | 
					 | 
				
			||||||
    mul r1.w, r1.w, c5.w
 | 
					 | 
				
			||||||
    pow r2.w, r1.w, c6.x
 | 
					 | 
				
			||||||
    add r1.w, -r1.z, c5.x
 | 
					 | 
				
			||||||
    mul r0.x, r1.z, c5.y
 | 
					 | 
				
			||||||
    cmp r2.z, r1.w, r0.x, r2.w
 | 
					 | 
				
			||||||
    mul r1.w, c0.x, c0.x
 | 
					 | 
				
			||||||
    cmp r0.xyz, -r1.w, r1, r2
 | 
					 | 
				
			||||||
    mul r0.xyz, r0, c0.y
 | 
					 | 
				
			||||||
    mov r0.w, c6.y
 | 
					 | 
				
			||||||
    mul r0, r0, t1
 | 
					 | 
				
			||||||
    mov oC0, r0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// approximately 42 instruction slots used (3 texture, 39 arithmetic)
 | 
					 | 
				
			||||||
ps_4_0
 | 
					 | 
				
			||||||
dcl_constantbuffer CB0[5], immediateIndexed
 | 
					 | 
				
			||||||
dcl_sampler s0, mode_default
 | 
					 | 
				
			||||||
dcl_resource_texture2d (float,float,float,float) t0
 | 
					 | 
				
			||||||
dcl_resource_texture2d (float,float,float,float) t1
 | 
					 | 
				
			||||||
dcl_resource_texture2d (float,float,float,float) t2
 | 
					 | 
				
			||||||
dcl_input_ps linear v1.xy
 | 
					 | 
				
			||||||
dcl_input_ps linear v2.xyzw
 | 
					 | 
				
			||||||
dcl_output o0.xyzw
 | 
					 | 
				
			||||||
dcl_temps 4
 | 
					 | 
				
			||||||
sample r0.xyzw, v1.xyxx, t0.xyzw, s0
 | 
					 | 
				
			||||||
sample r1.xyzw, v1.xyxx, t1.xyzw, s0
 | 
					 | 
				
			||||||
sample r2.xyzw, v1.xyxx, t2.yzxw, s0
 | 
					 | 
				
			||||||
mov r2.x, r0.x
 | 
					 | 
				
			||||||
mov r2.y, r1.x
 | 
					 | 
				
			||||||
add r0.xyz, r2.xyzx, cb0[1].xyzx
 | 
					 | 
				
			||||||
dp3 r1.x, r0.xyzx, cb0[2].xyzx
 | 
					 | 
				
			||||||
dp3 r1.y, r0.xyzx, cb0[3].xyzx
 | 
					 | 
				
			||||||
dp3 r1.z, r0.xyzx, cb0[4].xyzx
 | 
					 | 
				
			||||||
ne r0.x, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[0].x
 | 
					 | 
				
			||||||
if_nz r0.x
 | 
					 | 
				
			||||||
  ge r0.xyz, l(0.040450, 0.040450, 0.040450, 0.000000), r1.xyzx
 | 
					 | 
				
			||||||
  mul r2.xyz, r1.xyzx, l(0.077399, 0.077399, 0.077399, 0.000000)
 | 
					 | 
				
			||||||
  add r3.xyz, r1.xyzx, l(0.055000, 0.055000, 0.055000, 0.000000)
 | 
					 | 
				
			||||||
  mul r3.xyz, |r3.xyzx|, l(0.947867, 0.947867, 0.947867, 0.000000)
 | 
					 | 
				
			||||||
  log r3.xyz, r3.xyzx
 | 
					 | 
				
			||||||
  mul r3.xyz, r3.xyzx, l(2.400000, 2.400000, 2.400000, 0.000000)
 | 
					 | 
				
			||||||
  exp r3.xyz, r3.xyzx
 | 
					 | 
				
			||||||
  movc r1.xyz, r0.xyzx, r2.xyzx, r3.xyzx
 | 
					 | 
				
			||||||
endif 
 | 
					 | 
				
			||||||
mul r0.xyz, r1.xyzx, cb0[0].yyyy
 | 
					 | 
				
			||||||
mov r0.w, l(1.000000)
 | 
					 | 
				
			||||||
mul o0.xyzw, r0.xyzw, v2.xyzw
 | 
					 | 
				
			||||||
ret 
 | 
					 | 
				
			||||||
// Approximately 24 instruction slots used
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const BYTE g_main[] =
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
     68,  88,  66,  67,  84,  14, 
 | 
					 | 
				
			||||||
    232, 134,  42, 204,  66, 203, 
 | 
					 | 
				
			||||||
     56,  83, 173,  74, 161,   2, 
 | 
					 | 
				
			||||||
     47, 168,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
    248,   9,   0,   0,   6,   0, 
 | 
					 | 
				
			||||||
      0,   0,  56,   0,   0,   0, 
 | 
					 | 
				
			||||||
     36,   3,   0,   0, 104,   6, 
 | 
					 | 
				
			||||||
      0,   0, 228,   6,   0,   0, 
 | 
					 | 
				
			||||||
     80,   9,   0,   0, 196,   9, 
 | 
					 | 
				
			||||||
      0,   0,  65, 111, 110,  57, 
 | 
					 | 
				
			||||||
    228,   2,   0,   0, 228,   2, 
 | 
					 | 
				
			||||||
      0,   0,   0,   2, 255, 255, 
 | 
					 | 
				
			||||||
    168,   2,   0,   0,  60,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,  48,   0, 
 | 
					 | 
				
			||||||
      0,   0,  60,   0,   0,   0, 
 | 
					 | 
				
			||||||
     60,   0,   3,   0,  36,   0, 
 | 
					 | 
				
			||||||
      0,   0,  60,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   1,   0, 
 | 
					 | 
				
			||||||
      2,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   5,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   2, 
 | 
					 | 
				
			||||||
    255, 255,  81,   0,   0,   5, 
 | 
					 | 
				
			||||||
      5,   0,  15, 160, 230, 174, 
 | 
					 | 
				
			||||||
     37,  61, 145, 131, 158,  61, 
 | 
					 | 
				
			||||||
    174,  71,  97,  61, 111, 167, 
 | 
					 | 
				
			||||||
    114,  63,  81,   0,   0,   5, 
 | 
					 | 
				
			||||||
      6,   0,  15, 160, 154, 153, 
 | 
					 | 
				
			||||||
     25,  64,   0,   0, 128,  63, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  31,   0,   0,   2, 
 | 
					 | 
				
			||||||
      0,   0,   0, 128,   0,   0, 
 | 
					 | 
				
			||||||
      3, 176,  31,   0,   0,   2, 
 | 
					 | 
				
			||||||
      0,   0,   0, 128,   1,   0, 
 | 
					 | 
				
			||||||
     15, 176,  31,   0,   0,   2, 
 | 
					 | 
				
			||||||
      0,   0,   0, 144,   0,   8, 
 | 
					 | 
				
			||||||
     15, 160,  31,   0,   0,   2, 
 | 
					 | 
				
			||||||
      0,   0,   0, 144,   1,   8, 
 | 
					 | 
				
			||||||
     15, 160,  31,   0,   0,   2, 
 | 
					 | 
				
			||||||
      0,   0,   0, 144,   2,   8, 
 | 
					 | 
				
			||||||
     15, 160,  66,   0,   0,   3, 
 | 
					 | 
				
			||||||
      0,   0,  15, 128,   0,   0, 
 | 
					 | 
				
			||||||
    228, 176,   0,   8, 228, 160, 
 | 
					 | 
				
			||||||
     66,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
     15, 128,   0,   0, 228, 176, 
 | 
					 | 
				
			||||||
      1,   8, 228, 160,  66,   0, 
 | 
					 | 
				
			||||||
      0,   3,   2,   0,  15, 128, 
 | 
					 | 
				
			||||||
      0,   0, 228, 176,   2,   8, 
 | 
					 | 
				
			||||||
    228, 160,   1,   0,   0,   2, 
 | 
					 | 
				
			||||||
      0,   0,   2, 128,   1,   0, 
 | 
					 | 
				
			||||||
      0, 128,   1,   0,   0,   2, 
 | 
					 | 
				
			||||||
      0,   0,   4, 128,   2,   0, 
 | 
					 | 
				
			||||||
      0, 128,   2,   0,   0,   3, 
 | 
					 | 
				
			||||||
      0,   0,   7, 128,   0,   0, 
 | 
					 | 
				
			||||||
    228, 128,   1,   0, 228, 160, 
 | 
					 | 
				
			||||||
      8,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      1, 128,   0,   0, 228, 128, 
 | 
					 | 
				
			||||||
      2,   0, 228, 160,   2,   0, 
 | 
					 | 
				
			||||||
      0,   3,   0,   0,   8, 128, 
 | 
					 | 
				
			||||||
      1,   0,   0, 128,   5,   0, 
 | 
					 | 
				
			||||||
    170, 160,  35,   0,   0,   2, 
 | 
					 | 
				
			||||||
      0,   0,   8, 128,   0,   0, 
 | 
					 | 
				
			||||||
    255, 128,   5,   0,   0,   3, 
 | 
					 | 
				
			||||||
      0,   0,   8, 128,   0,   0, 
 | 
					 | 
				
			||||||
    255, 128,   5,   0, 255, 160, 
 | 
					 | 
				
			||||||
     32,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   0,   0, 255, 128, 
 | 
					 | 
				
			||||||
      6,   0,   0, 160,   2,   0, 
 | 
					 | 
				
			||||||
      0,   3,   0,   0,   8, 128, 
 | 
					 | 
				
			||||||
      1,   0,   0, 129,   5,   0, 
 | 
					 | 
				
			||||||
      0, 160,   5,   0,   0,   3, 
 | 
					 | 
				
			||||||
      2,   0,   1, 128,   1,   0, 
 | 
					 | 
				
			||||||
      0, 128,   5,   0,  85, 160, 
 | 
					 | 
				
			||||||
     88,   0,   0,   4,   2,   0, 
 | 
					 | 
				
			||||||
      1, 128,   0,   0, 255, 128, 
 | 
					 | 
				
			||||||
      2,   0,   0, 128,   1,   0, 
 | 
					 | 
				
			||||||
    255, 128,   8,   0,   0,   3, 
 | 
					 | 
				
			||||||
      1,   0,   2, 128,   0,   0, 
 | 
					 | 
				
			||||||
    228, 128,   3,   0, 228, 160, 
 | 
					 | 
				
			||||||
      8,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      4, 128,   0,   0, 228, 128, 
 | 
					 | 
				
			||||||
      4,   0, 228, 160,   2,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   8, 128, 
 | 
					 | 
				
			||||||
      1,   0,  85, 128,   5,   0, 
 | 
					 | 
				
			||||||
    170, 160,  35,   0,   0,   2, 
 | 
					 | 
				
			||||||
      1,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
    255, 128,   5,   0,   0,   3, 
 | 
					 | 
				
			||||||
      1,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
    255, 128,   5,   0, 255, 160, 
 | 
					 | 
				
			||||||
     32,   0,   0,   3,   2,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0, 255, 128, 
 | 
					 | 
				
			||||||
      6,   0,   0, 160,   2,   0, 
 | 
					 | 
				
			||||||
      0,   3,   1,   0,   8, 128, 
 | 
					 | 
				
			||||||
      1,   0,  85, 129,   5,   0, 
 | 
					 | 
				
			||||||
      0, 160,   5,   0,   0,   3, 
 | 
					 | 
				
			||||||
      0,   0,   1, 128,   1,   0, 
 | 
					 | 
				
			||||||
     85, 128,   5,   0,  85, 160, 
 | 
					 | 
				
			||||||
     88,   0,   0,   4,   2,   0, 
 | 
					 | 
				
			||||||
      2, 128,   1,   0, 255, 128, 
 | 
					 | 
				
			||||||
      0,   0,   0, 128,   2,   0, 
 | 
					 | 
				
			||||||
    255, 128,   2,   0,   0,   3, 
 | 
					 | 
				
			||||||
      1,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
    170, 128,   5,   0, 170, 160, 
 | 
					 | 
				
			||||||
     35,   0,   0,   2,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0, 255, 128, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   1,   0, 255, 128, 
 | 
					 | 
				
			||||||
      5,   0, 255, 160,  32,   0, 
 | 
					 | 
				
			||||||
      0,   3,   2,   0,   8, 128, 
 | 
					 | 
				
			||||||
      1,   0, 255, 128,   6,   0, 
 | 
					 | 
				
			||||||
      0, 160,   2,   0,   0,   3, 
 | 
					 | 
				
			||||||
      1,   0,   8, 128,   1,   0, 
 | 
					 | 
				
			||||||
    170, 129,   5,   0,   0, 160, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   0,   0, 
 | 
					 | 
				
			||||||
      1, 128,   1,   0, 170, 128, 
 | 
					 | 
				
			||||||
      5,   0,  85, 160,  88,   0, 
 | 
					 | 
				
			||||||
      0,   4,   2,   0,   4, 128, 
 | 
					 | 
				
			||||||
      1,   0, 255, 128,   0,   0, 
 | 
					 | 
				
			||||||
      0, 128,   2,   0, 255, 128, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   1,   0, 
 | 
					 | 
				
			||||||
      8, 128,   0,   0,   0, 160, 
 | 
					 | 
				
			||||||
      0,   0,   0, 160,  88,   0, 
 | 
					 | 
				
			||||||
      0,   4,   0,   0,   7, 128, 
 | 
					 | 
				
			||||||
      1,   0, 255, 129,   1,   0, 
 | 
					 | 
				
			||||||
    228, 128,   2,   0, 228, 128, 
 | 
					 | 
				
			||||||
      5,   0,   0,   3,   0,   0, 
 | 
					 | 
				
			||||||
      7, 128,   0,   0, 228, 128, 
 | 
					 | 
				
			||||||
      0,   0,  85, 160,   1,   0, 
 | 
					 | 
				
			||||||
      0,   2,   0,   0,   8, 128, 
 | 
					 | 
				
			||||||
      6,   0,  85, 160,   5,   0, 
 | 
					 | 
				
			||||||
      0,   3,   0,   0,  15, 128, 
 | 
					 | 
				
			||||||
      0,   0, 228, 128,   1,   0, 
 | 
					 | 
				
			||||||
    228, 176,   1,   0,   0,   2, 
 | 
					 | 
				
			||||||
      0,   8,  15, 128,   0,   0, 
 | 
					 | 
				
			||||||
    228, 128, 255, 255,   0,   0, 
 | 
					 | 
				
			||||||
     83,  72,  68,  82,  60,   3, 
 | 
					 | 
				
			||||||
      0,   0,  64,   0,   0,   0, 
 | 
					 | 
				
			||||||
    207,   0,   0,   0,  89,   0, 
 | 
					 | 
				
			||||||
      0,   4,  70, 142,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   5,   0, 
 | 
					 | 
				
			||||||
      0,   0,  90,   0,   0,   3, 
 | 
					 | 
				
			||||||
      0,  96,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  88,  24,   0,   4, 
 | 
					 | 
				
			||||||
      0, 112,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  85,  85,   0,   0, 
 | 
					 | 
				
			||||||
     88,  24,   0,   4,   0, 112, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     85,  85,   0,   0,  88,  24, 
 | 
					 | 
				
			||||||
      0,   4,   0, 112,  16,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,  85,  85, 
 | 
					 | 
				
			||||||
      0,   0,  98,  16,   0,   3, 
 | 
					 | 
				
			||||||
     50,  16,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  98,  16,   0,   3, 
 | 
					 | 
				
			||||||
    242,  16,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0, 101,   0,   0,   3, 
 | 
					 | 
				
			||||||
    242,  32,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 104,   0,   0,   2, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,  69,   0, 
 | 
					 | 
				
			||||||
      0,   9, 242,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70,  16, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70, 126,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,  96,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  69,   0, 
 | 
					 | 
				
			||||||
      0,   9, 242,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  70,  16, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70, 126,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,  96,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  69,   0, 
 | 
					 | 
				
			||||||
      0,   9, 242,   0,  16,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,  70,  16, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
    150, 124,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,  96,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  54,   0, 
 | 
					 | 
				
			||||||
      0,   5,  18,   0,  16,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,  10,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     54,   0,   0,   5,  34,   0, 
 | 
					 | 
				
			||||||
     16,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
     10,   0,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   8, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,  70, 130, 
 | 
					 | 
				
			||||||
     32,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   8,  18,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70, 130,  32,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   8,  34,   0, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70, 130,  32,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   8, 
 | 
					 | 
				
			||||||
     66,   0,  16,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  70, 130, 
 | 
					 | 
				
			||||||
     32,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,  57,   0, 
 | 
					 | 
				
			||||||
      0,  11,  18,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     10, 128,  32,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     31,   0,   4,   3,  10,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     29,   0,   0,  10, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,  64,   0,   0, 230, 174, 
 | 
					 | 
				
			||||||
     37,  61, 230, 174,  37,  61, 
 | 
					 | 
				
			||||||
    230, 174,  37,  61,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  56,   0, 
 | 
					 | 
				
			||||||
      0,  10, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,  64,   0,   0, 145, 131, 
 | 
					 | 
				
			||||||
    158,  61, 145, 131, 158,  61, 
 | 
					 | 
				
			||||||
    145, 131, 158,  61,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,  10, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   2,  64, 
 | 
					 | 
				
			||||||
      0,   0, 174,  71,  97,  61, 
 | 
					 | 
				
			||||||
    174,  71,  97,  61, 174,  71, 
 | 
					 | 
				
			||||||
     97,  61,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     56,   0,   0,  11, 114,   0, 
 | 
					 | 
				
			||||||
     16,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16, 128, 129,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,  64,   0,   0, 111, 167, 
 | 
					 | 
				
			||||||
    114,  63, 111, 167, 114,  63, 
 | 
					 | 
				
			||||||
    111, 167, 114,  63,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  47,   0,   0,   5, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,  56,   0, 
 | 
					 | 
				
			||||||
      0,  10, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,  64,   0,   0, 154, 153, 
 | 
					 | 
				
			||||||
     25,  64, 154, 153,  25,  64, 
 | 
					 | 
				
			||||||
    154, 153,  25,  64,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  25,   0,   0,   5, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,  55,   0, 
 | 
					 | 
				
			||||||
      0,   9, 114,   0,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  70,   2, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,   2,  16,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,  21,   0, 
 | 
					 | 
				
			||||||
      0,   1,  56,   0,   0,   8, 
 | 
					 | 
				
			||||||
    114,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,   2,  16,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  86, 133, 
 | 
					 | 
				
			||||||
     32,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  54,   0, 
 | 
					 | 
				
			||||||
      0,   5, 130,   0,  16,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   1,  64, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 128,  63, 
 | 
					 | 
				
			||||||
     56,   0,   0,   7, 242,  32, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     70,  14,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  70,  30,  16,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,  62,   0, 
 | 
					 | 
				
			||||||
      0,   1,  83,  84,  65,  84, 
 | 
					 | 
				
			||||||
    116,   0,   0,   0,  24,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,  13,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     82,  68,  69,  70, 100,   2, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
    248,   0,   0,   0,   5,   0, 
 | 
					 | 
				
			||||||
      0,   0,  28,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   4, 255, 255,   0,   1, 
 | 
					 | 
				
			||||||
      0,   0,  57,   2,   0,   0, 
 | 
					 | 
				
			||||||
    188,   0,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0, 199,   0,   0,   0, 
 | 
					 | 
				
			||||||
      2,   0,   0,   0,   5,   0, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
    255, 255, 255, 255,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
     13,   0,   0,   0, 211,   0, 
 | 
					 | 
				
			||||||
      0,   0,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
      5,   0,   0,   0,   4,   0, 
 | 
					 | 
				
			||||||
      0,   0, 255, 255, 255, 255, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,  13,   0,   0,   0, 
 | 
					 | 
				
			||||||
    223,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,   5,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0, 255, 255, 
 | 
					 | 
				
			||||||
    255, 255,   2,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,  13,   0, 
 | 
					 | 
				
			||||||
      0,   0, 235,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0, 116, 104, 
 | 
					 | 
				
			||||||
    101,  83,  97, 109, 112, 108, 
 | 
					 | 
				
			||||||
    101, 114,   0, 116, 104, 101, 
 | 
					 | 
				
			||||||
     84, 101, 120, 116, 117, 114, 
 | 
					 | 
				
			||||||
    101,  89,   0, 116, 104, 101, 
 | 
					 | 
				
			||||||
     84, 101, 120, 116, 117, 114, 
 | 
					 | 
				
			||||||
    101,  85,   0, 116, 104, 101, 
 | 
					 | 
				
			||||||
     84, 101, 120, 116, 117, 114, 
 | 
					 | 
				
			||||||
    101,  86,   0,  67, 111, 110, 
 | 
					 | 
				
			||||||
    115, 116,  97, 110, 116, 115, 
 | 
					 | 
				
			||||||
      0, 171, 171, 171, 235,   0, 
 | 
					 | 
				
			||||||
      0,   0,   8,   0,   0,   0, 
 | 
					 | 
				
			||||||
     16,   1,   0,   0,  80,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 208,   1, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0, 224,   1,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 240,   1, 
 | 
					 | 
				
			||||||
      0,   0,   4,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0, 224,   1,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 252,   1, 
 | 
					 | 
				
			||||||
      0,   0,   8,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 224,   1,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   4,   2, 
 | 
					 | 
				
			||||||
      0,   0,  12,   0,   0,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0, 224,   1,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  12,   2, 
 | 
					 | 
				
			||||||
      0,   0,  16,   0,   0,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,  20,   2,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  36,   2, 
 | 
					 | 
				
			||||||
      0,   0,  32,   0,   0,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,  20,   2,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  43,   2, 
 | 
					 | 
				
			||||||
      0,   0,  48,   0,   0,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,  20,   2,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  50,   2, 
 | 
					 | 
				
			||||||
      0,   0,  64,   0,   0,   0, 
 | 
					 | 
				
			||||||
     16,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,  20,   2,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0, 115,  99, 
 | 
					 | 
				
			||||||
     82,  71,  66,  95, 111, 117, 
 | 
					 | 
				
			||||||
    116, 112, 117, 116,   0, 171, 
 | 
					 | 
				
			||||||
    171, 171,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      1,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
     99, 111, 108, 111, 114,  95, 
 | 
					 | 
				
			||||||
    115,  99,  97, 108, 101,   0, 
 | 
					 | 
				
			||||||
    117, 110, 117, 115, 101, 100, 
 | 
					 | 
				
			||||||
     49,   0, 117, 110, 117, 115, 
 | 
					 | 
				
			||||||
    101, 100,  50,   0,  89, 111, 
 | 
					 | 
				
			||||||
    102, 102, 115, 101, 116,   0, 
 | 
					 | 
				
			||||||
      1,   0,   3,   0,   1,   0, 
 | 
					 | 
				
			||||||
      4,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  82,  99, 
 | 
					 | 
				
			||||||
    111, 101, 102, 102,   0,  71, 
 | 
					 | 
				
			||||||
     99, 111, 101, 102, 102,   0, 
 | 
					 | 
				
			||||||
     66,  99, 111, 101, 102, 102, 
 | 
					 | 
				
			||||||
      0,  77, 105,  99, 114, 111, 
 | 
					 | 
				
			||||||
    115, 111, 102, 116,  32,  40, 
 | 
					 | 
				
			||||||
     82,  41,  32,  72,  76,  83, 
 | 
					 | 
				
			||||||
     76,  32,  83, 104,  97, 100, 
 | 
					 | 
				
			||||||
    101, 114,  32,  67, 111, 109, 
 | 
					 | 
				
			||||||
    112, 105, 108, 101, 114,  32, 
 | 
					 | 
				
			||||||
     49,  48,  46,  49,   0, 171, 
 | 
					 | 
				
			||||||
    171, 171,  73,  83,  71,  78, 
 | 
					 | 
				
			||||||
    108,   0,   0,   0,   3,   0, 
 | 
					 | 
				
			||||||
      0,   0,   8,   0,   0,   0, 
 | 
					 | 
				
			||||||
     80,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   1,   0,   0,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,  15,   0,   0,   0, 
 | 
					 | 
				
			||||||
     92,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,   1,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   3,   0,   0, 
 | 
					 | 
				
			||||||
    101,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      3,   0,   0,   0,   2,   0, 
 | 
					 | 
				
			||||||
      0,   0,  15,  15,   0,   0, 
 | 
					 | 
				
			||||||
     83,  86,  95,  80,  79,  83, 
 | 
					 | 
				
			||||||
     73,  84,  73,  79,  78,   0, 
 | 
					 | 
				
			||||||
     84,  69,  88,  67,  79,  79, 
 | 
					 | 
				
			||||||
     82,  68,   0,  67,  79,  76, 
 | 
					 | 
				
			||||||
     79,  82,   0, 171,  79,  83, 
 | 
					 | 
				
			||||||
     71,  78,  44,   0,   0,   0, 
 | 
					 | 
				
			||||||
      1,   0,   0,   0,   8,   0, 
 | 
					 | 
				
			||||||
      0,   0,  32,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   3,   0,   0,   0, 
 | 
					 | 
				
			||||||
      0,   0,   0,   0,  15,   0, 
 | 
					 | 
				
			||||||
      0,   0,  83,  86,  95,  84, 
 | 
					 | 
				
			||||||
     65,  82,  71,  69,  84,   0, 
 | 
					 | 
				
			||||||
    171, 171
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,22 +0,0 @@
 | 
				
			|||||||
Texture2D theTextureY : register(t0);
 | 
					 | 
				
			||||||
Texture2D theTextureU : register(t1);
 | 
					 | 
				
			||||||
Texture2D theTextureV : register(t2);
 | 
					 | 
				
			||||||
SamplerState theSampler : register(s0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "D3D11_PixelShader_Common.incl"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float4 main(PixelShaderInput input) : SV_TARGET
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    float3 yuv;
 | 
					 | 
				
			||||||
    yuv.x = theTextureY.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
    yuv.y = theTextureU.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
    yuv.z = theTextureV.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 rgb;
 | 
					 | 
				
			||||||
    yuv += Yoffset.xyz;
 | 
					 | 
				
			||||||
    rgb.r = dot(yuv, Rcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.g = dot(yuv, Gcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.b = dot(yuv, Bcoeff.xyz);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return GetOutputColorFromSRGB(rgb) * input.color;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -75,21 +75,41 @@ typedef struct
 | 
				
			|||||||
    Float4X4 projectionAndView;
 | 
					    Float4X4 projectionAndView;
 | 
				
			||||||
} VertexShaderConstants;
 | 
					} VertexShaderConstants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* These should mirror the definitions in D3D11_PixelShader_Common.incl */
 | 
				
			||||||
 | 
					//static const float TONEMAP_NONE = 0;
 | 
				
			||||||
 | 
					//static const float TONEMAP_LINEAR = 1;
 | 
				
			||||||
 | 
					static const float TONEMAP_CHROME = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//static const float TEXTURETYPE_NONE = 0;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_RGB = 1;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NV12 = 2;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NV21 = 3;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_YUV = 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const float INPUTTYPE_UNSPECIFIED = 0;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_SRGB = 1;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_SCRGB = 2;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_HDR10 = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct
 | 
					typedef struct
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float scRGB_output;
 | 
					    float scRGB_output;
 | 
				
			||||||
 | 
					    float texture_type;
 | 
				
			||||||
 | 
					    float input_type;
 | 
				
			||||||
    float color_scale;
 | 
					    float color_scale;
 | 
				
			||||||
    float unused1;
 | 
					
 | 
				
			||||||
    float unused2;
 | 
					    float tonemap_method;
 | 
				
			||||||
 | 
					    float tonemap_factor1;
 | 
				
			||||||
 | 
					    float tonemap_factor2;
 | 
				
			||||||
 | 
					    float sdr_white_point;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    float YCbCr_matrix[16];
 | 
					    float YCbCr_matrix[16];
 | 
				
			||||||
} PixelShaderConstants;
 | 
					} PixelShaderConstants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct
 | 
					typedef struct
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    ID3D11Buffer *constants;
 | 
					    ID3D11Buffer *constants;
 | 
				
			||||||
    SDL_bool scRGB_output;
 | 
					    PixelShaderConstants shader_constants;
 | 
				
			||||||
    float color_scale;
 | 
					 | 
				
			||||||
    const float *shader_params;
 | 
					 | 
				
			||||||
} PixelShaderState;
 | 
					} PixelShaderState;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Per-vertex data */
 | 
					/* Per-vertex data */
 | 
				
			||||||
@@ -112,7 +132,7 @@ typedef struct
 | 
				
			|||||||
    int lockedTexturePositionY;
 | 
					    int lockedTexturePositionY;
 | 
				
			||||||
    D3D11_FILTER scaleMode;
 | 
					    D3D11_FILTER scaleMode;
 | 
				
			||||||
    D3D11_Shader shader;
 | 
					    D3D11_Shader shader;
 | 
				
			||||||
    const float *shader_params;
 | 
					    const float *YCbCr_matrix;
 | 
				
			||||||
#if SDL_HAVE_YUV
 | 
					#if SDL_HAVE_YUV
 | 
				
			||||||
    /* YV12 texture support */
 | 
					    /* YV12 texture support */
 | 
				
			||||||
    SDL_bool yuv;
 | 
					    SDL_bool yuv;
 | 
				
			||||||
@@ -245,6 +265,8 @@ static DXGI_FORMAT SDLPixelFormatToDXGITextureFormat(Uint32 format, Uint32 color
 | 
				
			|||||||
    switch (format) {
 | 
					    switch (format) {
 | 
				
			||||||
    case SDL_PIXELFORMAT_RGBA64_FLOAT:
 | 
					    case SDL_PIXELFORMAT_RGBA64_FLOAT:
 | 
				
			||||||
        return DXGI_FORMAT_R16G16B16A16_FLOAT;
 | 
					        return DXGI_FORMAT_R16G16B16A16_FLOAT;
 | 
				
			||||||
 | 
					    case SDL_PIXELFORMAT_XBGR2101010:
 | 
				
			||||||
 | 
					        return DXGI_FORMAT_R10G10B10A2_UNORM;
 | 
				
			||||||
    case SDL_PIXELFORMAT_ARGB8888:
 | 
					    case SDL_PIXELFORMAT_ARGB8888:
 | 
				
			||||||
        if (colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
 | 
					        if (colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
 | 
				
			||||||
            return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
 | 
					            return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
 | 
				
			||||||
@@ -263,8 +285,6 @@ static DXGI_FORMAT SDLPixelFormatToDXGITextureFormat(Uint32 format, Uint32 color
 | 
				
			|||||||
        return DXGI_FORMAT_NV12;
 | 
					        return DXGI_FORMAT_NV12;
 | 
				
			||||||
    case SDL_PIXELFORMAT_P010:
 | 
					    case SDL_PIXELFORMAT_P010:
 | 
				
			||||||
        return DXGI_FORMAT_P010;
 | 
					        return DXGI_FORMAT_P010;
 | 
				
			||||||
    case SDL_PIXELFORMAT_P016:
 | 
					 | 
				
			||||||
        return DXGI_FORMAT_P016;
 | 
					 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        return DXGI_FORMAT_UNKNOWN;
 | 
					        return DXGI_FORMAT_UNKNOWN;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -275,6 +295,8 @@ static DXGI_FORMAT SDLPixelFormatToDXGIMainResourceViewFormat(Uint32 format, Uin
 | 
				
			|||||||
    switch (format) {
 | 
					    switch (format) {
 | 
				
			||||||
    case SDL_PIXELFORMAT_RGBA64_FLOAT:
 | 
					    case SDL_PIXELFORMAT_RGBA64_FLOAT:
 | 
				
			||||||
        return DXGI_FORMAT_R16G16B16A16_FLOAT;
 | 
					        return DXGI_FORMAT_R16G16B16A16_FLOAT;
 | 
				
			||||||
 | 
					    case SDL_PIXELFORMAT_XBGR2101010:
 | 
				
			||||||
 | 
					        return DXGI_FORMAT_R10G10B10A2_UNORM;
 | 
				
			||||||
    case SDL_PIXELFORMAT_ARGB8888:
 | 
					    case SDL_PIXELFORMAT_ARGB8888:
 | 
				
			||||||
        if (colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
 | 
					        if (colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
 | 
				
			||||||
            return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
 | 
					            return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
 | 
				
			||||||
@@ -291,7 +313,6 @@ static DXGI_FORMAT SDLPixelFormatToDXGIMainResourceViewFormat(Uint32 format, Uin
 | 
				
			|||||||
    case SDL_PIXELFORMAT_NV21:  /* For the Y texture */
 | 
					    case SDL_PIXELFORMAT_NV21:  /* For the Y texture */
 | 
				
			||||||
        return DXGI_FORMAT_R8_UNORM;
 | 
					        return DXGI_FORMAT_R8_UNORM;
 | 
				
			||||||
    case SDL_PIXELFORMAT_P010:  /* For the Y texture */
 | 
					    case SDL_PIXELFORMAT_P010:  /* For the Y texture */
 | 
				
			||||||
    case SDL_PIXELFORMAT_P016:  /* For the Y texture */
 | 
					 | 
				
			||||||
        return DXGI_FORMAT_R16_UNORM;
 | 
					        return DXGI_FORMAT_R16_UNORM;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        return DXGI_FORMAT_UNKNOWN;
 | 
					        return DXGI_FORMAT_UNKNOWN;
 | 
				
			||||||
@@ -1267,14 +1288,17 @@ static int D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
 | 
				
			|||||||
    /* NV12 textures must have even width and height */
 | 
					    /* NV12 textures must have even width and height */
 | 
				
			||||||
    if (texture->format == SDL_PIXELFORMAT_NV12 ||
 | 
					    if (texture->format == SDL_PIXELFORMAT_NV12 ||
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_NV21 ||
 | 
					        texture->format == SDL_PIXELFORMAT_NV21 ||
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_P010 ||
 | 
					        texture->format == SDL_PIXELFORMAT_P010) {
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_P016) {
 | 
					 | 
				
			||||||
        textureDesc.Width = (textureDesc.Width + 1) & ~1;
 | 
					        textureDesc.Width = (textureDesc.Width + 1) & ~1;
 | 
				
			||||||
        textureDesc.Height = (textureDesc.Height + 1) & ~1;
 | 
					        textureDesc.Height = (textureDesc.Height + 1) & ~1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    textureData->w = (int)textureDesc.Width;
 | 
					    textureData->w = (int)textureDesc.Width;
 | 
				
			||||||
    textureData->h = (int)textureDesc.Height;
 | 
					    textureData->h = (int)textureDesc.Height;
 | 
				
			||||||
    textureData->shader = SHADER_RGB;
 | 
					    if (SDL_COLORSPACETRANSFER(texture->colorspace) == SDL_TRANSFER_CHARACTERISTICS_SRGB) {
 | 
				
			||||||
 | 
					        textureData->shader = SHADER_RGB;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        textureData->shader = SHADER_ADVANCED;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (texture->access == SDL_TEXTUREACCESS_STREAMING) {
 | 
					    if (texture->access == SDL_TEXTUREACCESS_STREAMING) {
 | 
				
			||||||
        textureDesc.Usage = D3D11_USAGE_DYNAMIC;
 | 
					        textureDesc.Usage = D3D11_USAGE_DYNAMIC;
 | 
				
			||||||
@@ -1339,53 +1363,28 @@ static int D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        SDL_SetProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER, textureData->mainTextureV);
 | 
					        SDL_SetProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_D3D11_TEXTURE_V_POINTER, textureData->mainTextureV);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        textureData->shader = SHADER_YUV;
 | 
					        textureData->YCbCr_matrix = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, 8);
 | 
				
			||||||
        textureData->shader_params = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, 8);
 | 
					        if (!textureData->YCbCr_matrix) {
 | 
				
			||||||
        if (!textureData->shader_params) {
 | 
					 | 
				
			||||||
            return SDL_SetError("Unsupported YUV colorspace");
 | 
					            return SDL_SetError("Unsupported YUV colorspace");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (texture->format == SDL_PIXELFORMAT_NV12 ||
 | 
					    if (texture->format == SDL_PIXELFORMAT_NV12 ||
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_NV21 ||
 | 
					        texture->format == SDL_PIXELFORMAT_NV21 ||
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_P010 ||
 | 
					        texture->format == SDL_PIXELFORMAT_P010) {
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_P016) {
 | 
					 | 
				
			||||||
        int bits_per_pixel;
 | 
					        int bits_per_pixel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        textureData->nv12 = SDL_TRUE;
 | 
					        textureData->nv12 = SDL_TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch (texture->format) {
 | 
					 | 
				
			||||||
        case SDL_PIXELFORMAT_NV12:
 | 
					 | 
				
			||||||
            textureData->shader = SHADER_NV12;
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case SDL_PIXELFORMAT_NV21:
 | 
					 | 
				
			||||||
            textureData->shader = SHADER_NV21;
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case SDL_PIXELFORMAT_P010:
 | 
					 | 
				
			||||||
        case SDL_PIXELFORMAT_P016:
 | 
					 | 
				
			||||||
            if(SDL_COLORSPACEPRIMARIES(texture->colorspace) == SDL_COLOR_PRIMARIES_BT2020 &&
 | 
					 | 
				
			||||||
               SDL_COLORSPACETRANSFER(texture->colorspace) == SDL_TRANSFER_CHARACTERISTICS_PQ) {
 | 
					 | 
				
			||||||
                textureData->shader = SHADER_HDR10;
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                return SDL_SetError("Unsupported YUV colorspace");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        default:
 | 
					 | 
				
			||||||
            /* This should never happen because of the check above */
 | 
					 | 
				
			||||||
            return SDL_SetError("Unsupported YUV colorspace");
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        switch (texture->format) {
 | 
					        switch (texture->format) {
 | 
				
			||||||
        case SDL_PIXELFORMAT_P010:
 | 
					        case SDL_PIXELFORMAT_P010:
 | 
				
			||||||
            bits_per_pixel = 10;
 | 
					            bits_per_pixel = 10;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case SDL_PIXELFORMAT_P016:
 | 
					 | 
				
			||||||
            bits_per_pixel = 16;
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            bits_per_pixel = 8;
 | 
					            bits_per_pixel = 8;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        textureData->shader_params = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, bits_per_pixel);
 | 
					        textureData->YCbCr_matrix = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, bits_per_pixel);
 | 
				
			||||||
        if (!textureData->shader_params) {
 | 
					        if (!textureData->YCbCr_matrix) {
 | 
				
			||||||
            return SDL_SetError("Unsupported YUV colorspace");
 | 
					            return SDL_SetError("Unsupported YUV colorspace");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1425,7 +1424,7 @@ static int D3D11_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if (texture->format == SDL_PIXELFORMAT_NV12 || texture->format == SDL_PIXELFORMAT_NV21) {
 | 
					        if (texture->format == SDL_PIXELFORMAT_NV12 || texture->format == SDL_PIXELFORMAT_NV21) {
 | 
				
			||||||
            nvResourceViewDesc.Format = DXGI_FORMAT_R8G8_UNORM;
 | 
					            nvResourceViewDesc.Format = DXGI_FORMAT_R8G8_UNORM;
 | 
				
			||||||
        } else if (texture->format == SDL_PIXELFORMAT_P010 || texture->format == SDL_PIXELFORMAT_P016) {
 | 
					        } else if (texture->format == SDL_PIXELFORMAT_P010) {
 | 
				
			||||||
            nvResourceViewDesc.Format = DXGI_FORMAT_R16G16_UNORM;
 | 
					            nvResourceViewDesc.Format = DXGI_FORMAT_R16G16_UNORM;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1503,8 +1502,7 @@ static int D3D11_UpdateTextureInternal(D3D11_RenderData *rendererData, ID3D11Tex
 | 
				
			|||||||
    stagingTextureDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
 | 
					    stagingTextureDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
 | 
				
			||||||
    stagingTextureDesc.Usage = D3D11_USAGE_STAGING;
 | 
					    stagingTextureDesc.Usage = D3D11_USAGE_STAGING;
 | 
				
			||||||
    if (stagingTextureDesc.Format == DXGI_FORMAT_NV12 ||
 | 
					    if (stagingTextureDesc.Format == DXGI_FORMAT_NV12 ||
 | 
				
			||||||
        stagingTextureDesc.Format == DXGI_FORMAT_P010 ||
 | 
					        stagingTextureDesc.Format == DXGI_FORMAT_P010) {
 | 
				
			||||||
        stagingTextureDesc.Format == DXGI_FORMAT_P016) {
 | 
					 | 
				
			||||||
        stagingTextureDesc.Width = (stagingTextureDesc.Width + 1) & ~1;
 | 
					        stagingTextureDesc.Width = (stagingTextureDesc.Width + 1) & ~1;
 | 
				
			||||||
        stagingTextureDesc.Height = (stagingTextureDesc.Height + 1) & ~1;
 | 
					        stagingTextureDesc.Height = (stagingTextureDesc.Height + 1) & ~1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1548,8 +1546,7 @@ static int D3D11_UpdateTextureInternal(D3D11_RenderData *rendererData, ID3D11Tex
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (stagingTextureDesc.Format == DXGI_FORMAT_NV12 ||
 | 
					    if (stagingTextureDesc.Format == DXGI_FORMAT_NV12 ||
 | 
				
			||||||
        stagingTextureDesc.Format == DXGI_FORMAT_P010 ||
 | 
					        stagingTextureDesc.Format == DXGI_FORMAT_P010) {
 | 
				
			||||||
        stagingTextureDesc.Format == DXGI_FORMAT_P016) {
 | 
					 | 
				
			||||||
        /* Copy the UV plane as well */
 | 
					        /* Copy the UV plane as well */
 | 
				
			||||||
        h = (h + 1) / 2;
 | 
					        h = (h + 1) / 2;
 | 
				
			||||||
        length = (length + 1) & ~1;
 | 
					        length = (length + 1) & ~1;
 | 
				
			||||||
@@ -2170,8 +2167,71 @@ static ID3D11RenderTargetView *D3D11_GetCurrentRenderTargetView(SDL_Renderer *re
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void D3D11_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, const SDL_Texture *texture, PixelShaderConstants *constants)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    float output_headroom;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SDL_zerop(constants);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    constants->scRGB_output = (float)SDL_RenderingLinearSpace(renderer);
 | 
				
			||||||
 | 
					    constants->color_scale = cmd->data.draw.color_scale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (texture) {
 | 
				
			||||||
 | 
					        D3D11_TextureData *textureData = (D3D11_TextureData *)texture->driverdata;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        switch (texture->format) {
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_YV12:
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_IYUV:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_YUV;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_SRGB;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_NV12:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_NV12;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_SRGB;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_NV21:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_NV21;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_SRGB;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_P010:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_NV12;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_HDR10;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_RGB;
 | 
				
			||||||
 | 
					            if (texture->colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
 | 
				
			||||||
 | 
					                constants->input_type = INPUTTYPE_SCRGB;
 | 
				
			||||||
 | 
					            } else if (SDL_COLORSPACEPRIMARIES(texture->colorspace) == SDL_COLOR_PRIMARIES_BT2020 &&
 | 
				
			||||||
 | 
					                       SDL_COLORSPACETRANSFER(texture->colorspace) == SDL_TRANSFER_CHARACTERISTICS_PQ) {
 | 
				
			||||||
 | 
					                constants->input_type = INPUTTYPE_HDR10;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                constants->input_type = INPUTTYPE_UNSPECIFIED;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        constants->sdr_white_point = texture->SDR_white_point;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (renderer->target) {
 | 
				
			||||||
 | 
					            output_headroom = renderer->target->HDR_headroom;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            output_headroom = renderer->HDR_headroom;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (texture->HDR_headroom > output_headroom) {
 | 
				
			||||||
 | 
					            constants->tonemap_method = TONEMAP_CHROME;
 | 
				
			||||||
 | 
					            constants->tonemap_factor1 = (output_headroom / (texture->HDR_headroom * texture->HDR_headroom));
 | 
				
			||||||
 | 
					            constants->tonemap_factor2 = (1.0f / output_headroom);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (textureData->YCbCr_matrix) {
 | 
				
			||||||
 | 
					            SDL_memcpy(constants->YCbCr_matrix, textureData->YCbCr_matrix, sizeof(constants->YCbCr_matrix));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int D3D11_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd,
 | 
					static int D3D11_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd,
 | 
				
			||||||
                              D3D11_Shader shader, const float *shader_params,
 | 
					                              D3D11_Shader shader, const PixelShaderConstants *shader_constants,
 | 
				
			||||||
                              const int numShaderResources, ID3D11ShaderResourceView **shaderResources,
 | 
					                              const int numShaderResources, ID3D11ShaderResourceView **shaderResources,
 | 
				
			||||||
                              ID3D11SamplerState *sampler, const Float4X4 *matrix)
 | 
					                              ID3D11SamplerState *sampler, const Float4X4 *matrix)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2184,9 +2244,8 @@ static int D3D11_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
    const SDL_BlendMode blendMode = cmd->data.draw.blend;
 | 
					    const SDL_BlendMode blendMode = cmd->data.draw.blend;
 | 
				
			||||||
    ID3D11BlendState *blendState = NULL;
 | 
					    ID3D11BlendState *blendState = NULL;
 | 
				
			||||||
    SDL_bool updateSubresource = SDL_FALSE;
 | 
					    SDL_bool updateSubresource = SDL_FALSE;
 | 
				
			||||||
    SDL_bool scRGB_output = SDL_RenderingLinearSpace(renderer);
 | 
					 | 
				
			||||||
    float color_scale = cmd->data.draw.color_scale;
 | 
					 | 
				
			||||||
    PixelShaderState *shader_state = &rendererData->currentShaderState[shader];
 | 
					    PixelShaderState *shader_state = &rendererData->currentShaderState[shader];
 | 
				
			||||||
 | 
					    PixelShaderConstants solid_constants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (numShaderResources > 0) {
 | 
					    if (numShaderResources > 0) {
 | 
				
			||||||
        shaderResource = shaderResources[0];
 | 
					        shaderResource = shaderResources[0];
 | 
				
			||||||
@@ -2260,37 +2319,31 @@ static int D3D11_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
        rendererData->currentBlendState = blendState;
 | 
					        rendererData->currentBlendState = blendState;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!shader_state->constants ||
 | 
					    if (!shader_constants) {
 | 
				
			||||||
        scRGB_output != shader_state->scRGB_output ||
 | 
					        D3D11_SetupShaderConstants(renderer, cmd, NULL, &solid_constants);
 | 
				
			||||||
        color_scale != shader_state->color_scale ||
 | 
					        shader_constants = &solid_constants;
 | 
				
			||||||
        shader_params != shader_state->shader_params) {
 | 
					    }
 | 
				
			||||||
        SAFE_RELEASE(shader_state->constants);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        PixelShaderConstants constants;
 | 
					    if (!shader_state->constants ||
 | 
				
			||||||
        constants.scRGB_output = (float)scRGB_output;
 | 
					        SDL_memcmp(shader_constants, &shader_state->shader_constants, sizeof(*shader_constants)) != 0) {
 | 
				
			||||||
        constants.color_scale = color_scale;
 | 
					        SAFE_RELEASE(shader_state->constants);
 | 
				
			||||||
        if (shader_params) {
 | 
					 | 
				
			||||||
            SDL_memcpy(constants.YCbCr_matrix, shader_params, sizeof(constants.YCbCr_matrix));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        D3D11_BUFFER_DESC desc;
 | 
					        D3D11_BUFFER_DESC desc;
 | 
				
			||||||
        SDL_zero(desc);
 | 
					        SDL_zero(desc);
 | 
				
			||||||
        desc.Usage = D3D11_USAGE_DEFAULT;
 | 
					        desc.Usage = D3D11_USAGE_DEFAULT;
 | 
				
			||||||
        desc.ByteWidth = sizeof(constants);
 | 
					        desc.ByteWidth = sizeof(*shader_constants);
 | 
				
			||||||
        desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
 | 
					        desc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        D3D11_SUBRESOURCE_DATA data;
 | 
					        D3D11_SUBRESOURCE_DATA data;
 | 
				
			||||||
        SDL_zero(data);
 | 
					        SDL_zero(data);
 | 
				
			||||||
        data.pSysMem = &constants;
 | 
					        data.pSysMem = shader_constants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        HRESULT result = ID3D11Device_CreateBuffer(rendererData->d3dDevice, &desc, &data, &shader_state->constants);
 | 
					        HRESULT result = ID3D11Device_CreateBuffer(rendererData->d3dDevice, &desc, &data, &shader_state->constants);
 | 
				
			||||||
        if (FAILED(result)) {
 | 
					        if (FAILED(result)) {
 | 
				
			||||||
            WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device::CreateBuffer [create shader constants]"), result);
 | 
					            WIN_SetErrorFromHRESULT(SDL_COMPOSE_ERROR("ID3D11Device::CreateBuffer [create shader constants]"), result);
 | 
				
			||||||
            return -1;
 | 
					            return -1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        shader_state->scRGB_output = scRGB_output;
 | 
					        SDL_memcpy(&shader_state->shader_constants, shader_constants, sizeof(*shader_constants));
 | 
				
			||||||
        shader_state->color_scale = color_scale;
 | 
					 | 
				
			||||||
        shader_state->shader_params = shader_params;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Force the shader parameters to be re-set */
 | 
					        /* Force the shader parameters to be re-set */
 | 
				
			||||||
        rendererData->currentShader = SHADER_NONE;
 | 
					        rendererData->currentShader = SHADER_NONE;
 | 
				
			||||||
@@ -2302,8 +2355,8 @@ static int D3D11_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        ID3D11DeviceContext_PSSetShader(rendererData->d3dContext, rendererData->pixelShaders[shader], NULL, 0);
 | 
					        ID3D11DeviceContext_PSSetShader(rendererData->d3dContext, rendererData->pixelShaders[shader], NULL, 0);
 | 
				
			||||||
        if (rendererData->currentShaderState[shader].constants) {
 | 
					        if (shader_state->constants) {
 | 
				
			||||||
            ID3D11DeviceContext_PSSetConstantBuffers(rendererData->d3dContext, 0, 1, &rendererData->currentShaderState[shader].constants);
 | 
					            ID3D11DeviceContext_PSSetConstantBuffers(rendererData->d3dContext, 0, 1, &shader_state->constants);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        rendererData->currentShader = shader;
 | 
					        rendererData->currentShader = shader;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -2336,6 +2389,9 @@ static int D3D11_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
    D3D11_RenderData *rendererData = (D3D11_RenderData *)renderer->driverdata;
 | 
					    D3D11_RenderData *rendererData = (D3D11_RenderData *)renderer->driverdata;
 | 
				
			||||||
    D3D11_TextureData *textureData = (D3D11_TextureData *)texture->driverdata;
 | 
					    D3D11_TextureData *textureData = (D3D11_TextureData *)texture->driverdata;
 | 
				
			||||||
    ID3D11SamplerState *textureSampler;
 | 
					    ID3D11SamplerState *textureSampler;
 | 
				
			||||||
 | 
					    PixelShaderConstants constants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    D3D11_SetupShaderConstants(renderer, cmd, texture, &constants);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch (textureData->scaleMode) {
 | 
					    switch (textureData->scaleMode) {
 | 
				
			||||||
    case D3D11_FILTER_MIN_MAG_MIP_POINT:
 | 
					    case D3D11_FILTER_MIN_MAG_MIP_POINT:
 | 
				
			||||||
@@ -2355,7 +2411,7 @@ static int D3D11_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
        shaderResources[1] = textureData->mainTextureResourceViewU;
 | 
					        shaderResources[1] = textureData->mainTextureResourceViewU;
 | 
				
			||||||
        shaderResources[2] = textureData->mainTextureResourceViewV;
 | 
					        shaderResources[2] = textureData->mainTextureResourceViewV;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return D3D11_SetDrawState(renderer, cmd, textureData->shader, textureData->shader_params,
 | 
					        return D3D11_SetDrawState(renderer, cmd, textureData->shader, &constants,
 | 
				
			||||||
                                  SDL_arraysize(shaderResources), shaderResources, textureSampler, matrix);
 | 
					                                  SDL_arraysize(shaderResources), shaderResources, textureSampler, matrix);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    } else if (textureData->nv12) {
 | 
					    } else if (textureData->nv12) {
 | 
				
			||||||
@@ -2364,11 +2420,11 @@ static int D3D11_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
        shaderResources[0] = textureData->mainTextureResourceView;
 | 
					        shaderResources[0] = textureData->mainTextureResourceView;
 | 
				
			||||||
        shaderResources[1] = textureData->mainTextureResourceViewNV;
 | 
					        shaderResources[1] = textureData->mainTextureResourceViewNV;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return D3D11_SetDrawState(renderer, cmd, textureData->shader, textureData->shader_params,
 | 
					        return D3D11_SetDrawState(renderer, cmd, textureData->shader, &constants,
 | 
				
			||||||
                                  SDL_arraysize(shaderResources), shaderResources, textureSampler, matrix);
 | 
					                                  SDL_arraysize(shaderResources), shaderResources, textureSampler, matrix);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif /* SDL_HAVE_YUV */
 | 
					#endif /* SDL_HAVE_YUV */
 | 
				
			||||||
    return D3D11_SetDrawState(renderer, cmd, textureData->shader, textureData->shader_params,
 | 
					    return D3D11_SetDrawState(renderer, cmd, textureData->shader, &constants,
 | 
				
			||||||
                              1, &textureData->mainTextureResourceView, textureSampler, matrix);
 | 
					                              1, &textureData->mainTextureResourceView, textureSampler, matrix);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2791,13 +2847,13 @@ SDL_RenderDriver D3D11_RenderDriver = {
 | 
				
			|||||||
        {                            /* texture_formats */
 | 
					        {                            /* texture_formats */
 | 
				
			||||||
          SDL_PIXELFORMAT_ARGB8888,
 | 
					          SDL_PIXELFORMAT_ARGB8888,
 | 
				
			||||||
          SDL_PIXELFORMAT_XRGB8888,
 | 
					          SDL_PIXELFORMAT_XRGB8888,
 | 
				
			||||||
 | 
					          SDL_PIXELFORMAT_XBGR2101010,
 | 
				
			||||||
          SDL_PIXELFORMAT_RGBA64_FLOAT,
 | 
					          SDL_PIXELFORMAT_RGBA64_FLOAT,
 | 
				
			||||||
          SDL_PIXELFORMAT_YV12,
 | 
					          SDL_PIXELFORMAT_YV12,
 | 
				
			||||||
          SDL_PIXELFORMAT_IYUV,
 | 
					          SDL_PIXELFORMAT_IYUV,
 | 
				
			||||||
          SDL_PIXELFORMAT_NV12,
 | 
					          SDL_PIXELFORMAT_NV12,
 | 
				
			||||||
          SDL_PIXELFORMAT_NV21,
 | 
					          SDL_PIXELFORMAT_NV21,
 | 
				
			||||||
          SDL_PIXELFORMAT_P010,
 | 
					          SDL_PIXELFORMAT_P010 },
 | 
				
			||||||
          SDL_PIXELFORMAT_P016 },
 | 
					 | 
				
			||||||
        0, /* max_texture_width: will be filled in later */
 | 
					        0, /* max_texture_width: will be filled in later */
 | 
				
			||||||
        0  /* max_texture_height: will be filled in later */
 | 
					        0  /* max_texture_height: will be filled in later */
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,20 +44,8 @@
 | 
				
			|||||||
#include "D3D11_PixelShader_Textures.h"
 | 
					#include "D3D11_PixelShader_Textures.h"
 | 
				
			||||||
#undef g_main
 | 
					#undef g_main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define g_main D3D11_PixelShader_YUV
 | 
					#define g_main D3D11_PixelShader_Advanced
 | 
				
			||||||
#include "D3D11_PixelShader_YUV.h"
 | 
					#include "D3D11_PixelShader_Advanced.h"
 | 
				
			||||||
#undef g_main
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define g_main D3D11_PixelShader_NV12
 | 
					 | 
				
			||||||
#include "D3D11_PixelShader_NV12.h"
 | 
					 | 
				
			||||||
#undef g_main
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define g_main D3D11_PixelShader_NV21
 | 
					 | 
				
			||||||
#include "D3D11_PixelShader_NV21.h"
 | 
					 | 
				
			||||||
#undef g_main
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define g_main D3D11_PixelShader_HDR10
 | 
					 | 
				
			||||||
#include "D3D11_PixelShader_HDR10.h"
 | 
					 | 
				
			||||||
#undef g_main
 | 
					#undef g_main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define g_main D3D11_VertexShader
 | 
					#define g_main D3D11_VertexShader
 | 
				
			||||||
@@ -73,12 +61,7 @@ static struct
 | 
				
			|||||||
    { NULL, 0 },
 | 
					    { NULL, 0 },
 | 
				
			||||||
    { D3D11_PixelShader_Colors, sizeof(D3D11_PixelShader_Colors) },
 | 
					    { D3D11_PixelShader_Colors, sizeof(D3D11_PixelShader_Colors) },
 | 
				
			||||||
    { D3D11_PixelShader_Textures, sizeof(D3D11_PixelShader_Textures) },
 | 
					    { D3D11_PixelShader_Textures, sizeof(D3D11_PixelShader_Textures) },
 | 
				
			||||||
#if SDL_HAVE_YUV
 | 
					    { D3D11_PixelShader_Advanced, sizeof(D3D11_PixelShader_Advanced) },
 | 
				
			||||||
    { D3D11_PixelShader_YUV, sizeof(D3D11_PixelShader_YUV) },
 | 
					 | 
				
			||||||
    { D3D11_PixelShader_NV12, sizeof(D3D11_PixelShader_NV12) },
 | 
					 | 
				
			||||||
    { D3D11_PixelShader_NV21, sizeof(D3D11_PixelShader_NV21) },
 | 
					 | 
				
			||||||
    { D3D11_PixelShader_HDR10, sizeof(D3D11_PixelShader_HDR10) },
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
SDL_COMPILE_TIME_ASSERT(D3D11_shaders, SDL_arraysize(D3D11_shaders) == NUM_SHADERS);
 | 
					SDL_COMPILE_TIME_ASSERT(D3D11_shaders, SDL_arraysize(D3D11_shaders) == NUM_SHADERS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,12 +27,7 @@ typedef enum
 | 
				
			|||||||
    SHADER_NONE,
 | 
					    SHADER_NONE,
 | 
				
			||||||
    SHADER_SOLID,
 | 
					    SHADER_SOLID,
 | 
				
			||||||
    SHADER_RGB,
 | 
					    SHADER_RGB,
 | 
				
			||||||
#if SDL_HAVE_YUV
 | 
					    SHADER_ADVANCED,
 | 
				
			||||||
    SHADER_YUV,
 | 
					 | 
				
			||||||
    SHADER_NV12,
 | 
					 | 
				
			||||||
    SHADER_NV21,
 | 
					 | 
				
			||||||
    SHADER_HDR10,
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    NUM_SHADERS
 | 
					    NUM_SHADERS
 | 
				
			||||||
} D3D11_Shader;
 | 
					} D3D11_Shader;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,4 @@
 | 
				
			|||||||
fxc /T ps_4_0_level_9_1 /Fh D3D11_PixelShader_Colors.h D3D11_PixelShader_Colors.hlsl
 | 
					fxc /T ps_4_0_level_9_1 /Fh D3D11_PixelShader_Colors.h D3D11_PixelShader_Colors.hlsl
 | 
				
			||||||
fxc /T ps_4_0_level_9_1 /Fh D3D11_PixelShader_Textures.h D3D11_PixelShader_Textures.hlsl
 | 
					fxc /T ps_4_0_level_9_1 /Fh D3D11_PixelShader_Textures.h D3D11_PixelShader_Textures.hlsl
 | 
				
			||||||
fxc /T ps_4_0_level_9_1 /Fh D3D11_PixelShader_YUV.h D3D11_PixelShader_YUV.hlsl
 | 
					fxc /T ps_5_0 /Fh D3D11_PixelShader_Advanced.h D3D11_PixelShader_Advanced.hlsl
 | 
				
			||||||
fxc /T ps_4_0_level_9_1 /Fh D3D11_PixelShader_NV12.h D3D11_PixelShader_NV12.hlsl
 | 
					 | 
				
			||||||
fxc /T ps_4_0_level_9_1 /Fh D3D11_PixelShader_NV21.h D3D11_PixelShader_NV21.hlsl
 | 
					 | 
				
			||||||
fxc /T ps_5_0 /Fh D3D11_PixelShader_HDR10.h D3D11_PixelShader_HDR10.hlsl
 | 
					 | 
				
			||||||
fxc /T vs_4_0_level_9_1 /Fh D3D11_VertexShader.h D3D11_VertexShader.hlsl
 | 
					fxc /T vs_4_0_level_9_1 /Fh D3D11_VertexShader.h D3D11_VertexShader.hlsl
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1387
									
								
								src/render/direct3d12/D3D12_PixelShader_Advanced.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1387
									
								
								src/render/direct3d12/D3D12_PixelShader_Advanced.h
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,31 +1,19 @@
 | 
				
			|||||||
Texture2D theTextureY : register(t0);
 | 
					 | 
				
			||||||
Texture2D theTextureUV : register(t1);
 | 
					 | 
				
			||||||
SamplerState theSampler : register(s0);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "D3D12_PixelShader_Common.incl"
 | 
					#include "D3D12_PixelShader_Common.incl"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define NVRS \
 | 
					#define ADVANCEDRS \
 | 
				
			||||||
    "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | 
					    "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | 
				
			||||||
    "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
					    "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
				
			||||||
    "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
					    "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
				
			||||||
    "            DENY_HULL_SHADER_ROOT_ACCESS )," \
 | 
					    "            DENY_HULL_SHADER_ROOT_ACCESS )," \
 | 
				
			||||||
    "RootConstants(num32BitConstants=20, b1),"\
 | 
					    "RootConstants(num32BitConstants=24, b1),"\
 | 
				
			||||||
    "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					    "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
				
			||||||
    "DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					    "DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
				
			||||||
 | 
					    "DescriptorTable ( SRV(t2), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
				
			||||||
    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
					    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[RootSignature(NVRS)]
 | 
					[RootSignature(ADVANCEDRS)]
 | 
				
			||||||
float4 main(PixelShaderInput input) : SV_TARGET
 | 
					float4 main(PixelShaderInput input) : SV_TARGET
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float3 yuv;
 | 
					    return AdvancedPixelShader(input);
 | 
				
			||||||
    yuv.x = theTextureY.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
    yuv.yz = theTextureUV.Sample(theSampler, input.tex).gr;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 rgb;
 | 
					 | 
				
			||||||
    yuv += Yoffset.xyz;
 | 
					 | 
				
			||||||
    rgb.r = dot(yuv, Rcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.g = dot(yuv, Gcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.b = dot(yuv, Bcoeff.xyz);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return GetOutputColorFromSRGB(rgb) * input.color;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -15,7 +15,7 @@
 | 
				
			|||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					; -------------------- ----- ------ -------- -------- ------- ------
 | 
				
			||||||
; SV_Target                0   xyzw        0   TARGET   float   xyzw
 | 
					; SV_Target                0   xyzw        0   TARGET   float   xyzw
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; shader hash: d512f5b2e04a35d44c7a732df68d8917
 | 
					; shader hash: cef595d746206d54840a8f4fa9597d19
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; Pipeline Runtime Information: 
 | 
					; Pipeline Runtime Information: 
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
@@ -47,15 +47,19 @@
 | 
				
			|||||||
;   {
 | 
					;   {
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
;       float scRGB_output;                           ; Offset:    0
 | 
					;       float scRGB_output;                           ; Offset:    0
 | 
				
			||||||
;       float color_scale;                            ; Offset:    4
 | 
					;       float texture_type;                           ; Offset:    4
 | 
				
			||||||
;       float unused1;                                ; Offset:    8
 | 
					;       float input_type;                             ; Offset:    8
 | 
				
			||||||
;       float unused2;                                ; Offset:   12
 | 
					;       float color_scale;                            ; Offset:   12
 | 
				
			||||||
;       float4 Yoffset;                               ; Offset:   16
 | 
					;       float tonemap_method;                         ; Offset:   16
 | 
				
			||||||
;       float4 Rcoeff;                                ; Offset:   32
 | 
					;       float tonemap_factor1;                        ; Offset:   20
 | 
				
			||||||
;       float4 Gcoeff;                                ; Offset:   48
 | 
					;       float tonemap_factor2;                        ; Offset:   24
 | 
				
			||||||
;       float4 Bcoeff;                                ; Offset:   64
 | 
					;       float sdr_white_point;                        ; Offset:   28
 | 
				
			||||||
 | 
					;       float4 Yoffset;                               ; Offset:   32
 | 
				
			||||||
 | 
					;       float4 Rcoeff;                                ; Offset:   48
 | 
				
			||||||
 | 
					;       float4 Gcoeff;                                ; Offset:   64
 | 
				
			||||||
 | 
					;       float4 Bcoeff;                                ; Offset:   80
 | 
				
			||||||
;   
 | 
					;   
 | 
				
			||||||
;   } Constants;                                      ; Offset:    0 Size:    80
 | 
					;   } Constants;                                      ; Offset:    0 Size:    96
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; }
 | 
					; }
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
@@ -82,7 +86,7 @@ target triple = "dxil-ms-dx"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
%dx.types.Handle = type { i8* }
 | 
					%dx.types.Handle = type { i8* }
 | 
				
			||||||
%dx.types.CBufRet.f32 = type { float, float, float, float }
 | 
					%dx.types.CBufRet.f32 = type { float, float, float, float }
 | 
				
			||||||
%Constants = type { float, float, float, float, <4 x float>, <4 x float>, <4 x float>, <4 x float> }
 | 
					%Constants = type { float, float, float, float, float, float, float, float, <4 x float>, <4 x float>, <4 x float>, <4 x float> }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define void @main() {
 | 
					define void @main() {
 | 
				
			||||||
  %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 1, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					  %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 1, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
				
			||||||
@@ -91,7 +95,7 @@ define void @main() {
 | 
				
			|||||||
  %4 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					  %4 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
				
			||||||
  %5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					  %5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
				
			||||||
  %6 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 0)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					  %6 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 0)  ; CBufferLoadLegacy(handle,regIndex)
 | 
				
			||||||
  %7 = extractvalue %dx.types.CBufRet.f32 %6, 1
 | 
					  %7 = extractvalue %dx.types.CBufRet.f32 %6, 3
 | 
				
			||||||
  %8 = fmul fast float %7, %2
 | 
					  %8 = fmul fast float %7, %2
 | 
				
			||||||
  %9 = fmul fast float %7, %3
 | 
					  %9 = fmul fast float %7, %3
 | 
				
			||||||
  %10 = fmul fast float %7, %4
 | 
					  %10 = fmul fast float %7, %4
 | 
				
			||||||
@@ -132,7 +136,7 @@ attributes #2 = { nounwind readonly }
 | 
				
			|||||||
!3 = !{!"ps", i32 6, i32 0}
 | 
					!3 = !{!"ps", i32 6, i32 0}
 | 
				
			||||||
!4 = !{null, null, !5, null}
 | 
					!4 = !{null, null, !5, null}
 | 
				
			||||||
!5 = !{!6}
 | 
					!5 = !{!6}
 | 
				
			||||||
!6 = !{i32 0, %Constants* undef, !"", i32 0, i32 1, i32 1, i32 80, null}
 | 
					!6 = !{i32 0, %Constants* undef, !"", i32 0, i32 1, i32 1, i32 96, null}
 | 
				
			||||||
!7 = !{[14 x i32] [i32 12, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 2, i32 4, i32 8]}
 | 
					!7 = !{[14 x i32] [i32 12, i32 4, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 2, i32 4, i32 8]}
 | 
				
			||||||
!8 = !{void ()* @main, !"main", !9, !4, null}
 | 
					!8 = !{void ()* @main, !"main", !9, !4, null}
 | 
				
			||||||
!9 = !{!10, !16, null}
 | 
					!9 = !{!10, !16, null}
 | 
				
			||||||
@@ -148,12 +152,12 @@ attributes #2 = { nounwind readonly }
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const unsigned char g_main[] = {
 | 
					const unsigned char g_main[] = {
 | 
				
			||||||
  0x44, 0x58, 0x42, 0x43, 0xe5, 0x40, 0xb7, 0x7a, 0xe3, 0x4e, 0xbb, 0x7b,
 | 
					  0x44, 0x58, 0x42, 0x43, 0x02, 0x08, 0x1c, 0x9e, 0xe7, 0x83, 0x00, 0x57,
 | 
				
			||||||
  0x59, 0x24, 0xcb, 0xd3, 0x7c, 0x44, 0x29, 0xbc, 0x01, 0x00, 0x00, 0x00,
 | 
					  0x68, 0x79, 0x21, 0xa9, 0x0a, 0xf5, 0x0a, 0xa7, 0x01, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x19, 0x0f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
 | 
					  0x99, 0x0f, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
 | 
					  0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
 | 
				
			||||||
  0x01, 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0xed, 0x08, 0x00, 0x00,
 | 
					  0x01, 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x6d, 0x09, 0x00, 0x00,
 | 
				
			||||||
  0x09, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
 | 
					  0x89, 0x09, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
 | 
				
			||||||
  0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
					  0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
@@ -195,10 +199,10 @@ const unsigned char g_main[] = {
 | 
				
			|||||||
  0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
 | 
					  0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x24, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x14, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0xac, 0x06, 0x00,
 | 
					  0x00, 0x18, 0x00, 0x00, 0x00, 0x53, 0x54, 0x41, 0x54, 0x2c, 0x07, 0x00,
 | 
				
			||||||
  0x00, 0x60, 0x00, 0x00, 0x00, 0xab, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49,
 | 
					  0x00, 0x60, 0x00, 0x00, 0x00, 0xcb, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49,
 | 
				
			||||||
  0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x94, 0x06, 0x00,
 | 
					  0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x14, 0x07, 0x00,
 | 
				
			||||||
  0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xa2, 0x01, 0x00,
 | 
					  0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xc2, 0x01, 0x00,
 | 
				
			||||||
  0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
 | 
					  0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
 | 
					  0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
 | 
				
			||||||
  0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
 | 
					  0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
 | 
				
			||||||
@@ -222,7 +226,7 @@ const unsigned char g_main[] = {
 | 
				
			|||||||
  0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30,
 | 
					  0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30,
 | 
				
			||||||
  0x42, 0x6d, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85, 0x90, 0x47, 0x70, 0x20,
 | 
					  0x42, 0x6d, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85, 0x90, 0x47, 0x70, 0x20,
 | 
				
			||||||
  0x60, 0x18, 0x81, 0x18, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66, 0x92,
 | 
					  0x60, 0x18, 0x81, 0x18, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66, 0x92,
 | 
				
			||||||
  0x10, 0x32, 0xc6, 0x18, 0x73, 0xce, 0x49, 0x34, 0x1d, 0x08, 0x00, 0x00,
 | 
					  0x10, 0x33, 0xc6, 0x18, 0x63, 0x8c, 0x31, 0xe7, 0x9c, 0x44, 0xd3, 0x81,
 | 
				
			||||||
  0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87,
 | 
					  0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87,
 | 
				
			||||||
  0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0,
 | 
					  0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0,
 | 
				
			||||||
  0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0,
 | 
					  0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0,
 | 
				
			||||||
@@ -240,71 +244,199 @@ const unsigned char g_main[] = {
 | 
				
			|||||||
  0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2,
 | 
					  0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2,
 | 
				
			||||||
  0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
 | 
					  0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
 | 
				
			||||||
  0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x20, 0x0b, 0x04, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98,
 | 
					  0x20, 0x0b, 0x04, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98,
 | 
				
			||||||
 | 
					  0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
 | 
				
			||||||
 | 
					  0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x1c, 0x50, 0x06, 0xe5, 0x50,
 | 
				
			||||||
 | 
					  0x12, 0x85, 0x50, 0x10, 0x85, 0x51, 0x20, 0x85, 0x52, 0x30, 0x85, 0x53,
 | 
				
			||||||
 | 
					  0x40, 0x05, 0x56, 0x80, 0x01, 0x05, 0x1a, 0x50, 0x04, 0xe5, 0x41, 0xa5,
 | 
				
			||||||
 | 
					  0x24, 0xca, 0xa0, 0x10, 0x46, 0x00, 0x8a, 0xa0, 0x40, 0xe8, 0xd5, 0x00,
 | 
				
			||||||
 | 
					  0xd1, 0x19, 0x00, 0xaa, 0x33, 0x00, 0x64, 0xc7, 0x72, 0x18, 0x02, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x00, 0x79, 0x18, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0xc9, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
 | 
				
			||||||
 | 
					  0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
 | 
				
			||||||
 | 
					  0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
 | 
				
			||||||
 | 
					  0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
 | 
				
			||||||
 | 
					  0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
 | 
				
			||||||
 | 
					  0x04, 0xa2, 0x98, 0x20, 0x10, 0xc6, 0x06, 0x61, 0x20, 0x36, 0x08, 0x04,
 | 
				
			||||||
 | 
					  0x41, 0x01, 0x6e, 0x6e, 0x82, 0x40, 0x1c, 0x1b, 0x86, 0x03, 0x21, 0x26,
 | 
				
			||||||
 | 
					  0x08, 0x55, 0x18, 0x30, 0x19, 0x7a, 0x73, 0x9b, 0xa3, 0x0b, 0x73, 0xa3,
 | 
				
			||||||
 | 
					  0x9b, 0x9b, 0x20, 0x10, 0xc8, 0x06, 0x84, 0x50, 0x16, 0x62, 0x18, 0x18,
 | 
				
			||||||
 | 
					  0x60, 0x43, 0xd0, 0x6c, 0x20, 0x00, 0xc0, 0x01, 0x26, 0x08, 0x14, 0x18,
 | 
				
			||||||
 | 
					  0x90, 0x99, 0x1b, 0x93, 0x3a, 0x12, 0xfa, 0x7a, 0xab, 0xa3, 0x83, 0xab,
 | 
				
			||||||
 | 
					  0xa3, 0x9b, 0x20, 0x10, 0xc9, 0x04, 0x81, 0x50, 0x26, 0x08, 0xc4, 0xb2,
 | 
				
			||||||
 | 
					  0xc1, 0x40, 0x22, 0x89, 0x98, 0x28, 0x32, 0x74, 0x65, 0x78, 0x74, 0x75,
 | 
				
			||||||
 | 
					  0x72, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x13, 0x04, 0x82, 0xd9, 0x60,
 | 
				
			||||||
 | 
					  0x20, 0x96, 0x74, 0x4d, 0x14, 0x95, 0x34, 0x37, 0xb8, 0x3a, 0xba, 0x2f,
 | 
				
			||||||
 | 
					  0xba, 0x3c, 0xb8, 0xb2, 0x09, 0x02, 0xd1, 0x6c, 0x30, 0x90, 0x4c, 0xd2,
 | 
				
			||||||
 | 
					  0x26, 0x8a, 0xcb, 0xd8, 0x1b, 0xdb, 0x9b, 0xdc, 0xd7, 0xdc, 0x58, 0x18,
 | 
				
			||||||
 | 
					  0x5b, 0xd9, 0x04, 0x81, 0x70, 0x26, 0x08, 0xcf, 0xb7, 0x01, 0x41, 0x38,
 | 
				
			||||||
 | 
					  0xa9, 0x9b, 0x28, 0xca, 0xa3, 0x43, 0xf7, 0xe6, 0x56, 0xd6, 0x16, 0x06,
 | 
				
			||||||
 | 
					  0xf7, 0xd5, 0x56, 0x46, 0x87, 0xf6, 0x46, 0x36, 0x41, 0x20, 0x9e, 0x0d,
 | 
				
			||||||
 | 
					  0x06, 0x02, 0x06, 0x52, 0x18, 0x4c, 0x14, 0x1f, 0xba, 0x37, 0xb7, 0xb2,
 | 
				
			||||||
 | 
					  0xb6, 0x30, 0xb8, 0x2f, 0xb3, 0xb0, 0x31, 0xba, 0x37, 0xb9, 0x98, 0x09,
 | 
				
			||||||
 | 
					  0x02, 0x01, 0x6d, 0x30, 0x90, 0x31, 0x90, 0xc8, 0x60, 0xa2, 0xf8, 0xd0,
 | 
				
			||||||
 | 
					  0xbd, 0xb9, 0x95, 0xb5, 0x85, 0xc1, 0x7d, 0x99, 0x85, 0x8d, 0xd1, 0xbd,
 | 
				
			||||||
 | 
					  0xc9, 0xc9, 0x4c, 0x10, 0x88, 0x68, 0x83, 0x81, 0x98, 0x81, 0x74, 0x06,
 | 
				
			||||||
 | 
					  0x13, 0xc5, 0x67, 0x8e, 0x4c, 0xee, 0xeb, 0x0e, 0x2d, 0x8d, 0xae, 0xec,
 | 
				
			||||||
 | 
					  0x0b, 0xee, 0x2d, 0xcd, 0x8d, 0x6e, 0x82, 0x40, 0x48, 0x1b, 0x0c, 0x24,
 | 
				
			||||||
 | 
					  0x0d, 0x24, 0x35, 0x98, 0x28, 0x1e, 0x59, 0x6f, 0x66, 0x66, 0x73, 0x65,
 | 
				
			||||||
 | 
					  0x74, 0x13, 0x04, 0x62, 0xda, 0x60, 0x20, 0x6c, 0x20, 0xb5, 0xc1, 0x44,
 | 
				
			||||||
 | 
					  0xd1, 0x90, 0x1a, 0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd4, 0x06,
 | 
				
			||||||
 | 
					  0x03, 0x79, 0x03, 0x09, 0x0e, 0x26, 0x8a, 0xc6, 0xd1, 0xd8, 0x5b, 0x99,
 | 
				
			||||||
 | 
					  0x99, 0xd9, 0x04, 0x81, 0xa8, 0x36, 0x18, 0x88, 0x1c, 0x48, 0x73, 0x30,
 | 
				
			||||||
 | 
					  0x51, 0x34, 0x84, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26, 0x08, 0x84, 0xb5,
 | 
				
			||||||
 | 
					  0xc1, 0x40, 0xea, 0x40, 0xb2, 0x83, 0x89, 0xda, 0xd0, 0x30, 0x15, 0xb6,
 | 
				
			||||||
 | 
					  0x7d, 0x62, 0x50, 0x06, 0x68, 0xb0, 0x06, 0x6e, 0x10, 0x07, 0x74, 0x70,
 | 
				
			||||||
 | 
					  0x07, 0x1b, 0x06, 0x02, 0xc2, 0x83, 0x09, 0x82, 0x00, 0x6c, 0x00, 0x36,
 | 
				
			||||||
 | 
					  0x0c, 0xc4, 0x1e, 0xec, 0xc1, 0x86, 0x80, 0x0f, 0x36, 0x0c, 0x83, 0x1e,
 | 
				
			||||||
 | 
					  0xf4, 0xc1, 0x04, 0xc1, 0x12, 0x83, 0x0d, 0xc1, 0x1f, 0x90, 0x68, 0x0b,
 | 
				
			||||||
 | 
					  0x4b, 0x73, 0xe3, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46, 0x97,
 | 
				
			||||||
 | 
					  0xf6, 0xe6, 0x36, 0x41, 0x28, 0xb2, 0x09, 0x42, 0xa1, 0x6d, 0x08, 0x88,
 | 
				
			||||||
 | 
					  0x09, 0x42, 0xb1, 0x4d, 0x10, 0x0a, 0x6e, 0xc3, 0x42, 0x88, 0xc2, 0x28,
 | 
				
			||||||
 | 
					  0x90, 0x42, 0x29, 0x98, 0xc2, 0x60, 0x0a, 0xc4, 0x29, 0x00, 0x44, 0xa8,
 | 
				
			||||||
 | 
					  0x8a, 0xb0, 0x86, 0x9e, 0x9e, 0xa4, 0x88, 0x26, 0x08, 0x45, 0xb7, 0x61,
 | 
				
			||||||
 | 
					  0x19, 0x52, 0x61, 0x14, 0x4e, 0xa1, 0x14, 0x54, 0x61, 0x50, 0x85, 0xe1,
 | 
				
			||||||
 | 
					  0x14, 0x80, 0x09, 0x02, 0x71, 0xb1, 0x18, 0x7a, 0x62, 0x7a, 0x92, 0x9a,
 | 
				
			||||||
 | 
					  0x20, 0x10, 0xd8, 0x06, 0x41, 0x72, 0x85, 0x0d, 0x0b, 0x2b, 0xb4, 0xc2,
 | 
				
			||||||
 | 
					  0x28, 0x9c, 0x42, 0x29, 0xa8, 0xc2, 0x60, 0x0a, 0xac, 0x70, 0x0a, 0xaf,
 | 
				
			||||||
 | 
					  0xb0, 0x61, 0x40, 0x85, 0x55, 0x80, 0x05, 0x26, 0x53, 0x56, 0x5f, 0x54,
 | 
				
			||||||
 | 
					  0x61, 0x72, 0x67, 0x65, 0x74, 0x13, 0x84, 0xc2, 0xdb, 0xb0, 0x10, 0xb2,
 | 
				
			||||||
 | 
					  0x30, 0x0a, 0xb3, 0x50, 0x0a, 0xa7, 0x30, 0x98, 0x02, 0x71, 0x0a, 0xaf,
 | 
				
			||||||
 | 
					  0xb0, 0x21, 0xa0, 0x85, 0x0d, 0x43, 0x2c, 0xd4, 0x02, 0xb0, 0xa1, 0xd0,
 | 
				
			||||||
 | 
					  0x83, 0x50, 0xb0, 0x85, 0x07, 0xa0, 0x61, 0xc6, 0xf6, 0x16, 0x46, 0x37,
 | 
				
			||||||
 | 
					  0xc7, 0x22, 0xcd, 0x6d, 0x8e, 0x6e, 0x8e, 0xc6, 0x5c, 0xda, 0xd9, 0x17,
 | 
				
			||||||
 | 
					  0x1b, 0x19, 0x8d, 0xb9, 0xb4, 0xb3, 0xaf, 0x39, 0xba, 0x0d, 0x08, 0x2e,
 | 
				
			||||||
 | 
					  0x48, 0xb9, 0xe0, 0x0a, 0xba, 0x70, 0xed, 0xc2, 0x55, 0x85, 0x8d, 0xcd,
 | 
				
			||||||
 | 
					  0xae, 0xcd, 0x25, 0x8d, 0xac, 0xcc, 0x8d, 0x6e, 0x4a, 0x10, 0x54, 0x21,
 | 
				
			||||||
 | 
					  0xc3, 0x73, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x9b, 0x12, 0x10,
 | 
				
			||||||
 | 
					  0x4d, 0xc8, 0xf0, 0x5c, 0xec, 0xc2, 0xd8, 0xec, 0xca, 0xe4, 0xa6, 0x04,
 | 
				
			||||||
 | 
					  0x45, 0x1d, 0x32, 0x3c, 0x97, 0x39, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa6,
 | 
				
			||||||
 | 
					  0x37, 0xb2, 0x32, 0xb6, 0x29, 0x01, 0x52, 0x86, 0x0c, 0xcf, 0x45, 0xae,
 | 
				
			||||||
 | 
					  0x6c, 0xee, 0xad, 0x4e, 0x6e, 0xac, 0x6c, 0x6e, 0x4a, 0xe0, 0x54, 0x22,
 | 
				
			||||||
 | 
					  0xc3, 0x73, 0xa1, 0xcb, 0x83, 0x2b, 0x0b, 0x72, 0x73, 0x7b, 0xa3, 0x0b,
 | 
				
			||||||
 | 
					  0xa3, 0x4b, 0x7b, 0x73, 0x9b, 0x9b, 0x22, 0xe0, 0x41, 0x1f, 0xd4, 0x21,
 | 
				
			||||||
 | 
					  0xc3, 0x73, 0xb1, 0x4b, 0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2, 0x0b, 0xa3,
 | 
				
			||||||
 | 
					  0x2b, 0x9b, 0x12, 0xfc, 0x41, 0x1d, 0x32, 0x3c, 0x97, 0x32, 0x37, 0x3a,
 | 
				
			||||||
 | 
					  0xb9, 0x3c, 0xa8, 0xb7, 0x34, 0x37, 0xba, 0xb9, 0x29, 0x81, 0x2d, 0x74,
 | 
				
			||||||
 | 
					  0x21, 0xc3, 0x73, 0x19, 0x7b, 0xab, 0x73, 0xa3, 0x2b, 0x93, 0x9b, 0x9b,
 | 
				
			||||||
 | 
					  0x12, 0xec, 0x02, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d,
 | 
				
			||||||
 | 
					  0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07,
 | 
				
			||||||
 | 
					  0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80,
 | 
				
			||||||
 | 
					  0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66,
 | 
				
			||||||
 | 
					  0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d,
 | 
				
			||||||
 | 
					  0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07,
 | 
				
			||||||
 | 
					  0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03,
 | 
				
			||||||
 | 
					  0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90,
 | 
				
			||||||
 | 
					  0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50,
 | 
				
			||||||
 | 
					  0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2,
 | 
				
			||||||
 | 
					  0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39,
 | 
				
			||||||
 | 
					  0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14,
 | 
				
			||||||
 | 
					  0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07,
 | 
				
			||||||
 | 
					  0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07,
 | 
				
			||||||
 | 
					  0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87,
 | 
				
			||||||
 | 
					  0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0,
 | 
				
			||||||
 | 
					  0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8,
 | 
				
			||||||
 | 
					  0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc,
 | 
				
			||||||
 | 
					  0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6,
 | 
				
			||||||
 | 
					  0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39,
 | 
				
			||||||
 | 
					  0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f,
 | 
				
			||||||
 | 
					  0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c,
 | 
				
			||||||
 | 
					  0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87,
 | 
				
			||||||
 | 
					  0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0,
 | 
				
			||||||
 | 
					  0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50,
 | 
				
			||||||
 | 
					  0x0f, 0xf4, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41,
 | 
				
			||||||
 | 
					  0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d,
 | 
				
			||||||
 | 
					  0x04, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08,
 | 
				
			||||||
 | 
					  0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03,
 | 
				
			||||||
 | 
					  0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5,
 | 
				
			||||||
 | 
					  0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f,
 | 
				
			||||||
 | 
					  0xdc, 0xb6, 0x01, 0x10, 0x0c, 0x80, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0xce, 0xf5, 0x95, 0xd7, 0x46, 0x20, 0x6d, 0x54, 0x84, 0x0a, 0x8f,
 | 
				
			||||||
 | 
					  0x4f, 0xa9, 0x59, 0x7d, 0x19, 0x44, 0x58, 0x49, 0x4c, 0x08, 0x06, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x60, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49,
 | 
				
			||||||
 | 
					  0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xf0, 0x05, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x79, 0x01, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
 | 
				
			||||||
 | 
					  0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
 | 
				
			||||||
 | 
					  0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32,
 | 
				
			||||||
 | 
					  0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48, 0x90, 0x14,
 | 
				
			||||||
 | 
					  0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e,
 | 
				
			||||||
 | 
					  0x90, 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5,
 | 
				
			||||||
 | 
					  0x8a, 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8,
 | 
				
			||||||
 | 
					  0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86,
 | 
				
			||||||
 | 
					  0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08,
 | 
				
			||||||
 | 
					  0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x21, 0x00, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4,
 | 
				
			||||||
 | 
					  0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a,
 | 
				
			||||||
 | 
					  0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x5c, 0x23, 0x00, 0x25, 0x00, 0x14,
 | 
				
			||||||
 | 
					  0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84,
 | 
				
			||||||
 | 
					  0x14, 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb,
 | 
				
			||||||
 | 
					  0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2,
 | 
				
			||||||
 | 
					  0xb6, 0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e,
 | 
				
			||||||
 | 
					  0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10, 0x8a, 0x30,
 | 
				
			||||||
 | 
					  0x42, 0x6d, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85, 0x90, 0x47, 0x70, 0x20,
 | 
				
			||||||
 | 
					  0x60, 0x18, 0x81, 0x18, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66, 0x92,
 | 
				
			||||||
 | 
					  0x10, 0x33, 0xc6, 0x18, 0x63, 0x8c, 0x31, 0xe7, 0x9c, 0x44, 0xd3, 0x81,
 | 
				
			||||||
 | 
					  0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87,
 | 
				
			||||||
 | 
					  0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0,
 | 
				
			||||||
 | 
					  0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0,
 | 
				
			||||||
 | 
					  0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20,
 | 
				
			||||||
 | 
					  0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
 | 
				
			||||||
 | 
					  0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30,
 | 
				
			||||||
 | 
					  0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40,
 | 
				
			||||||
 | 
					  0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0,
 | 
				
			||||||
 | 
					  0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30,
 | 
				
			||||||
 | 
					  0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40,
 | 
				
			||||||
 | 
					  0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30,
 | 
				
			||||||
 | 
					  0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10,
 | 
				
			||||||
 | 
					  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10,
 | 
				
			||||||
 | 
					  0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2,
 | 
				
			||||||
 | 
					  0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
 | 
				
			||||||
 | 
					  0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
 | 
					  0x20, 0x0b, 0x04, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98,
 | 
				
			||||||
  0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
 | 
					  0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
 | 
				
			||||||
  0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x1a, 0x50, 0x06, 0xe5, 0x50,
 | 
					  0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x1c, 0x50, 0x04, 0x65, 0x50,
 | 
				
			||||||
  0x12, 0x85, 0x50, 0x10, 0x85, 0x51, 0x20, 0x05, 0x54, 0x60, 0x05, 0x18,
 | 
					  0x1e, 0x54, 0x4a, 0xa2, 0x0c, 0x0a, 0x61, 0x04, 0xa0, 0x08, 0x0a, 0x84,
 | 
				
			||||||
  0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24, 0xca, 0xa0, 0x10, 0x46, 0x00, 0x8a,
 | 
					  0xea, 0x0c, 0x00, 0xd9, 0xb1, 0x1c, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0xa0, 0x40, 0xe8, 0xd5, 0x00, 0xd1, 0x19, 0x00, 0xaa, 0x33, 0x00, 0x64,
 | 
					  0x00, 0x08, 0x04, 0x02, 0x01, 0x79, 0x18, 0x00, 0x00, 0x5c, 0x00, 0x00,
 | 
				
			||||||
  0xc7, 0x72, 0x18, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08,
 | 
					 | 
				
			||||||
  0x04, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0xaa, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63,
 | 
					  0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63,
 | 
				
			||||||
  0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03,
 | 
					  0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03,
 | 
				
			||||||
  0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a,
 | 
					  0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a,
 | 
				
			||||||
  0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b,
 | 
					  0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b,
 | 
				
			||||||
  0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0xa2, 0x98, 0x20,
 | 
					  0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0xa2, 0x98, 0x20,
 | 
				
			||||||
  0x10, 0xc6, 0x06, 0x61, 0x20, 0x36, 0x08, 0x04, 0x41, 0x01, 0x6e, 0x6e,
 | 
					  0x10, 0xc6, 0x06, 0x61, 0x20, 0x26, 0x08, 0xc4, 0xb1, 0x41, 0x18, 0x0c,
 | 
				
			||||||
  0x82, 0x40, 0x1c, 0x1b, 0x86, 0x03, 0x21, 0x26, 0x08, 0x55, 0xc7, 0x64,
 | 
					  0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26, 0x08, 0x95, 0x44, 0x60,
 | 
				
			||||||
  0xe8, 0xcd, 0x6d, 0x8e, 0x2e, 0xcc, 0x8d, 0x6e, 0x6e, 0x82, 0x40, 0x20,
 | 
					  0x82, 0x40, 0x20, 0x1b, 0x10, 0x42, 0x59, 0x88, 0x61, 0x60, 0x80, 0x0d,
 | 
				
			||||||
  0x1b, 0x10, 0x42, 0x59, 0x88, 0x61, 0x60, 0x80, 0x0d, 0x41, 0xb3, 0x81,
 | 
					  0x41, 0xb3, 0x81, 0x00, 0x00, 0x07, 0x98, 0x20, 0x58, 0xd3, 0x86, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x07, 0x98, 0x20, 0x50, 0x1c, 0x99, 0xb9, 0x31, 0xa9, 0x23,
 | 
					  0x9a, 0x20, 0x08, 0x00, 0x89, 0xb6, 0xb0, 0x34, 0x37, 0x2e, 0x53, 0x56,
 | 
				
			||||||
  0xa1, 0xaf, 0xb7, 0x3a, 0x3a, 0xb8, 0x3a, 0xba, 0x09, 0x02, 0x91, 0x4c,
 | 
					  0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x13, 0x84, 0x82,
 | 
				
			||||||
  0x10, 0x08, 0x65, 0x82, 0x40, 0x2c, 0x1b, 0x0c, 0x24, 0x92, 0x88, 0x89,
 | 
					  0x99, 0x20, 0x14, 0xcd, 0x86, 0x80, 0x98, 0x20, 0x14, 0xce, 0x04, 0xa1,
 | 
				
			||||||
  0xe2, 0x32, 0xf6, 0xc6, 0xf6, 0x26, 0xf7, 0x35, 0x37, 0x16, 0xc6, 0x56,
 | 
					  0x78, 0x36, 0x2c, 0x04, 0x55, 0x59, 0x17, 0x36, 0x60, 0x44, 0x06, 0x10,
 | 
				
			||||||
  0x36, 0x41, 0x20, 0x98, 0x09, 0xc2, 0xb3, 0x6d, 0x40, 0x10, 0x4b, 0xba,
 | 
					  0xa1, 0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22, 0x9a, 0x20, 0x14, 0xd0,
 | 
				
			||||||
  0x26, 0x8a, 0xc2, 0x78, 0xd4, 0xb9, 0xd5, 0xcd, 0x95, 0x91, 0xc5, 0x4c,
 | 
					  0x86, 0x65, 0xd8, 0xaa, 0xec, 0xe2, 0x06, 0x6e, 0xc8, 0x80, 0x09, 0x02,
 | 
				
			||||||
  0x10, 0x88, 0x66, 0x83, 0x81, 0x68, 0xd2, 0x36, 0x51, 0x3c, 0xea, 0xdc,
 | 
					  0x91, 0xb0, 0x18, 0x7a, 0x62, 0x7a, 0x92, 0x9a, 0x20, 0x10, 0xca, 0x04,
 | 
				
			||||||
  0xea, 0xe6, 0xca, 0xc8, 0x64, 0x26, 0x08, 0x84, 0xb3, 0xc1, 0x40, 0x3a,
 | 
					  0x81, 0x58, 0x36, 0x08, 0x60, 0x10, 0x06, 0x1b, 0x16, 0xef, 0xab, 0xb2,
 | 
				
			||||||
  0xc9, 0x9b, 0x28, 0x1e, 0x59, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x13,
 | 
					  0x8b, 0x1b, 0x30, 0x2f, 0x13, 0x83, 0x0d, 0x83, 0xd6, 0x8d, 0x01, 0x93,
 | 
				
			||||||
  0x04, 0xe2, 0xd9, 0x60, 0x20, 0x60, 0x20, 0x85, 0xc1, 0x44, 0xd1, 0x90,
 | 
					  0x29, 0xab, 0x2f, 0xaa, 0x30, 0xb9, 0xb3, 0x32, 0xba, 0x09, 0x42, 0x11,
 | 
				
			||||||
  0x1a, 0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd0, 0x06, 0x03, 0x19,
 | 
					  0x6d, 0x58, 0x88, 0x32, 0xa8, 0xcc, 0xe0, 0xca, 0x06, 0x8c, 0xc8, 0xc4,
 | 
				
			||||||
  0x03, 0x89, 0x0c, 0x26, 0x8a, 0xc6, 0xd1, 0xd8, 0x5b, 0x99, 0x99, 0xd9,
 | 
					  0x60, 0x43, 0x70, 0x06, 0x1b, 0x06, 0x32, 0x40, 0x03, 0x60, 0x43, 0x21,
 | 
				
			||||||
  0x04, 0x81, 0x88, 0x36, 0x18, 0x88, 0x19, 0x48, 0x67, 0x30, 0x51, 0x34,
 | 
					  0x4d, 0x69, 0xf0, 0x00, 0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2, 0xc8,
 | 
				
			||||||
  0x84, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26, 0x08, 0x84, 0xb4, 0xc1, 0x40,
 | 
					  0xca, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb, 0x32,
 | 
				
			||||||
  0xd2, 0x40, 0x52, 0x83, 0x89, 0xda, 0x90, 0x30, 0x55, 0xc6, 0x7d, 0x62,
 | 
					  0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf, 0xc5,
 | 
				
			||||||
  0x50, 0x06, 0x68, 0xb0, 0x06, 0x1b, 0x06, 0x02, 0x62, 0x83, 0x09, 0x82,
 | 
					  0x2e, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x60, 0xd4, 0x21, 0xc3, 0x73,
 | 
				
			||||||
  0x00, 0x6c, 0x00, 0x36, 0x0c, 0xc4, 0x1b, 0xbc, 0xc1, 0x86, 0x00, 0x0e,
 | 
					  0x99, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63, 0x9b,
 | 
				
			||||||
  0x36, 0x0c, 0x83, 0x1b, 0xc4, 0xc1, 0x04, 0xc1, 0xf2, 0x36, 0x04, 0x73,
 | 
					  0x12, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea, 0xe4,
 | 
				
			||||||
  0x40, 0xa2, 0x2d, 0x2c, 0xcd, 0x8d, 0xcb, 0x94, 0xd5, 0x17, 0xd4, 0xdb,
 | 
					  0xc6, 0xca, 0xe6, 0xa6, 0x04, 0x4e, 0x1d, 0x32, 0x3c, 0x17, 0xbb, 0xb4,
 | 
				
			||||||
  0x5c, 0x1a, 0x5d, 0xda, 0x9b, 0xdb, 0x04, 0xa1, 0xa8, 0x26, 0x08, 0x85,
 | 
					  0xb2, 0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30, 0xba, 0xb2, 0x29, 0x01, 0x54,
 | 
				
			||||||
  0xb5, 0x21, 0x20, 0x26, 0x08, 0xc5, 0x35, 0x41, 0x28, 0xb0, 0x0d, 0x0b,
 | 
					  0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d, 0xcd,
 | 
				
			||||||
  0x61, 0x07, 0x77, 0x80, 0x07, 0x79, 0xa0, 0x07, 0x83, 0x1e, 0x10, 0x7b,
 | 
					  0x8d, 0x6e, 0x6e, 0x4a, 0x90, 0x06, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
 | 
				
			||||||
  0x00, 0x10, 0xa1, 0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22, 0x9a, 0x20,
 | 
					 | 
				
			||||||
  0x14, 0xd9, 0x86, 0x65, 0xe8, 0x83, 0x3b, 0xd8, 0x83, 0x3c, 0xf0, 0x83,
 | 
					 | 
				
			||||||
  0xc1, 0x0f, 0x86, 0x3d, 0x00, 0x26, 0x08, 0xc4, 0xc4, 0x62, 0xe8, 0x89,
 | 
					 | 
				
			||||||
  0xe9, 0x49, 0x6a, 0x82, 0x40, 0x50, 0x1b, 0x04, 0x49, 0x14, 0x36, 0x2c,
 | 
					 | 
				
			||||||
  0xa0, 0x10, 0x0a, 0x77, 0xb0, 0x07, 0x79, 0xe0, 0x07, 0x83, 0x1e, 0x80,
 | 
					 | 
				
			||||||
  0xc2, 0x1e, 0x8c, 0xc2, 0x86, 0x81, 0x0f, 0xfe, 0x80, 0x14, 0x98, 0x4c,
 | 
					 | 
				
			||||||
  0x59, 0x7d, 0x51, 0x85, 0xc9, 0x9d, 0x95, 0xd1, 0x4d, 0x10, 0x0a, 0x6d,
 | 
					 | 
				
			||||||
  0xc3, 0x42, 0x98, 0xc2, 0x1d, 0x9c, 0x42, 0x1e, 0xec, 0xc1, 0xa0, 0x07,
 | 
					 | 
				
			||||||
  0xc4, 0x1e, 0x8c, 0xc2, 0x86, 0x00, 0x15, 0x36, 0x0c, 0xa5, 0x90, 0x0a,
 | 
					 | 
				
			||||||
  0xc0, 0x86, 0xc2, 0x0d, 0xea, 0x40, 0x15, 0x1e, 0x80, 0x86, 0x19, 0xdb,
 | 
					 | 
				
			||||||
  0x5b, 0x18, 0xdd, 0x1c, 0x8b, 0x34, 0xb7, 0x39, 0xba, 0x39, 0x1a, 0x73,
 | 
					 | 
				
			||||||
  0x69, 0x67, 0x5f, 0x6c, 0x64, 0x34, 0xe6, 0xd2, 0xce, 0xbe, 0xe6, 0xe8,
 | 
					 | 
				
			||||||
  0x36, 0x20, 0xac, 0x20, 0xb5, 0x82, 0x28, 0xb8, 0xc2, 0xf5, 0x0a, 0x57,
 | 
					 | 
				
			||||||
  0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37, 0xba, 0x29,
 | 
					 | 
				
			||||||
  0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e, 0xed, 0xcd,
 | 
					 | 
				
			||||||
  0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63, 0xb3, 0x2b,
 | 
					 | 
				
			||||||
  0x93, 0x9b, 0x12, 0x14, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0, 0xc2, 0xc8,
 | 
					 | 
				
			||||||
  0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x48, 0x19, 0x32,
 | 
					 | 
				
			||||||
  0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2, 0xb9, 0x29,
 | 
					 | 
				
			||||||
  0x81, 0x53, 0x89, 0x0c, 0xcf, 0x85, 0x2e, 0x0f, 0xae, 0x2c, 0xc8, 0xcd,
 | 
					 | 
				
			||||||
  0xed, 0x8d, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x8a, 0xc0, 0x06,
 | 
					 | 
				
			||||||
  0x71, 0x50, 0x87, 0x0c, 0xcf, 0xc5, 0x2e, 0xad, 0xec, 0x2e, 0x89, 0x6c,
 | 
					 | 
				
			||||||
  0x8a, 0x2e, 0x8c, 0xae, 0x6c, 0x4a, 0x30, 0x07, 0x75, 0xc8, 0xf0, 0x5c,
 | 
					 | 
				
			||||||
  0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0xa0, 0xde, 0xd2, 0xdc, 0xe8, 0xe6, 0xa6,
 | 
					 | 
				
			||||||
  0x04, 0xaa, 0xd0, 0x85, 0x0c, 0xcf, 0x65, 0xec, 0xad, 0xce, 0x8d, 0xae,
 | 
					 | 
				
			||||||
  0x4c, 0x6e, 0x6e, 0x4a, 0xf0, 0x0a, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
 | 
					  0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
 | 
				
			||||||
  0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
 | 
					  0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
 | 
				
			||||||
  0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
 | 
					  0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
 | 
				
			||||||
@@ -338,137 +470,19 @@ const unsigned char g_main[] = {
 | 
				
			|||||||
  0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6,
 | 
					  0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6,
 | 
				
			||||||
  0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4,
 | 
					  0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4,
 | 
				
			||||||
  0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x01, 0x10, 0x0c, 0x80, 0x34, 0x00,
 | 
					  0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x01, 0x10, 0x0c, 0x80, 0x34, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00,
 | 
					  0x00, 0x61, 0x20, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0xd5, 0x12, 0xf5, 0xb2, 0xe0, 0x4a, 0x35,
 | 
					  0x2c, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x44, 0x0a, 0x61,
 | 
				
			||||||
  0xd4, 0x4c, 0x7a, 0x73, 0x2d, 0xf6, 0x8d, 0x89, 0x17, 0x44, 0x58, 0x49,
 | 
					  0x06, 0xa0, 0x14, 0x4a, 0xae, 0xec, 0xa8, 0x94, 0x00, 0xbd, 0x11, 0x00,
 | 
				
			||||||
  0x4c, 0x08, 0x06, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x82, 0x01, 0x00,
 | 
					  0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x00, 0x5d, 0xc4, 0x52, 0x59,
 | 
				
			||||||
  0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00,
 | 
					  0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0x1b, 0x32, 0x59, 0xcd,
 | 
				
			||||||
  0x00, 0xf0, 0x05, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00,
 | 
					  0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x06, 0x97, 0x50, 0x17, 0x81,
 | 
				
			||||||
  0x00, 0x79, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00,
 | 
					  0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xd1, 0x29, 0x15, 0xe6, 0x24,
 | 
				
			||||||
  0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04,
 | 
					  0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x78, 0x8b, 0x95, 0x49, 0xca,
 | 
				
			||||||
  0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08,
 | 
					  0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x1d, 0x52, 0x68, 0xa3, 0x09,
 | 
				
			||||||
  0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b,
 | 
					  0xc1, 0x60, 0x81, 0x21, 0x1f, 0x13, 0x0c, 0xf9, 0xd8, 0x60, 0xc8, 0x67,
 | 
				
			||||||
  0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52,
 | 
					  0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x90, 0x31, 0x78, 0xbe, 0xcf, 0x1a,
 | 
				
			||||||
  0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32,
 | 
					  0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0x19, 0x83, 0xe7, 0xfb, 0x18,
 | 
				
			||||||
  0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81,
 | 
					  0x61, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x90, 0x31, 0x78, 0xbe, 0xaf,
 | 
				
			||||||
  0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00,
 | 
					  0x0a, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0x19, 0x83, 0xe7, 0xfb,
 | 
				
			||||||
  0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff,
 | 
					  0x30, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
				
			||||||
  0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03,
 | 
					 | 
				
			||||||
  0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8,
 | 
					 | 
				
			||||||
  0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60,
 | 
					 | 
				
			||||||
  0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x21, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85,
 | 
					 | 
				
			||||||
  0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90,
 | 
					 | 
				
			||||||
  0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x5c, 0x23,
 | 
					 | 
				
			||||||
  0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00,
 | 
					 | 
				
			||||||
  0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06,
 | 
					 | 
				
			||||||
  0xa1, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a,
 | 
					 | 
				
			||||||
  0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19,
 | 
					 | 
				
			||||||
  0x2e, 0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05,
 | 
					 | 
				
			||||||
  0xab, 0x10, 0x8a, 0x30, 0x42, 0x6d, 0x8e, 0x20, 0x28, 0x06, 0x23, 0x85,
 | 
					 | 
				
			||||||
  0x90, 0x47, 0x70, 0x20, 0x60, 0x18, 0x81, 0x18, 0x2e, 0xe1, 0x9c, 0x46,
 | 
					 | 
				
			||||||
  0x9a, 0x80, 0x66, 0x92, 0x10, 0x32, 0xc6, 0x18, 0x73, 0xce, 0x49, 0x34,
 | 
					 | 
				
			||||||
  0x1d, 0x08, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60,
 | 
					 | 
				
			||||||
  0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf,
 | 
					 | 
				
			||||||
  0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a,
 | 
					 | 
				
			||||||
  0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71,
 | 
					 | 
				
			||||||
  0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73,
 | 
					 | 
				
			||||||
  0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72,
 | 
					 | 
				
			||||||
  0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
 | 
					 | 
				
			||||||
  0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6,
 | 
					 | 
				
			||||||
  0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73,
 | 
					 | 
				
			||||||
  0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74,
 | 
					 | 
				
			||||||
  0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71,
 | 
					 | 
				
			||||||
  0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43,
 | 
					 | 
				
			||||||
  0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x20, 0x0b, 0x04, 0x00, 0x00, 0x0e, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26,
 | 
					 | 
				
			||||||
  0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x1a,
 | 
					 | 
				
			||||||
  0x50, 0x04, 0x65, 0x50, 0x1e, 0x54, 0x4a, 0xa2, 0x0c, 0x0a, 0x61, 0x04,
 | 
					 | 
				
			||||||
  0xa0, 0x08, 0x0a, 0x84, 0xea, 0x0c, 0x00, 0xd9, 0xb1, 0x1c, 0x86, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x04, 0x02, 0x01, 0x79, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x5c, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
 | 
					 | 
				
			||||||
  0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
 | 
					 | 
				
			||||||
  0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
 | 
					 | 
				
			||||||
  0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
 | 
					 | 
				
			||||||
  0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
 | 
					 | 
				
			||||||
  0x04, 0xa2, 0x98, 0x20, 0x10, 0xc6, 0x06, 0x61, 0x20, 0x26, 0x08, 0xc4,
 | 
					 | 
				
			||||||
  0xb1, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26,
 | 
					 | 
				
			||||||
  0x08, 0x95, 0x44, 0x60, 0x82, 0x40, 0x20, 0x1b, 0x10, 0x42, 0x59, 0x88,
 | 
					 | 
				
			||||||
  0x61, 0x60, 0x80, 0x0d, 0x41, 0xb3, 0x81, 0x00, 0x00, 0x07, 0x98, 0x20,
 | 
					 | 
				
			||||||
  0x58, 0xd3, 0x86, 0x00, 0x9a, 0x20, 0x08, 0x00, 0x89, 0xb6, 0xb0, 0x34,
 | 
					 | 
				
			||||||
  0x37, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
 | 
					 | 
				
			||||||
  0x6e, 0x13, 0x84, 0x82, 0x99, 0x20, 0x14, 0xcd, 0x86, 0x80, 0x98, 0x20,
 | 
					 | 
				
			||||||
  0x14, 0xce, 0x04, 0xa1, 0x78, 0x36, 0x2c, 0x04, 0x55, 0x59, 0x17, 0x36,
 | 
					 | 
				
			||||||
  0x60, 0x44, 0x06, 0x10, 0xa1, 0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22,
 | 
					 | 
				
			||||||
  0x9a, 0x20, 0x14, 0xd0, 0x86, 0x65, 0xd8, 0xaa, 0xec, 0xe2, 0x06, 0x6e,
 | 
					 | 
				
			||||||
  0xc8, 0x80, 0x09, 0x02, 0x91, 0xb0, 0x18, 0x7a, 0x62, 0x7a, 0x92, 0x9a,
 | 
					 | 
				
			||||||
  0x20, 0x10, 0xca, 0x04, 0x81, 0x58, 0x36, 0x08, 0x60, 0x10, 0x06, 0x1b,
 | 
					 | 
				
			||||||
  0x16, 0xef, 0xab, 0xb2, 0x8b, 0x1b, 0x30, 0x2f, 0x13, 0x83, 0x0d, 0x83,
 | 
					 | 
				
			||||||
  0xd6, 0x8d, 0x01, 0x93, 0x29, 0xab, 0x2f, 0xaa, 0x30, 0xb9, 0xb3, 0x32,
 | 
					 | 
				
			||||||
  0xba, 0x09, 0x42, 0x11, 0x6d, 0x58, 0x88, 0x32, 0xa8, 0xcc, 0xe0, 0xca,
 | 
					 | 
				
			||||||
  0x06, 0x8c, 0xc8, 0xc4, 0x60, 0x43, 0x70, 0x06, 0x1b, 0x06, 0x32, 0x40,
 | 
					 | 
				
			||||||
  0x03, 0x60, 0x43, 0x21, 0x4d, 0x69, 0xf0, 0x00, 0x55, 0xd8, 0xd8, 0xec,
 | 
					 | 
				
			||||||
  0xda, 0x5c, 0xd2, 0xc8, 0xca, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32,
 | 
					 | 
				
			||||||
  0x3c, 0x17, 0xbb, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1,
 | 
					 | 
				
			||||||
  0x84, 0x0c, 0xcf, 0xc5, 0x2e, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x60,
 | 
					 | 
				
			||||||
  0xd4, 0x21, 0xc3, 0x73, 0x99, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a,
 | 
					 | 
				
			||||||
  0x23, 0x2b, 0x63, 0x9b, 0x12, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca,
 | 
					 | 
				
			||||||
  0xe6, 0xde, 0xea, 0xe4, 0xc6, 0xca, 0xe6, 0xa6, 0x04, 0x4e, 0x1d, 0x32,
 | 
					 | 
				
			||||||
  0x3c, 0x17, 0xbb, 0xb4, 0xb2, 0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30, 0xba,
 | 
					 | 
				
			||||||
  0xb2, 0x29, 0x01, 0x54, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e,
 | 
					 | 
				
			||||||
  0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x90, 0x06, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80,
 | 
					 | 
				
			||||||
  0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84,
 | 
					 | 
				
			||||||
  0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c,
 | 
					 | 
				
			||||||
  0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42,
 | 
					 | 
				
			||||||
  0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88,
 | 
					 | 
				
			||||||
  0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c,
 | 
					 | 
				
			||||||
  0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79,
 | 
					 | 
				
			||||||
  0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70,
 | 
					 | 
				
			||||||
  0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f,
 | 
					 | 
				
			||||||
  0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4,
 | 
					 | 
				
			||||||
  0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30,
 | 
					 | 
				
			||||||
  0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc,
 | 
					 | 
				
			||||||
  0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b,
 | 
					 | 
				
			||||||
  0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70,
 | 
					 | 
				
			||||||
  0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76,
 | 
					 | 
				
			||||||
  0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72,
 | 
					 | 
				
			||||||
  0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e,
 | 
					 | 
				
			||||||
  0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1,
 | 
					 | 
				
			||||||
  0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21,
 | 
					 | 
				
			||||||
  0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8,
 | 
					 | 
				
			||||||
  0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94,
 | 
					 | 
				
			||||||
  0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc,
 | 
					 | 
				
			||||||
  0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c,
 | 
					 | 
				
			||||||
  0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e,
 | 
					 | 
				
			||||||
  0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e,
 | 
					 | 
				
			||||||
  0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x71, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d,
 | 
					 | 
				
			||||||
  0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c,
 | 
					 | 
				
			||||||
  0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x04, 0xd2, 0x70, 0xf9,
 | 
					 | 
				
			||||||
  0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58,
 | 
					 | 
				
			||||||
  0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50,
 | 
					 | 
				
			||||||
  0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d,
 | 
					 | 
				
			||||||
  0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x01, 0x10,
 | 
					 | 
				
			||||||
  0x0c, 0x80, 0x34, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x29, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x44, 0x0a, 0x61, 0x06, 0xa0, 0x14, 0x4a, 0xae, 0xec, 0xa8, 0x94,
 | 
					 | 
				
			||||||
  0x00, 0xbd, 0x11, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x00,
 | 
					 | 
				
			||||||
  0x5d, 0xc4, 0x52, 0x59, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18,
 | 
					 | 
				
			||||||
  0x1b, 0x32, 0x59, 0xcd, 0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x06,
 | 
					 | 
				
			||||||
  0x97, 0x50, 0x17, 0x81, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xd1,
 | 
					 | 
				
			||||||
  0x29, 0x15, 0xe6, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x78,
 | 
					 | 
				
			||||||
  0x8b, 0x95, 0x49, 0xca, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x1d,
 | 
					 | 
				
			||||||
  0x52, 0x68, 0xa3, 0x09, 0x41, 0x60, 0x81, 0x21, 0x1f, 0x13, 0x0c, 0xf9,
 | 
					 | 
				
			||||||
  0xd8, 0x60, 0xc8, 0x67, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x90, 0x31,
 | 
					 | 
				
			||||||
  0x78, 0xbe, 0xcf, 0x1a, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0x19,
 | 
					 | 
				
			||||||
  0x83, 0xe7, 0xfb, 0x18, 0x61, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x90,
 | 
					 | 
				
			||||||
  0x31, 0x78, 0xbe, 0xaf, 0x0a, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00,
 | 
					 | 
				
			||||||
  0x19, 0x83, 0xe7, 0xfb, 0x30, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@
 | 
				
			|||||||
    "DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
					    "DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
				
			||||||
    "DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
					    "DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
				
			||||||
    "DENY_HULL_SHADER_ROOT_ACCESS )," \
 | 
					    "DENY_HULL_SHADER_ROOT_ACCESS )," \
 | 
				
			||||||
    "RootConstants(num32BitConstants=20, b1)"
 | 
					    "RootConstants(num32BitConstants=24, b1)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[RootSignature(ColorRS)]
 | 
					[RootSignature(ColorRS)]
 | 
				
			||||||
float4 main(PixelShaderInput input) : SV_TARGET0
 | 
					float4 main(PixelShaderInput input) : SV_TARGET0
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					Texture2D texture0 : register(t0);
 | 
				
			||||||
 | 
					Texture2D texture1 : register(t1);
 | 
				
			||||||
 | 
					Texture2D texture2 : register(t2);
 | 
				
			||||||
 | 
					SamplerState sampler0 : register(s0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct PixelShaderInput
 | 
					struct PixelShaderInput
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float4 pos : SV_POSITION;
 | 
					    float4 pos : SV_POSITION;
 | 
				
			||||||
@@ -5,12 +11,33 @@ struct PixelShaderInput
 | 
				
			|||||||
    float4 color : COLOR0;
 | 
					    float4 color : COLOR0;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// These should mirror the definitions in SDL_render_d3d12.c
 | 
				
			||||||
 | 
					static const float TONEMAP_NONE = 0;
 | 
				
			||||||
 | 
					static const float TONEMAP_LINEAR = 1;
 | 
				
			||||||
 | 
					static const float TONEMAP_CHROME = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NONE = 0;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_RGB = 1;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NV12 = 2;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NV21 = 3;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_YUV = 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const float INPUTTYPE_UNSPECIFIED = 0;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_SRGB = 1;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_SCRGB = 2;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_HDR10 = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cbuffer Constants : register(b1)
 | 
					cbuffer Constants : register(b1)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float scRGB_output;
 | 
					    float scRGB_output;
 | 
				
			||||||
 | 
					    float texture_type;
 | 
				
			||||||
 | 
					    float input_type;
 | 
				
			||||||
    float color_scale;
 | 
					    float color_scale;
 | 
				
			||||||
    float unused1;
 | 
					
 | 
				
			||||||
    float unused2;
 | 
					    float tonemap_method;
 | 
				
			||||||
 | 
					    float tonemap_factor1;
 | 
				
			||||||
 | 
					    float tonemap_factor2;
 | 
				
			||||||
 | 
					    float sdr_white_point;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    float4 Yoffset;
 | 
					    float4 Yoffset;
 | 
				
			||||||
    float4 Rcoeff;
 | 
					    float4 Rcoeff;
 | 
				
			||||||
@@ -18,15 +45,17 @@ cbuffer Constants : register(b1)
 | 
				
			|||||||
    float4 Bcoeff;
 | 
					    float4 Bcoeff;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float3 scRGBtoNits(float3 v)
 | 
					static const float3x3 mat709to2020 = {
 | 
				
			||||||
{
 | 
					    { 0.627404, 0.329283, 0.043313 },
 | 
				
			||||||
    return v * 80.0;
 | 
					    { 0.069097, 0.919541, 0.011362 },
 | 
				
			||||||
}
 | 
					    { 0.016391, 0.088013, 0.895595 }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float3 scRGBfromNits(float3 v)
 | 
					static const float3x3 mat2020to709 = {
 | 
				
			||||||
{
 | 
					    { 1.660496, -0.587656, -0.072840 },
 | 
				
			||||||
    return v / 80.0;
 | 
					    { -0.124547, 1.132895, -0.008348 },
 | 
				
			||||||
}
 | 
					    { -0.018154, -0.100597, 1.118751 }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float sRGBtoLinear(float v)
 | 
					float sRGBtoLinear(float v)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -48,6 +77,92 @@ float sRGBfromLinear(float v)
 | 
				
			|||||||
    return v;
 | 
					    return v;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float3 PQtoLinear(float3 v)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    const float c1 = 0.8359375;
 | 
				
			||||||
 | 
					    const float c2 = 18.8515625;
 | 
				
			||||||
 | 
					    const float c3 = 18.6875;
 | 
				
			||||||
 | 
					    const float oo_m1 = 1.0 / 0.1593017578125;
 | 
				
			||||||
 | 
					    const float oo_m2 = 1.0 / 78.84375;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    float3 num = max(pow(abs(v), oo_m2) - c1, 0.0);
 | 
				
			||||||
 | 
					    float3 den = c2 - c3 * pow(abs(v), oo_m2);
 | 
				
			||||||
 | 
					    return (10000.0 * pow(abs(num / den), oo_m1) / sdr_white_point);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float3 ApplyTonemap(float3 v)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (tonemap_method == TONEMAP_LINEAR) {
 | 
				
			||||||
 | 
					        v *= tonemap_factor1;
 | 
				
			||||||
 | 
					    } else if (tonemap_method == TONEMAP_CHROME) {
 | 
				
			||||||
 | 
					        if (input_type == INPUTTYPE_SCRGB) {
 | 
				
			||||||
 | 
					            // Convert to BT.2020 colorspace for tone mapping
 | 
				
			||||||
 | 
					            v = mul(mat709to2020, v);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        float vmax = max(v.r, max(v.g, v.b));
 | 
				
			||||||
 | 
					        if (vmax > 0.0) {
 | 
				
			||||||
 | 
					            float scale = (1.0 + tonemap_factor1 * vmax) / (1.0 + tonemap_factor2 * vmax);
 | 
				
			||||||
 | 
					            v *= scale;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (input_type == INPUTTYPE_SCRGB) {
 | 
				
			||||||
 | 
					            // Convert to BT.709 colorspace after tone mapping
 | 
				
			||||||
 | 
					            v = mul(mat2020to709, v);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return v;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float4 GetInputColor(PixelShaderInput input)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    float4 rgba;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (texture_type == TEXTURETYPE_NONE) {
 | 
				
			||||||
 | 
					        rgba = 1.0;
 | 
				
			||||||
 | 
					    } else if (texture_type == TEXTURETYPE_RGB) {
 | 
				
			||||||
 | 
					        rgba = texture0.Sample(sampler0, input.tex);
 | 
				
			||||||
 | 
					    } else if (texture_type == TEXTURETYPE_NV12) {
 | 
				
			||||||
 | 
					        float3 yuv;
 | 
				
			||||||
 | 
					        yuv.x = texture0.Sample(sampler0, input.tex).r;
 | 
				
			||||||
 | 
					        yuv.yz = texture1.Sample(sampler0, input.tex).rg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        yuv += Yoffset.xyz;
 | 
				
			||||||
 | 
					        rgba.r = dot(yuv, Rcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.g = dot(yuv, Gcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.b = dot(yuv, Bcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.a = 1.0;
 | 
				
			||||||
 | 
					    } else if (texture_type == TEXTURETYPE_NV21) {
 | 
				
			||||||
 | 
					        float3 yuv;
 | 
				
			||||||
 | 
					        yuv.x = texture0.Sample(sampler0, input.tex).r;
 | 
				
			||||||
 | 
					        yuv.yz = texture1.Sample(sampler0, input.tex).gr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        yuv += Yoffset.xyz;
 | 
				
			||||||
 | 
					        rgba.r = dot(yuv, Rcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.g = dot(yuv, Gcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.b = dot(yuv, Bcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.a = 1.0;
 | 
				
			||||||
 | 
					    } else if (texture_type == TEXTURETYPE_YUV) {
 | 
				
			||||||
 | 
					        float3 yuv;
 | 
				
			||||||
 | 
					        yuv.x = texture0.Sample(sampler0, input.tex).r;
 | 
				
			||||||
 | 
					        yuv.y = texture1.Sample(sampler0, input.tex).r;
 | 
				
			||||||
 | 
					        yuv.z = texture2.Sample(sampler0, input.tex).r;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        yuv += Yoffset.xyz;
 | 
				
			||||||
 | 
					        rgba.r = dot(yuv, Rcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.g = dot(yuv, Gcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.b = dot(yuv, Bcoeff.xyz);
 | 
				
			||||||
 | 
					        rgba.a = 1.0;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        // Error!
 | 
				
			||||||
 | 
					        rgba.r = 1.0;
 | 
				
			||||||
 | 
					        rgba.g = 0.0;
 | 
				
			||||||
 | 
					        rgba.b = 0.0;
 | 
				
			||||||
 | 
					        rgba.a = 1.0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return rgba;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float4 GetOutputColor(float4 rgba)
 | 
					float4 GetOutputColor(float4 rgba)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float4 output;
 | 
					    float4 output;
 | 
				
			||||||
@@ -58,9 +173,9 @@ float4 GetOutputColor(float4 rgba)
 | 
				
			|||||||
    return output;
 | 
					    return output;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float4 GetOutputColorFromSRGB(float3 rgb)
 | 
					float3 GetOutputColorFromSRGB(float3 rgb)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float4 output;
 | 
					    float3 output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (scRGB_output) {
 | 
					    if (scRGB_output) {
 | 
				
			||||||
        rgb.r = sRGBtoLinear(rgb.r);
 | 
					        rgb.r = sRGBtoLinear(rgb.r);
 | 
				
			||||||
@@ -69,17 +184,15 @@ float4 GetOutputColorFromSRGB(float3 rgb)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    output.rgb = rgb * color_scale;
 | 
					    output.rgb = rgb * color_scale;
 | 
				
			||||||
    output.a = 1.0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return output;
 | 
					    return output;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float4 GetOutputColorFromSCRGB(float3 rgb)
 | 
					float3 GetOutputColorFromLinear(float3 rgb)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float4 output;
 | 
					    float3 output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    output.rgb = rgb * color_scale;
 | 
					    output.rgb = rgb * color_scale;
 | 
				
			||||||
    output.a = 1.0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!scRGB_output) {
 | 
					    if (!scRGB_output) {
 | 
				
			||||||
        output.r = sRGBfromLinear(output.r);
 | 
					        output.r = sRGBfromLinear(output.r);
 | 
				
			||||||
@@ -90,3 +203,33 @@ float4 GetOutputColorFromSCRGB(float3 rgb)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    return output;
 | 
					    return output;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float4 AdvancedPixelShader(PixelShaderInput input)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    float4 rgba = GetInputColor(input);
 | 
				
			||||||
 | 
					    float4 output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (input_type == INPUTTYPE_HDR10) {
 | 
				
			||||||
 | 
					        rgba.rgb = PQtoLinear(rgba.rgb);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (tonemap_method != TONEMAP_NONE) {
 | 
				
			||||||
 | 
					        rgba.rgb = ApplyTonemap(rgba.rgb);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (input_type == INPUTTYPE_SRGB) {
 | 
				
			||||||
 | 
					        output.rgb = GetOutputColorFromSRGB(rgba.rgb);
 | 
				
			||||||
 | 
					        output.a = rgba.a;
 | 
				
			||||||
 | 
					    } else if (input_type == INPUTTYPE_SCRGB) {
 | 
				
			||||||
 | 
					        output.rgb = GetOutputColorFromLinear(rgba.rgb);
 | 
				
			||||||
 | 
					        output.a = rgba.a;
 | 
				
			||||||
 | 
					    } else if (input_type == INPUTTYPE_HDR10) {
 | 
				
			||||||
 | 
					        rgba.rgb = mul(mat2020to709, rgba.rgb);
 | 
				
			||||||
 | 
					        output.rgb = GetOutputColorFromLinear(rgba.rgb);
 | 
				
			||||||
 | 
					        output.a = rgba.a;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        output = GetOutputColor(rgba);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return output * input.color;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,856 +0,0 @@
 | 
				
			|||||||
#if 0
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Input signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
; SV_Position              0   xyzw        0      POS   float       
 | 
					 | 
				
			||||||
; TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
					 | 
				
			||||||
; COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Output signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
; SV_Target                0   xyzw        0   TARGET   float   xyzw
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; shader hash: 0f451978083c5fe5c4bbcb00819d5ecb
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Pipeline Runtime Information: 
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Pixel Shader
 | 
					 | 
				
			||||||
; DepthOutput=0
 | 
					 | 
				
			||||||
; SampleFrequency=0
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Input signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index             InterpMode DynIdx
 | 
					 | 
				
			||||||
; -------------------- ----- ---------------------- ------
 | 
					 | 
				
			||||||
; SV_Position              0          noperspective       
 | 
					 | 
				
			||||||
; TEXCOORD                 0                 linear       
 | 
					 | 
				
			||||||
; COLOR                    0                 linear       
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Output signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index             InterpMode DynIdx
 | 
					 | 
				
			||||||
; -------------------- ----- ---------------------- ------
 | 
					 | 
				
			||||||
; SV_Target                0                              
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Buffer Definitions:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; cbuffer Constants
 | 
					 | 
				
			||||||
; {
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;   struct Constants
 | 
					 | 
				
			||||||
;   {
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;       float scRGB_output;                           ; Offset:    0
 | 
					 | 
				
			||||||
;       float color_scale;                            ; Offset:    4
 | 
					 | 
				
			||||||
;       float unused1;                                ; Offset:    8
 | 
					 | 
				
			||||||
;       float unused2;                                ; Offset:   12
 | 
					 | 
				
			||||||
;       float4 Yoffset;                               ; Offset:   16
 | 
					 | 
				
			||||||
;       float4 Rcoeff;                                ; Offset:   32
 | 
					 | 
				
			||||||
;       float4 Gcoeff;                                ; Offset:   48
 | 
					 | 
				
			||||||
;       float4 Bcoeff;                                ; Offset:   64
 | 
					 | 
				
			||||||
;   
 | 
					 | 
				
			||||||
;   } Constants;                                      ; Offset:    0 Size:    80
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; }
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Resource Bindings:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                                 Type  Format         Dim      ID      HLSL Bind  Count
 | 
					 | 
				
			||||||
; ------------------------------ ---------- ------- ----------- ------- -------------- ------
 | 
					 | 
				
			||||||
; Constants                         cbuffer      NA          NA     CB0            cb1     1
 | 
					 | 
				
			||||||
; theSampler                        sampler      NA          NA      S0             s0     1
 | 
					 | 
				
			||||||
; theTextureY                       texture     f32          2d      T0             t0     1
 | 
					 | 
				
			||||||
; theTextureUV                      texture     f32          2d      T1             t1     1
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; ViewId state:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Number of inputs: 12, outputs: 4
 | 
					 | 
				
			||||||
; Outputs dependent on ViewId: {  }
 | 
					 | 
				
			||||||
; Inputs contributing to computation of Outputs:
 | 
					 | 
				
			||||||
;   output 0 depends on inputs: { 4, 5, 8 }
 | 
					 | 
				
			||||||
;   output 1 depends on inputs: { 4, 5, 9 }
 | 
					 | 
				
			||||||
;   output 2 depends on inputs: { 4, 5, 10 }
 | 
					 | 
				
			||||||
;   output 3 depends on inputs: { 11 }
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f64:64-n8:16:32:64"
 | 
					 | 
				
			||||||
target triple = "dxil-ms-dx"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
%dx.types.Handle = type { i8* }
 | 
					 | 
				
			||||||
%dx.types.ResRet.f32 = type { float, float, float, float, i32 }
 | 
					 | 
				
			||||||
%dx.types.CBufRet.f32 = type { float, float, float, float }
 | 
					 | 
				
			||||||
%"class.Texture2D<vector<float, 4> >" = type { <4 x float>, %"class.Texture2D<vector<float, 4> >::mips_type" }
 | 
					 | 
				
			||||||
%"class.Texture2D<vector<float, 4> >::mips_type" = type { i32 }
 | 
					 | 
				
			||||||
%Constants = type { float, float, float, float, <4 x float>, <4 x float>, <4 x float>, <4 x float> }
 | 
					 | 
				
			||||||
%struct.SamplerState = type { i32 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
define void @main() {
 | 
					 | 
				
			||||||
  %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 1, i32 1, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %2 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %3 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 3, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %4 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 1, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %6 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %7 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %8 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %9 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %10 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %11 = call %dx.types.ResRet.f32 @dx.op.sample.f32(i32 60, %dx.types.Handle %2, %dx.types.Handle %3, float %9, float %10, float undef, float undef, i32 0, i32 0, i32 undef, float undef)  ; Sample(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp)
 | 
					 | 
				
			||||||
  %12 = extractvalue %dx.types.ResRet.f32 %11, 0
 | 
					 | 
				
			||||||
  %13 = call %dx.types.ResRet.f32 @dx.op.sample.f32(i32 60, %dx.types.Handle %1, %dx.types.Handle %3, float %9, float %10, float undef, float undef, i32 0, i32 0, i32 undef, float undef)  ; Sample(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp)
 | 
					 | 
				
			||||||
  %14 = extractvalue %dx.types.ResRet.f32 %13, 0
 | 
					 | 
				
			||||||
  %15 = extractvalue %dx.types.ResRet.f32 %13, 1
 | 
					 | 
				
			||||||
  %16 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 1)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %17 = extractvalue %dx.types.CBufRet.f32 %16, 0
 | 
					 | 
				
			||||||
  %18 = extractvalue %dx.types.CBufRet.f32 %16, 1
 | 
					 | 
				
			||||||
  %19 = extractvalue %dx.types.CBufRet.f32 %16, 2
 | 
					 | 
				
			||||||
  %20 = fadd fast float %17, %12
 | 
					 | 
				
			||||||
  %21 = fadd fast float %18, %14
 | 
					 | 
				
			||||||
  %22 = fadd fast float %19, %15
 | 
					 | 
				
			||||||
  %23 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 2)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %24 = extractvalue %dx.types.CBufRet.f32 %23, 0
 | 
					 | 
				
			||||||
  %25 = extractvalue %dx.types.CBufRet.f32 %23, 1
 | 
					 | 
				
			||||||
  %26 = extractvalue %dx.types.CBufRet.f32 %23, 2
 | 
					 | 
				
			||||||
  %27 = call float @dx.op.dot3.f32(i32 55, float %20, float %21, float %22, float %24, float %25, float %26)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %28 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 3)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %29 = extractvalue %dx.types.CBufRet.f32 %28, 0
 | 
					 | 
				
			||||||
  %30 = extractvalue %dx.types.CBufRet.f32 %28, 1
 | 
					 | 
				
			||||||
  %31 = extractvalue %dx.types.CBufRet.f32 %28, 2
 | 
					 | 
				
			||||||
  %32 = call float @dx.op.dot3.f32(i32 55, float %20, float %21, float %22, float %29, float %30, float %31)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %33 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 4)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %34 = extractvalue %dx.types.CBufRet.f32 %33, 0
 | 
					 | 
				
			||||||
  %35 = extractvalue %dx.types.CBufRet.f32 %33, 1
 | 
					 | 
				
			||||||
  %36 = extractvalue %dx.types.CBufRet.f32 %33, 2
 | 
					 | 
				
			||||||
  %37 = call float @dx.op.dot3.f32(i32 55, float %20, float %21, float %22, float %34, float %35, float %36)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %38 = call float @dx.op.unary.f32(i32 6, float %27)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %39 = call float @dx.op.unary.f32(i32 6, float %32)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %40 = call float @dx.op.unary.f32(i32 6, float %37)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %41 = call float @dx.op.unary.f32(i32 23, float %38)  ; Log(value)
 | 
					 | 
				
			||||||
  %42 = call float @dx.op.unary.f32(i32 23, float %39)  ; Log(value)
 | 
					 | 
				
			||||||
  %43 = call float @dx.op.unary.f32(i32 23, float %40)  ; Log(value)
 | 
					 | 
				
			||||||
  %44 = fmul fast float %41, 0x3F89F9B580000000
 | 
					 | 
				
			||||||
  %45 = fmul fast float %42, 0x3F89F9B580000000
 | 
					 | 
				
			||||||
  %46 = fmul fast float %43, 0x3F89F9B580000000
 | 
					 | 
				
			||||||
  %47 = call float @dx.op.unary.f32(i32 21, float %44)  ; Exp(value)
 | 
					 | 
				
			||||||
  %48 = call float @dx.op.unary.f32(i32 21, float %45)  ; Exp(value)
 | 
					 | 
				
			||||||
  %49 = call float @dx.op.unary.f32(i32 21, float %46)  ; Exp(value)
 | 
					 | 
				
			||||||
  %50 = fadd fast float %47, -8.359375e-01
 | 
					 | 
				
			||||||
  %51 = fadd fast float %48, -8.359375e-01
 | 
					 | 
				
			||||||
  %52 = fadd fast float %49, -8.359375e-01
 | 
					 | 
				
			||||||
  %53 = call float @dx.op.binary.f32(i32 35, float %50, float 0.000000e+00)  ; FMax(a,b)
 | 
					 | 
				
			||||||
  %54 = call float @dx.op.binary.f32(i32 35, float %51, float 0.000000e+00)  ; FMax(a,b)
 | 
					 | 
				
			||||||
  %55 = call float @dx.op.binary.f32(i32 35, float %52, float 0.000000e+00)  ; FMax(a,b)
 | 
					 | 
				
			||||||
  %56 = fmul fast float %47, 1.868750e+01
 | 
					 | 
				
			||||||
  %57 = fmul fast float %48, 1.868750e+01
 | 
					 | 
				
			||||||
  %58 = fmul fast float %49, 1.868750e+01
 | 
					 | 
				
			||||||
  %59 = fsub fast float 0x4032DA0000000000, %56
 | 
					 | 
				
			||||||
  %60 = fsub fast float 0x4032DA0000000000, %57
 | 
					 | 
				
			||||||
  %61 = fsub fast float 0x4032DA0000000000, %58
 | 
					 | 
				
			||||||
  %62 = fdiv fast float %53, %59
 | 
					 | 
				
			||||||
  %63 = fdiv fast float %54, %60
 | 
					 | 
				
			||||||
  %64 = fdiv fast float %55, %61
 | 
					 | 
				
			||||||
  %65 = call float @dx.op.unary.f32(i32 6, float %62)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %66 = call float @dx.op.unary.f32(i32 6, float %63)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %67 = call float @dx.op.unary.f32(i32 6, float %64)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %68 = call float @dx.op.unary.f32(i32 23, float %65)  ; Log(value)
 | 
					 | 
				
			||||||
  %69 = call float @dx.op.unary.f32(i32 23, float %66)  ; Log(value)
 | 
					 | 
				
			||||||
  %70 = call float @dx.op.unary.f32(i32 23, float %67)  ; Log(value)
 | 
					 | 
				
			||||||
  %71 = fmul fast float %68, 0x40191C0D60000000
 | 
					 | 
				
			||||||
  %72 = fmul fast float %69, 0x40191C0D60000000
 | 
					 | 
				
			||||||
  %73 = fmul fast float %70, 0x40191C0D60000000
 | 
					 | 
				
			||||||
  %74 = call float @dx.op.unary.f32(i32 21, float %71)  ; Exp(value)
 | 
					 | 
				
			||||||
  %75 = call float @dx.op.unary.f32(i32 21, float %72)  ; Exp(value)
 | 
					 | 
				
			||||||
  %76 = call float @dx.op.unary.f32(i32 21, float %73)  ; Exp(value)
 | 
					 | 
				
			||||||
  %77 = fmul fast float %75, 1.000000e+04
 | 
					 | 
				
			||||||
  %78 = fmul fast float %76, 1.000000e+04
 | 
					 | 
				
			||||||
  %79 = fmul fast float %74, 0x40D0373D80000000
 | 
					 | 
				
			||||||
  %80 = call float @dx.op.tertiary.f32(i32 46, float 0xBFE2CE1400000000, float %77, float %79)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %81 = call float @dx.op.tertiary.f32(i32 46, float 0xBFB2A5A460000000, float %78, float %80)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %82 = fmul fast float %74, 0xC09375E140000000
 | 
					 | 
				
			||||||
  %83 = call float @dx.op.tertiary.f32(i32 46, float 0x3FF2205680000000, float %77, float %82)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %84 = call float @dx.op.tertiary.f32(i32 46, float 0xBF8118C1A0000000, float %78, float %83)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %85 = fmul fast float %74, 0xC066B147C0000000
 | 
					 | 
				
			||||||
  %86 = call float @dx.op.tertiary.f32(i32 46, float 0xBFB9C0B9A0000000, float %77, float %85)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %87 = call float @dx.op.tertiary.f32(i32 46, float 0x3FF1E66780000000, float %78, float %86)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %88 = fmul fast float %81, 0x3F899999A0000000
 | 
					 | 
				
			||||||
  %89 = fmul fast float %84, 0x3F899999A0000000
 | 
					 | 
				
			||||||
  %90 = fmul fast float %87, 0x3F899999A0000000
 | 
					 | 
				
			||||||
  %91 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 0)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %92 = extractvalue %dx.types.CBufRet.f32 %91, 1
 | 
					 | 
				
			||||||
  %93 = fmul fast float %88, %92
 | 
					 | 
				
			||||||
  %94 = fmul fast float %89, %92
 | 
					 | 
				
			||||||
  %95 = fmul fast float %90, %92
 | 
					 | 
				
			||||||
  %96 = extractvalue %dx.types.CBufRet.f32 %91, 0
 | 
					 | 
				
			||||||
  %97 = fcmp fast une float %96, 0.000000e+00
 | 
					 | 
				
			||||||
  br i1 %97, label %138, label %98
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:98                                      ; preds = %0
 | 
					 | 
				
			||||||
  %99 = fcmp fast ugt float %93, 0x3F69A5C380000000
 | 
					 | 
				
			||||||
  br i1 %99, label %102, label %100
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:100                                     ; preds = %98
 | 
					 | 
				
			||||||
  %101 = fmul fast float %93, 0x4029D70A40000000
 | 
					 | 
				
			||||||
  br label %109
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:102                                     ; preds = %98
 | 
					 | 
				
			||||||
  %103 = call float @dx.op.unary.f32(i32 6, float %93)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %104 = call float @dx.op.unary.f32(i32 23, float %103)  ; Log(value)
 | 
					 | 
				
			||||||
  %105 = fmul fast float %104, 0x3FDAAAAAA0000000
 | 
					 | 
				
			||||||
  %106 = call float @dx.op.unary.f32(i32 21, float %105)  ; Exp(value)
 | 
					 | 
				
			||||||
  %107 = fmul fast float %106, 0x3FF0E147A0000000
 | 
					 | 
				
			||||||
  %108 = fadd fast float %107, 0xBFAC28F5C0000000
 | 
					 | 
				
			||||||
  br label %109
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:109                                     ; preds = %102, %100
 | 
					 | 
				
			||||||
  %110 = phi float [ %101, %100 ], [ %108, %102 ]
 | 
					 | 
				
			||||||
  %111 = fcmp fast ugt float %94, 0x3F69A5C380000000
 | 
					 | 
				
			||||||
  br i1 %111, label %114, label %112
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:112                                     ; preds = %109
 | 
					 | 
				
			||||||
  %113 = fmul fast float %94, 0x4029D70A40000000
 | 
					 | 
				
			||||||
  br label %121
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:114                                     ; preds = %109
 | 
					 | 
				
			||||||
  %115 = call float @dx.op.unary.f32(i32 6, float %94)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %116 = call float @dx.op.unary.f32(i32 23, float %115)  ; Log(value)
 | 
					 | 
				
			||||||
  %117 = fmul fast float %116, 0x3FDAAAAAA0000000
 | 
					 | 
				
			||||||
  %118 = call float @dx.op.unary.f32(i32 21, float %117)  ; Exp(value)
 | 
					 | 
				
			||||||
  %119 = fmul fast float %118, 0x3FF0E147A0000000
 | 
					 | 
				
			||||||
  %120 = fadd fast float %119, 0xBFAC28F5C0000000
 | 
					 | 
				
			||||||
  br label %121
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:121                                     ; preds = %114, %112
 | 
					 | 
				
			||||||
  %122 = phi float [ %113, %112 ], [ %120, %114 ]
 | 
					 | 
				
			||||||
  %123 = fcmp fast ugt float %95, 0x3F69A5C380000000
 | 
					 | 
				
			||||||
  br i1 %123, label %126, label %124
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:124                                     ; preds = %121
 | 
					 | 
				
			||||||
  %125 = fmul fast float %95, 0x4029D70A40000000
 | 
					 | 
				
			||||||
  br label %133
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:126                                     ; preds = %121
 | 
					 | 
				
			||||||
  %127 = call float @dx.op.unary.f32(i32 6, float %95)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %128 = call float @dx.op.unary.f32(i32 23, float %127)  ; Log(value)
 | 
					 | 
				
			||||||
  %129 = fmul fast float %128, 0x3FDAAAAAA0000000
 | 
					 | 
				
			||||||
  %130 = call float @dx.op.unary.f32(i32 21, float %129)  ; Exp(value)
 | 
					 | 
				
			||||||
  %131 = fmul fast float %130, 0x3FF0E147A0000000
 | 
					 | 
				
			||||||
  %132 = fadd fast float %131, 0xBFAC28F5C0000000
 | 
					 | 
				
			||||||
  br label %133
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:133                                     ; preds = %126, %124
 | 
					 | 
				
			||||||
  %134 = phi float [ %125, %124 ], [ %132, %126 ]
 | 
					 | 
				
			||||||
  %135 = call float @dx.op.unary.f32(i32 7, float %110)  ; Saturate(value)
 | 
					 | 
				
			||||||
  %136 = call float @dx.op.unary.f32(i32 7, float %122)  ; Saturate(value)
 | 
					 | 
				
			||||||
  %137 = call float @dx.op.unary.f32(i32 7, float %134)  ; Saturate(value)
 | 
					 | 
				
			||||||
  br label %138
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:138                                     ; preds = %133, %0
 | 
					 | 
				
			||||||
  %139 = phi float [ %93, %0 ], [ %135, %133 ]
 | 
					 | 
				
			||||||
  %140 = phi float [ %94, %0 ], [ %136, %133 ]
 | 
					 | 
				
			||||||
  %141 = phi float [ %95, %0 ], [ %137, %133 ]
 | 
					 | 
				
			||||||
  %142 = fmul fast float %139, %5
 | 
					 | 
				
			||||||
  %143 = fmul fast float %140, %6
 | 
					 | 
				
			||||||
  %144 = fmul fast float %141, %7
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %142)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %143)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %144)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %8)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  ret void
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind
 | 
					 | 
				
			||||||
declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.ResRet.f32 @dx.op.sample.f32(i32, %dx.types.Handle, %dx.types.Handle, float, float, float, float, i32, i32, i32, float) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.dot3.f32(i32, float, float, float, float, float, float) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.unary.f32(i32, float) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.binary.f32(i32, float, float) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.tertiary.f32(i32, float, float, float) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
attributes #0 = { nounwind readnone }
 | 
					 | 
				
			||||||
attributes #1 = { nounwind }
 | 
					 | 
				
			||||||
attributes #2 = { nounwind readonly }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
!llvm.ident = !{!0}
 | 
					 | 
				
			||||||
!dx.version = !{!1}
 | 
					 | 
				
			||||||
!dx.valver = !{!2}
 | 
					 | 
				
			||||||
!dx.shaderModel = !{!3}
 | 
					 | 
				
			||||||
!dx.resources = !{!4}
 | 
					 | 
				
			||||||
!dx.viewIdState = !{!13}
 | 
					 | 
				
			||||||
!dx.entryPoints = !{!14}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
!0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"}
 | 
					 | 
				
			||||||
!1 = !{i32 1, i32 0}
 | 
					 | 
				
			||||||
!2 = !{i32 1, i32 6}
 | 
					 | 
				
			||||||
!3 = !{!"ps", i32 6, i32 0}
 | 
					 | 
				
			||||||
!4 = !{!5, null, !9, !11}
 | 
					 | 
				
			||||||
!5 = !{!6, !8}
 | 
					 | 
				
			||||||
!6 = !{i32 0, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 0, i32 1, i32 2, i32 0, !7}
 | 
					 | 
				
			||||||
!7 = !{i32 0, i32 9}
 | 
					 | 
				
			||||||
!8 = !{i32 1, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 1, i32 1, i32 2, i32 0, !7}
 | 
					 | 
				
			||||||
!9 = !{!10}
 | 
					 | 
				
			||||||
!10 = !{i32 0, %Constants* undef, !"", i32 0, i32 1, i32 1, i32 80, null}
 | 
					 | 
				
			||||||
!11 = !{!12}
 | 
					 | 
				
			||||||
!12 = !{i32 0, %struct.SamplerState* undef, !"", i32 0, i32 0, i32 1, i32 0, null}
 | 
					 | 
				
			||||||
!13 = !{[14 x i32] [i32 12, i32 4, i32 0, i32 0, i32 0, i32 0, i32 7, i32 7, i32 0, i32 0, i32 1, i32 2, i32 4, i32 8]}
 | 
					 | 
				
			||||||
!14 = !{void ()* @main, !"main", !15, !4, null}
 | 
					 | 
				
			||||||
!15 = !{!16, !23, null}
 | 
					 | 
				
			||||||
!16 = !{!17, !19, !21}
 | 
					 | 
				
			||||||
!17 = !{i32 0, !"SV_Position", i8 9, i8 3, !18, i8 4, i32 1, i8 4, i32 0, i8 0, null}
 | 
					 | 
				
			||||||
!18 = !{i32 0}
 | 
					 | 
				
			||||||
!19 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !18, i8 2, i32 1, i8 2, i32 1, i8 0, !20}
 | 
					 | 
				
			||||||
!20 = !{i32 3, i32 3}
 | 
					 | 
				
			||||||
!21 = !{i32 2, !"COLOR", i8 9, i8 0, !18, i8 2, i32 1, i8 4, i32 2, i8 0, !22}
 | 
					 | 
				
			||||||
!22 = !{i32 3, i32 15}
 | 
					 | 
				
			||||||
!23 = !{!24}
 | 
					 | 
				
			||||||
!24 = !{i32 0, !"SV_Target", i8 9, i8 16, !18, i8 0, i32 1, i8 4, i32 0, i8 0, !22}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const unsigned char g_main[] = {
 | 
					 | 
				
			||||||
  0x44, 0x58, 0x42, 0x43, 0x82, 0x76, 0xc5, 0xaf, 0x48, 0xf0, 0xe2, 0xb9,
 | 
					 | 
				
			||||||
  0x09, 0x50, 0x51, 0x6b, 0xb4, 0x16, 0x4b, 0x4c, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x5d, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x49, 0x02, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0xc9, 0x0b, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0xe5, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
 | 
					 | 
				
			||||||
  0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00,
 | 
					 | 
				
			||||||
  0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c,
 | 
					 | 
				
			||||||
  0x4f, 0x52, 0x00, 0x4f, 0x53, 0x47, 0x31, 0x32, 0x00, 0x00, 0x00, 0x01,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
 | 
					 | 
				
			||||||
  0x00, 0x50, 0x53, 0x56, 0x30, 0x2c, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43,
 | 
					 | 
				
			||||||
  0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x44, 0x03, 0x03, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x42, 0x00, 0x03, 0x02, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x44,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x44, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x52, 0x54, 0x53,
 | 
					 | 
				
			||||||
  0x30, 0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0x01, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0xbc, 0x08, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x60, 0x00, 0x00, 0x00, 0x2f, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
 | 
					 | 
				
			||||||
  0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xa4, 0x08, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x26, 0x02, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
 | 
					 | 
				
			||||||
  0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14,
 | 
					 | 
				
			||||||
  0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e,
 | 
					 | 
				
			||||||
  0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5,
 | 
					 | 
				
			||||||
  0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8,
 | 
					 | 
				
			||||||
  0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86,
 | 
					 | 
				
			||||||
  0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08,
 | 
					 | 
				
			||||||
  0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x56, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4,
 | 
					 | 
				
			||||||
  0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c,
 | 
					 | 
				
			||||||
  0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x9c, 0xc1, 0x08, 0x40, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40,
 | 
					 | 
				
			||||||
  0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4,
 | 
					 | 
				
			||||||
  0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98,
 | 
					 | 
				
			||||||
  0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70,
 | 
					 | 
				
			||||||
  0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58,
 | 
					 | 
				
			||||||
  0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d,
 | 
					 | 
				
			||||||
  0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c,
 | 
					 | 
				
			||||||
  0x14, 0x15, 0x62, 0x20, 0x86, 0x81, 0xa6, 0xa3, 0x86, 0xcb, 0x9f, 0xb0,
 | 
					 | 
				
			||||||
  0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11,
 | 
					 | 
				
			||||||
  0x31, 0x0c, 0xc3, 0x50, 0x88, 0x8a, 0x60, 0x08, 0xb2, 0x4a, 0x31, 0x10,
 | 
					 | 
				
			||||||
  0xc3, 0x30, 0x10, 0x36, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xd0,
 | 
					 | 
				
			||||||
  0x68, 0x1b, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8,
 | 
					 | 
				
			||||||
  0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca,
 | 
					 | 
				
			||||||
  0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc,
 | 
					 | 
				
			||||||
  0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8,
 | 
					 | 
				
			||||||
  0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40,
 | 
					 | 
				
			||||||
  0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50,
 | 
					 | 
				
			||||||
  0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0,
 | 
					 | 
				
			||||||
  0x07, 0x48, 0xf0, 0x3e, 0x02, 0x2f, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66,
 | 
					 | 
				
			||||||
  0x92, 0x10, 0x32, 0x0c, 0xc3, 0xe0, 0x79, 0x9e, 0x47, 0xe2, 0x4d, 0xd2,
 | 
					 | 
				
			||||||
  0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0,
 | 
					 | 
				
			||||||
  0x44, 0xa0, 0x80, 0x20, 0x32, 0x1d, 0x08, 0x00, 0x00, 0x13, 0x14, 0x72,
 | 
					 | 
				
			||||||
  0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72,
 | 
					 | 
				
			||||||
  0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e,
 | 
					 | 
				
			||||||
  0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07,
 | 
					 | 
				
			||||||
  0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
 | 
					 | 
				
			||||||
  0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07,
 | 
					 | 
				
			||||||
  0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07,
 | 
					 | 
				
			||||||
  0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07,
 | 
					 | 
				
			||||||
  0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07,
 | 
					 | 
				
			||||||
  0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06,
 | 
					 | 
				
			||||||
  0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e,
 | 
					 | 
				
			||||||
  0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
 | 
					 | 
				
			||||||
  0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00,
 | 
					 | 
				
			||||||
  0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01,
 | 
					 | 
				
			||||||
  0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x67,
 | 
					 | 
				
			||||||
  0x02, 0x02, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21,
 | 
					 | 
				
			||||||
  0x8f, 0x05, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x43, 0x1e, 0x0c, 0x08, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x86, 0x3c, 0x1b, 0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x64, 0x81, 0x00, 0x17, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98,
 | 
					 | 
				
			||||||
  0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
 | 
					 | 
				
			||||||
  0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0,
 | 
					 | 
				
			||||||
  0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0xca, 0xa3, 0x5c, 0x03, 0x4a, 0x55, 0x80, 0x8a, 0x92, 0x28,
 | 
					 | 
				
			||||||
  0x83, 0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0x21, 0xad, 0x06, 0x28, 0x9c,
 | 
					 | 
				
			||||||
  0x01, 0x20, 0x71, 0x06, 0x80, 0xc6, 0x19, 0x00, 0x2a, 0x67, 0x00, 0xc8,
 | 
					 | 
				
			||||||
  0x1c, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20,
 | 
					 | 
				
			||||||
  0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0xcf, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63,
 | 
					 | 
				
			||||||
  0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03,
 | 
					 | 
				
			||||||
  0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a,
 | 
					 | 
				
			||||||
  0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b,
 | 
					 | 
				
			||||||
  0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0x42, 0x99, 0x20,
 | 
					 | 
				
			||||||
  0x10, 0xcb, 0x06, 0x61, 0x20, 0x36, 0x08, 0x04, 0x41, 0x01, 0x6e, 0x6e,
 | 
					 | 
				
			||||||
  0x82, 0x40, 0x30, 0x1b, 0x86, 0x03, 0x21, 0x26, 0x08, 0x61, 0x30, 0x06,
 | 
					 | 
				
			||||||
  0x5c, 0xe8, 0xd0, 0xca, 0xa8, 0xca, 0xf0, 0xe8, 0xea, 0xe4, 0xca, 0xb2,
 | 
					 | 
				
			||||||
  0x26, 0x08, 0x44, 0x33, 0x41, 0x20, 0x9c, 0x0d, 0x02, 0xd1, 0x6c, 0x48,
 | 
					 | 
				
			||||||
  0x08, 0x65, 0x21, 0x88, 0x81, 0x21, 0x1c, 0x32, 0x74, 0x68, 0x65, 0x54,
 | 
					 | 
				
			||||||
  0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x55, 0x56, 0x1b, 0x92, 0x41, 0x81,
 | 
					 | 
				
			||||||
  0x88, 0x61, 0x60, 0x08, 0x67, 0x83, 0xf0, 0x44, 0x13, 0x84, 0x31, 0x28,
 | 
					 | 
				
			||||||
  0x03, 0x26, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x13,
 | 
					 | 
				
			||||||
  0x04, 0xe2, 0xd9, 0x80, 0x10, 0x13, 0x45, 0x0c, 0x43, 0x05, 0x6c, 0x08,
 | 
					 | 
				
			||||||
  0xac, 0x09, 0x42, 0x19, 0x98, 0x01, 0x15, 0x3a, 0xb4, 0xb2, 0xa9, 0xb0,
 | 
					 | 
				
			||||||
  0x36, 0x38, 0xb6, 0x32, 0xb9, 0x0d, 0x08, 0x81, 0x65, 0x04, 0x31, 0x10,
 | 
					 | 
				
			||||||
  0xc0, 0x86, 0x40, 0xdb, 0x40, 0x48, 0xc0, 0xb5, 0x4d, 0x10, 0xc4, 0x80,
 | 
					 | 
				
			||||||
  0x0c, 0xc8, 0xcc, 0x8d, 0x49, 0x1d, 0x09, 0x7d, 0xbd, 0xd5, 0xd1, 0xc1,
 | 
					 | 
				
			||||||
  0xd5, 0xd1, 0x4d, 0x10, 0x08, 0x68, 0x82, 0x40, 0x44, 0x13, 0x04, 0x4d,
 | 
					 | 
				
			||||||
  0x0c, 0x36, 0x20, 0x88, 0xf7, 0x11, 0x60, 0xd0, 0x34, 0x61, 0xc0, 0x65,
 | 
					 | 
				
			||||||
  0xec, 0x8d, 0xed, 0x4d, 0xee, 0x6b, 0x6e, 0x2c, 0x8c, 0xad, 0x6c, 0x82,
 | 
					 | 
				
			||||||
  0x40, 0x48, 0x1b, 0x10, 0x64, 0x0c, 0x3e, 0x32, 0x00, 0x83, 0xa6, 0x09,
 | 
					 | 
				
			||||||
  0x03, 0x1e, 0x75, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x31, 0x13, 0x04, 0x62,
 | 
					 | 
				
			||||||
  0xda, 0x60, 0x20, 0x66, 0xf0, 0x9d, 0x01, 0x18, 0x34, 0x3c, 0xea, 0xdc,
 | 
					 | 
				
			||||||
  0xea, 0xe6, 0xca, 0xc8, 0x64, 0x26, 0x08, 0x04, 0xb5, 0xc1, 0x40, 0xd2,
 | 
					 | 
				
			||||||
  0xe0, 0x53, 0x03, 0x30, 0x68, 0x78, 0x64, 0xbd, 0x99, 0x99, 0xcd, 0x95,
 | 
					 | 
				
			||||||
  0xd1, 0x4d, 0x10, 0x88, 0x6a, 0x03, 0x82, 0xb0, 0xc1, 0xd7, 0x06, 0x60,
 | 
					 | 
				
			||||||
  0xd0, 0x34, 0x61, 0x40, 0x43, 0x6a, 0xec, 0xad, 0xcc, 0xcc, 0x6c, 0x82,
 | 
					 | 
				
			||||||
  0x40, 0x58, 0x1b, 0x10, 0xe4, 0x0d, 0x3e, 0x38, 0x00, 0x83, 0xa6, 0x09,
 | 
					 | 
				
			||||||
  0x03, 0x1a, 0x47, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x13, 0x04, 0xe2, 0xda,
 | 
					 | 
				
			||||||
  0x80, 0x20, 0x72, 0xf0, 0xcd, 0x01, 0x18, 0x34, 0x4d, 0x18, 0xd0, 0x10,
 | 
					 | 
				
			||||||
  0x1a, 0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd8, 0x06, 0x04, 0xa9,
 | 
					 | 
				
			||||||
  0x83, 0xcf, 0x0e, 0xc0, 0xa0, 0x69, 0xc2, 0x60, 0x43, 0x52, 0x89, 0x41,
 | 
					 | 
				
			||||||
  0x19, 0xa0, 0xc1, 0x1a, 0xb8, 0x41, 0x1c, 0xd0, 0xc1, 0x1d, 0x6c, 0x18,
 | 
					 | 
				
			||||||
  0x88, 0x0e, 0x0f, 0x26, 0x08, 0x02, 0xb0, 0x01, 0xd8, 0x30, 0x10, 0x7b,
 | 
					 | 
				
			||||||
  0xb0, 0x07, 0x1b, 0x02, 0x3e, 0xd8, 0x30, 0x0c, 0x7a, 0xd0, 0x07, 0x13,
 | 
					 | 
				
			||||||
  0x04, 0x33, 0x38, 0x83, 0x0d, 0xc1, 0x1f, 0x90, 0x68, 0x0b, 0x4b, 0x73,
 | 
					 | 
				
			||||||
  0xe3, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46, 0x97, 0xf6, 0xe6,
 | 
					 | 
				
			||||||
  0x36, 0x41, 0x28, 0xb8, 0x09, 0x42, 0xd1, 0x6d, 0x08, 0x88, 0x09, 0x42,
 | 
					 | 
				
			||||||
  0xe1, 0x4d, 0x10, 0x8a, 0x6f, 0xc3, 0x42, 0x88, 0xc2, 0x28, 0x90, 0x42,
 | 
					 | 
				
			||||||
  0x29, 0x98, 0xc2, 0x60, 0x0a, 0xc4, 0x29, 0x00, 0x44, 0xa8, 0x8a, 0xb0,
 | 
					 | 
				
			||||||
  0x86, 0x9e, 0x9e, 0xa4, 0x88, 0x26, 0x08, 0x05, 0x18, 0x6c, 0x10, 0xbe,
 | 
					 | 
				
			||||||
  0x6f, 0xc3, 0x32, 0xa4, 0xc2, 0x28, 0x9c, 0x42, 0x29, 0xa8, 0xc2, 0xa0,
 | 
					 | 
				
			||||||
  0x0a, 0xc3, 0x29, 0xac, 0x02, 0x8b, 0xa1, 0x27, 0xa6, 0x27, 0xa9, 0x09,
 | 
					 | 
				
			||||||
  0x02, 0x91, 0x6d, 0x10, 0x3e, 0x57, 0xd8, 0xb0, 0x30, 0xad, 0x30, 0x0a,
 | 
					 | 
				
			||||||
  0xa7, 0x50, 0x0a, 0xaa, 0x30, 0x98, 0x02, 0x73, 0x0a, 0xaf, 0xb0, 0x61,
 | 
					 | 
				
			||||||
  0x40, 0x05, 0x56, 0x80, 0x05, 0x26, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72,
 | 
					 | 
				
			||||||
  0x67, 0x65, 0x74, 0x13, 0x84, 0x22, 0x0c, 0x36, 0x2c, 0x84, 0x2c, 0x8c,
 | 
					 | 
				
			||||||
  0xc2, 0x2c, 0x94, 0xc2, 0x29, 0x0c, 0xa6, 0x40, 0x9c, 0xc2, 0x2b, 0x6c,
 | 
					 | 
				
			||||||
  0x08, 0x68, 0x61, 0xc3, 0x10, 0x0b, 0xb5, 0x00, 0x6c, 0x28, 0xf4, 0x20,
 | 
					 | 
				
			||||||
  0x14, 0x6c, 0x81, 0x03, 0x88, 0x88, 0xc9, 0x85, 0xb9, 0x8d, 0xa1, 0x95,
 | 
					 | 
				
			||||||
  0xcd, 0xd1, 0x30, 0x63, 0x7b, 0x0b, 0xa3, 0x9b, 0x9b, 0x20, 0x10, 0x1a,
 | 
					 | 
				
			||||||
  0x8b, 0x34, 0xb7, 0x39, 0xba, 0xb9, 0x09, 0x02, 0xb1, 0xd1, 0x98, 0x4b,
 | 
					 | 
				
			||||||
  0x3b, 0xfb, 0x62, 0x23, 0xa3, 0x31, 0x97, 0x76, 0xf6, 0x35, 0x47, 0x47,
 | 
					 | 
				
			||||||
  0x84, 0xae, 0x0c, 0xef, 0xcb, 0xed, 0x4d, 0xae, 0x6d, 0x03, 0x83, 0x0b,
 | 
					 | 
				
			||||||
  0x64, 0x90, 0x0b, 0xba, 0xb0, 0x0b, 0xbc, 0xd0, 0x0b, 0x88, 0x2f, 0x90,
 | 
					 | 
				
			||||||
  0xc1, 0x2f, 0x30, 0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2, 0xc8, 0xca,
 | 
					 | 
				
			||||||
  0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb, 0x32, 0xb9,
 | 
					 | 
				
			||||||
  0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf, 0xc5, 0x2e,
 | 
					 | 
				
			||||||
  0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x50, 0xd4, 0x21, 0xc3, 0x73, 0x99,
 | 
					 | 
				
			||||||
  0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63, 0x9b, 0x12,
 | 
					 | 
				
			||||||
  0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea, 0xe4, 0xc6,
 | 
					 | 
				
			||||||
  0xca, 0xe6, 0xa6, 0x04, 0x5b, 0x25, 0x32, 0x3c, 0x17, 0xba, 0x3c, 0xb8,
 | 
					 | 
				
			||||||
  0xb2, 0x20, 0x37, 0xb7, 0x37, 0xba, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0xb9,
 | 
					 | 
				
			||||||
  0x29, 0x02, 0x1e, 0xf4, 0x41, 0x1d, 0x32, 0x3c, 0x17, 0xbb, 0xb4, 0xb2,
 | 
					 | 
				
			||||||
  0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30, 0xba, 0xb2, 0x29, 0xc1, 0x1f, 0xd4,
 | 
					 | 
				
			||||||
  0x21, 0xc3, 0x73, 0x29, 0x73, 0xa3, 0x93, 0xcb, 0x83, 0x7a, 0x4b, 0x73,
 | 
					 | 
				
			||||||
  0xa3, 0x9b, 0x9b, 0x12, 0xd8, 0x42, 0x17, 0x32, 0x3c, 0x97, 0xb1, 0xb7,
 | 
					 | 
				
			||||||
  0x3a, 0x37, 0xba, 0x32, 0xb9, 0xb9, 0x29, 0xc1, 0x2f, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80,
 | 
					 | 
				
			||||||
  0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84,
 | 
					 | 
				
			||||||
  0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c,
 | 
					 | 
				
			||||||
  0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42,
 | 
					 | 
				
			||||||
  0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88,
 | 
					 | 
				
			||||||
  0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c,
 | 
					 | 
				
			||||||
  0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79,
 | 
					 | 
				
			||||||
  0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70,
 | 
					 | 
				
			||||||
  0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f,
 | 
					 | 
				
			||||||
  0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4,
 | 
					 | 
				
			||||||
  0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30,
 | 
					 | 
				
			||||||
  0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc,
 | 
					 | 
				
			||||||
  0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b,
 | 
					 | 
				
			||||||
  0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70,
 | 
					 | 
				
			||||||
  0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76,
 | 
					 | 
				
			||||||
  0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72,
 | 
					 | 
				
			||||||
  0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e,
 | 
					 | 
				
			||||||
  0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1,
 | 
					 | 
				
			||||||
  0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21,
 | 
					 | 
				
			||||||
  0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8,
 | 
					 | 
				
			||||||
  0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94,
 | 
					 | 
				
			||||||
  0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc,
 | 
					 | 
				
			||||||
  0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c,
 | 
					 | 
				
			||||||
  0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e,
 | 
					 | 
				
			||||||
  0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e,
 | 
					 | 
				
			||||||
  0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83,
 | 
					 | 
				
			||||||
  0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61,
 | 
					 | 
				
			||||||
  0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x26, 0x00, 0x00, 0x00, 0x66, 0x00, 0x0d, 0x97, 0xef, 0x3c, 0x7e,
 | 
					 | 
				
			||||||
  0x80, 0x34, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0xdb, 0xc1, 0x36, 0x5c, 0xbe,
 | 
					 | 
				
			||||||
  0xf3, 0xf8, 0x42, 0x40, 0x15, 0x05, 0x11, 0x95, 0x0e, 0x30, 0x94, 0x84,
 | 
					 | 
				
			||||||
  0x01, 0x08, 0x98, 0x5f, 0xdc, 0xb6, 0x25, 0x48, 0xc3, 0xe5, 0x3b, 0x8f,
 | 
					 | 
				
			||||||
  0x2f, 0x44, 0x04, 0x30, 0x11, 0x21, 0xd0, 0x0c, 0x0b, 0x61, 0x04, 0xce,
 | 
					 | 
				
			||||||
  0x70, 0xf9, 0xce, 0xe3, 0x0f, 0xce, 0x74, 0xfb, 0xc5, 0x6d, 0x5b, 0xc0,
 | 
					 | 
				
			||||||
  0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93,
 | 
					 | 
				
			||||||
  0x5f, 0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc,
 | 
					 | 
				
			||||||
  0xb3, 0x10, 0x7e, 0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
 | 
					 | 
				
			||||||
  0x34, 0x39, 0x11, 0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x86,
 | 
					 | 
				
			||||||
  0x20, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0x44, 0x44, 0x13, 0x02, 0x44, 0x98,
 | 
					 | 
				
			||||||
  0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40,
 | 
					 | 
				
			||||||
  0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x45, 0x19, 0x78, 0x08, 0x3c, 0x5f,
 | 
					 | 
				
			||||||
  0xe5, 0xc4, 0xbb, 0xcb, 0x00, 0x81, 0x9d, 0x5e, 0xcb, 0x44, 0x58, 0x49,
 | 
					 | 
				
			||||||
  0x4c, 0x70, 0x0c, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1c, 0x03, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x58, 0x0c, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x13, 0x03, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04,
 | 
					 | 
				
			||||||
  0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08,
 | 
					 | 
				
			||||||
  0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b,
 | 
					 | 
				
			||||||
  0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62,
 | 
					 | 
				
			||||||
  0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32,
 | 
					 | 
				
			||||||
  0x42, 0xe4, 0x48, 0x0e, 0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81,
 | 
					 | 
				
			||||||
  0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03,
 | 
					 | 
				
			||||||
  0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8,
 | 
					 | 
				
			||||||
  0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60,
 | 
					 | 
				
			||||||
  0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x57, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85,
 | 
					 | 
				
			||||||
  0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90,
 | 
					 | 
				
			||||||
  0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0xa0, 0xc1,
 | 
					 | 
				
			||||||
  0x08, 0x40, 0x09, 0x00, 0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e,
 | 
					 | 
				
			||||||
  0x00, 0x29, 0xc6, 0x40, 0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20,
 | 
					 | 
				
			||||||
  0x88, 0x62, 0x20, 0xe4, 0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f,
 | 
					 | 
				
			||||||
  0x25, 0xa4, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40,
 | 
					 | 
				
			||||||
  0x50, 0x71, 0xcf, 0x70, 0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd,
 | 
					 | 
				
			||||||
  0xb0, 0x10, 0x28, 0x58, 0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40,
 | 
					 | 
				
			||||||
  0x10, 0xc4, 0x40, 0x4d, 0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8,
 | 
					 | 
				
			||||||
  0x29, 0xc3, 0x40, 0x0c, 0x14, 0x15, 0x62, 0x20, 0x86, 0x81, 0xa6, 0xa3,
 | 
					 | 
				
			||||||
  0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98,
 | 
					 | 
				
			||||||
  0xfc, 0xe2, 0xb6, 0x11, 0x31, 0x0c, 0xc3, 0x50, 0x88, 0x8a, 0x60, 0x08,
 | 
					 | 
				
			||||||
  0xb2, 0x4a, 0x31, 0x10, 0xc3, 0x30, 0x10, 0x36, 0x47, 0x10, 0x14, 0x83,
 | 
					 | 
				
			||||||
  0x21, 0x0a, 0x82, 0xd0, 0x68, 0x1b, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99,
 | 
					 | 
				
			||||||
  0xda, 0x60, 0x1c, 0xd8, 0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16,
 | 
					 | 
				
			||||||
  0xca, 0x01, 0x1f, 0xe8, 0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14,
 | 
					 | 
				
			||||||
  0xf8, 0xc0, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f,
 | 
					 | 
				
			||||||
  0xcc, 0x81, 0x1d, 0xde, 0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e,
 | 
					 | 
				
			||||||
  0xfc, 0x00, 0x0c, 0xfc, 0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e,
 | 
					 | 
				
			||||||
  0xe6, 0xe1, 0x17, 0xe8, 0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc,
 | 
					 | 
				
			||||||
  0x24, 0x06, 0xe3, 0xc0, 0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4,
 | 
					 | 
				
			||||||
  0x50, 0x0e, 0xf8, 0x40, 0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4,
 | 
					 | 
				
			||||||
  0xc0, 0x07, 0xf6, 0x50, 0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c,
 | 
					 | 
				
			||||||
  0x60, 0x0e, 0xec, 0xf0, 0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74,
 | 
					 | 
				
			||||||
  0xe0, 0x07, 0x60, 0xe0, 0x07, 0x48, 0xf0, 0x3e, 0x02, 0x2f, 0xe1, 0x9c,
 | 
					 | 
				
			||||||
  0x46, 0x9a, 0x80, 0x66, 0x92, 0x10, 0x32, 0x0c, 0xc3, 0xe0, 0x79, 0x9e,
 | 
					 | 
				
			||||||
  0x47, 0xe2, 0x4d, 0xd2, 0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c,
 | 
					 | 
				
			||||||
  0x44, 0xc4, 0x4e, 0xc0, 0x44, 0xa0, 0x80, 0x20, 0x32, 0x1d, 0x88, 0x29,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60,
 | 
					 | 
				
			||||||
  0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf,
 | 
					 | 
				
			||||||
  0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a,
 | 
					 | 
				
			||||||
  0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71,
 | 
					 | 
				
			||||||
  0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73,
 | 
					 | 
				
			||||||
  0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72,
 | 
					 | 
				
			||||||
  0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
 | 
					 | 
				
			||||||
  0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6,
 | 
					 | 
				
			||||||
  0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73,
 | 
					 | 
				
			||||||
  0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74,
 | 
					 | 
				
			||||||
  0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71,
 | 
					 | 
				
			||||||
  0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43,
 | 
					 | 
				
			||||||
  0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x67, 0x02, 0x02, 0x20, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0x8f, 0x05, 0x04, 0xc0,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x1e, 0x0c, 0x08,
 | 
					 | 
				
			||||||
  0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x1b,
 | 
					 | 
				
			||||||
  0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x81,
 | 
					 | 
				
			||||||
  0x00, 0x11, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c,
 | 
					 | 
				
			||||||
  0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04,
 | 
					 | 
				
			||||||
  0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a,
 | 
					 | 
				
			||||||
  0x92, 0x28, 0x83, 0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x70, 0x06,
 | 
					 | 
				
			||||||
  0x80, 0xc6, 0x19, 0x00, 0x2a, 0x67, 0x00, 0xc8, 0x1c, 0xcb, 0x61, 0x08,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x79, 0x18, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c,
 | 
					 | 
				
			||||||
  0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03,
 | 
					 | 
				
			||||||
  0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01,
 | 
					 | 
				
			||||||
  0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a,
 | 
					 | 
				
			||||||
  0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b,
 | 
					 | 
				
			||||||
  0xd9, 0x10, 0x04, 0x13, 0x04, 0x42, 0x99, 0x20, 0x10, 0xcb, 0x06, 0x61,
 | 
					 | 
				
			||||||
  0x20, 0x26, 0x08, 0x04, 0xb3, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b,
 | 
					 | 
				
			||||||
  0x06, 0xc4, 0x20, 0x26, 0x08, 0x61, 0x80, 0x11, 0x98, 0x20, 0x10, 0xcd,
 | 
					 | 
				
			||||||
  0x04, 0x81, 0x70, 0x36, 0x08, 0x44, 0xb3, 0x21, 0x21, 0x94, 0x85, 0x20,
 | 
					 | 
				
			||||||
  0x06, 0x86, 0x70, 0x36, 0x24, 0x83, 0xb2, 0x10, 0xc3, 0xc0, 0x10, 0xce,
 | 
					 | 
				
			||||||
  0x06, 0xe1, 0x81, 0x26, 0x08, 0x63, 0x90, 0x4d, 0x10, 0x88, 0x67, 0x03,
 | 
					 | 
				
			||||||
  0x42, 0x48, 0x0b, 0x31, 0x0c, 0x13, 0xb0, 0x21, 0xa0, 0x26, 0x08, 0x65,
 | 
					 | 
				
			||||||
  0xa0, 0x6d, 0x40, 0x08, 0x6b, 0x21, 0x88, 0x81, 0x00, 0x36, 0x04, 0xd7,
 | 
					 | 
				
			||||||
  0x06, 0x22, 0x02, 0x2a, 0x6c, 0x82, 0x60, 0x06, 0xdb, 0x86, 0x40, 0x9b,
 | 
					 | 
				
			||||||
  0x20, 0x08, 0x00, 0x89, 0xb6, 0xb0, 0x34, 0x37, 0x2e, 0x53, 0x56, 0x5f,
 | 
					 | 
				
			||||||
  0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x13, 0x84, 0x42, 0x9a,
 | 
					 | 
				
			||||||
  0x20, 0x14, 0xd3, 0x86, 0x80, 0x98, 0x20, 0x14, 0xd4, 0x04, 0xa1, 0xa8,
 | 
					 | 
				
			||||||
  0x36, 0x2c, 0x84, 0xf7, 0x81, 0x41, 0x18, 0x88, 0xc1, 0x20, 0x06, 0xc4,
 | 
					 | 
				
			||||||
  0x18, 0x00, 0x44, 0xa8, 0x8a, 0xb0, 0x86, 0x9e, 0x9e, 0xa4, 0x88, 0x26,
 | 
					 | 
				
			||||||
  0x08, 0x85, 0x35, 0x41, 0x20, 0xa0, 0x0d, 0xc2, 0x19, 0x9c, 0xc1, 0x86,
 | 
					 | 
				
			||||||
  0x65, 0x28, 0x83, 0x6f, 0x0c, 0xc2, 0xc0, 0x0c, 0x06, 0x33, 0x18, 0xc6,
 | 
					 | 
				
			||||||
  0x00, 0x0d, 0x58, 0x0c, 0x3d, 0x31, 0x3d, 0x49, 0x4d, 0x10, 0x88, 0x68,
 | 
					 | 
				
			||||||
  0x83, 0x70, 0x06, 0x6b, 0xb0, 0x61, 0x61, 0xd4, 0xe0, 0x1b, 0x83, 0x30,
 | 
					 | 
				
			||||||
  0x30, 0x83, 0x41, 0x0c, 0x98, 0x31, 0x60, 0x83, 0x0d, 0x03, 0x19, 0xa4,
 | 
					 | 
				
			||||||
  0x41, 0x1b, 0x30, 0x99, 0xb2, 0xfa, 0xa2, 0x0a, 0x93, 0x3b, 0x2b, 0xa3,
 | 
					 | 
				
			||||||
  0x9b, 0x20, 0x14, 0xd7, 0x86, 0x85, 0x78, 0x83, 0x0f, 0x0e, 0xc2, 0x60,
 | 
					 | 
				
			||||||
  0x0c, 0x06, 0x31, 0x20, 0xc6, 0x80, 0x0d, 0x36, 0x04, 0x71, 0xb0, 0x61,
 | 
					 | 
				
			||||||
  0x70, 0x03, 0x39, 0x00, 0x36, 0x14, 0x5c, 0x37, 0x07, 0x19, 0x50, 0x85,
 | 
					 | 
				
			||||||
  0x8d, 0xcd, 0xae, 0xcd, 0x25, 0x8d, 0xac, 0xcc, 0x8d, 0x6e, 0x4a, 0x10,
 | 
					 | 
				
			||||||
  0x54, 0x21, 0xc3, 0x73, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x9b,
 | 
					 | 
				
			||||||
  0x12, 0x10, 0x4d, 0xc8, 0xf0, 0x5c, 0xec, 0xc2, 0xd8, 0xec, 0xca, 0xe4,
 | 
					 | 
				
			||||||
  0xa6, 0x04, 0x46, 0x1d, 0x32, 0x3c, 0x97, 0x39, 0xb4, 0x30, 0xb2, 0x32,
 | 
					 | 
				
			||||||
  0xb9, 0xa6, 0x37, 0xb2, 0x32, 0xb6, 0x29, 0x01, 0x52, 0x86, 0x0c, 0xcf,
 | 
					 | 
				
			||||||
  0x45, 0xae, 0x6c, 0xee, 0xad, 0x4e, 0x6e, 0xac, 0x6c, 0x6e, 0x4a, 0x80,
 | 
					 | 
				
			||||||
  0xd5, 0x21, 0xc3, 0x73, 0xb1, 0x4b, 0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2,
 | 
					 | 
				
			||||||
  0x0b, 0xa3, 0x2b, 0x9b, 0x12, 0x68, 0x75, 0xc8, 0xf0, 0x5c, 0xca, 0xdc,
 | 
					 | 
				
			||||||
  0xe8, 0xe4, 0xf2, 0xa0, 0xde, 0xd2, 0xdc, 0xe8, 0xe6, 0xa6, 0x04, 0x73,
 | 
					 | 
				
			||||||
  0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80,
 | 
					 | 
				
			||||||
  0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84,
 | 
					 | 
				
			||||||
  0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c,
 | 
					 | 
				
			||||||
  0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42,
 | 
					 | 
				
			||||||
  0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88,
 | 
					 | 
				
			||||||
  0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c,
 | 
					 | 
				
			||||||
  0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79,
 | 
					 | 
				
			||||||
  0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70,
 | 
					 | 
				
			||||||
  0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f,
 | 
					 | 
				
			||||||
  0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4,
 | 
					 | 
				
			||||||
  0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30,
 | 
					 | 
				
			||||||
  0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc,
 | 
					 | 
				
			||||||
  0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b,
 | 
					 | 
				
			||||||
  0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70,
 | 
					 | 
				
			||||||
  0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76,
 | 
					 | 
				
			||||||
  0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72,
 | 
					 | 
				
			||||||
  0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e,
 | 
					 | 
				
			||||||
  0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1,
 | 
					 | 
				
			||||||
  0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21,
 | 
					 | 
				
			||||||
  0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8,
 | 
					 | 
				
			||||||
  0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94,
 | 
					 | 
				
			||||||
  0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc,
 | 
					 | 
				
			||||||
  0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c,
 | 
					 | 
				
			||||||
  0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e,
 | 
					 | 
				
			||||||
  0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e,
 | 
					 | 
				
			||||||
  0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83,
 | 
					 | 
				
			||||||
  0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61,
 | 
					 | 
				
			||||||
  0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x26, 0x00, 0x00, 0x00, 0x66, 0x00, 0x0d, 0x97, 0xef, 0x3c, 0x7e,
 | 
					 | 
				
			||||||
  0x80, 0x34, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0xdb, 0xc1, 0x36, 0x5c, 0xbe,
 | 
					 | 
				
			||||||
  0xf3, 0xf8, 0x42, 0x40, 0x15, 0x05, 0x11, 0x95, 0x0e, 0x30, 0x94, 0x84,
 | 
					 | 
				
			||||||
  0x01, 0x08, 0x98, 0x5f, 0xdc, 0xb6, 0x25, 0x48, 0xc3, 0xe5, 0x3b, 0x8f,
 | 
					 | 
				
			||||||
  0x2f, 0x44, 0x04, 0x30, 0x11, 0x21, 0xd0, 0x0c, 0x0b, 0x61, 0x04, 0xce,
 | 
					 | 
				
			||||||
  0x70, 0xf9, 0xce, 0xe3, 0x0f, 0xce, 0x74, 0xfb, 0xc5, 0x6d, 0x5b, 0xc0,
 | 
					 | 
				
			||||||
  0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93,
 | 
					 | 
				
			||||||
  0x5f, 0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc,
 | 
					 | 
				
			||||||
  0xb3, 0x10, 0x7e, 0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
 | 
					 | 
				
			||||||
  0x34, 0x39, 0x11, 0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x86,
 | 
					 | 
				
			||||||
  0x20, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0x44, 0x44, 0x13, 0x02, 0x44, 0x98,
 | 
					 | 
				
			||||||
  0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40,
 | 
					 | 
				
			||||||
  0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x61, 0x20, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x13, 0x04, 0x4c,
 | 
					 | 
				
			||||||
  0x2c, 0x10, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0xa4, 0x8d, 0x00,
 | 
					 | 
				
			||||||
  0x50, 0x51, 0x02, 0x44, 0x14, 0x5e, 0x39, 0x94, 0x51, 0xb9, 0x95, 0x42,
 | 
					 | 
				
			||||||
  0xc9, 0x95, 0x5d, 0x71, 0x15, 0xc2, 0x0c, 0x40, 0xa9, 0x94, 0x0b, 0x0d,
 | 
					 | 
				
			||||||
  0x63, 0x04, 0xec, 0xeb, 0x8e, 0xe8, 0x18, 0x8c, 0x11, 0x80, 0x25, 0xcf,
 | 
					 | 
				
			||||||
  0xc6, 0xbf, 0x30, 0x46, 0x30, 0xa6, 0xab, 0x9a, 0xfb, 0xc2, 0x18, 0x81,
 | 
					 | 
				
			||||||
  0x8a, 0xaf, 0x77, 0x2a, 0x0e, 0x63, 0x04, 0x74, 0x0d, 0x8a, 0xf9, 0x37,
 | 
					 | 
				
			||||||
  0x46, 0xd0, 0xc2, 0x71, 0x0c, 0xfa, 0xc2, 0x18, 0x81, 0x1f, 0x8b, 0xeb,
 | 
					 | 
				
			||||||
  0x1c, 0x0e, 0x63, 0x04, 0xad, 0x1b, 0xf2, 0xbc, 0x2f, 0x8c, 0x11, 0xf0,
 | 
					 | 
				
			||||||
  0x39, 0xeb, 0xe3, 0xdf, 0x18, 0x01, 0x08, 0xc2, 0x78, 0x38, 0x06, 0x63,
 | 
					 | 
				
			||||||
  0x04, 0x6e, 0x1f, 0x8b, 0xb6, 0x2f, 0x8c, 0x11, 0xf4, 0xb1, 0xe8, 0xe2,
 | 
					 | 
				
			||||||
  0xdf, 0x18, 0x41, 0xad, 0xd6, 0x6a, 0xfb, 0x8d, 0x11, 0xc8, 0xa2, 0xdb,
 | 
					 | 
				
			||||||
  0xd3, 0x60, 0x30, 0x46, 0xc0, 0xc3, 0xab, 0x4e, 0x77, 0x63, 0x04, 0xad,
 | 
					 | 
				
			||||||
  0x39, 0xe7, 0xa4, 0x37, 0x46, 0xb0, 0x8e, 0x78, 0xcc, 0x82, 0xc1, 0x18,
 | 
					 | 
				
			||||||
  0x01, 0x08, 0xd2, 0x6d, 0x0e, 0x06, 0x63, 0x04, 0x20, 0x08, 0xae, 0x39,
 | 
					 | 
				
			||||||
  0x18, 0x8c, 0x11, 0x80, 0x20, 0xc8, 0xd6, 0xbf, 0x30, 0x46, 0xc0, 0xb6,
 | 
					 | 
				
			||||||
  0xf3, 0x4f, 0x7a, 0x23, 0x00, 0x33, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09,
 | 
					 | 
				
			||||||
  0x00, 0x82, 0x60, 0xb0, 0xe1, 0x81, 0xc7, 0x06, 0x77, 0x70, 0x07, 0x65,
 | 
					 | 
				
			||||||
  0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x5b, 0x1e, 0x7c, 0x6d, 0x70,
 | 
					 | 
				
			||||||
  0x07, 0x77, 0x60, 0x06, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0xb0, 0xe9,
 | 
					 | 
				
			||||||
  0x01, 0x18, 0xc0, 0x01, 0x1e, 0xe0, 0xc1, 0x19, 0x8c, 0x18, 0x24, 0x00,
 | 
					 | 
				
			||||||
  0x08, 0x82, 0xc1, 0xb6, 0x07, 0x61, 0xe0, 0x06, 0x79, 0xa0, 0x07, 0x68,
 | 
					 | 
				
			||||||
  0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x06, 0x29, 0x7c, 0x78, 0xa0,
 | 
					 | 
				
			||||||
  0x07, 0x70, 0xe0, 0x8d, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x51, 0x0a,
 | 
					 | 
				
			||||||
  0x60, 0x90, 0x07, 0x7b, 0x90, 0x06, 0xdf, 0x88, 0x41, 0x02, 0x80, 0x20,
 | 
					 | 
				
			||||||
  0x18, 0x18, 0xa6, 0x10, 0x06, 0x7a, 0xc0, 0x07, 0x71, 0x00, 0x06, 0x23,
 | 
					 | 
				
			||||||
  0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x9c, 0x82, 0x18, 0xec, 0x41, 0x1f,
 | 
					 | 
				
			||||||
  0xd4, 0x41, 0x18, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x81, 0x0a,
 | 
					 | 
				
			||||||
  0x63, 0xf0, 0x07, 0x7e, 0x40, 0x07, 0x62, 0x30, 0x62, 0x90, 0x00, 0x20,
 | 
					 | 
				
			||||||
  0x08, 0x06, 0x46, 0x2a, 0x90, 0x01, 0x28, 0xfc, 0x41, 0x1b, 0x8c, 0xc1,
 | 
					 | 
				
			||||||
  0x88, 0xc1, 0x03, 0x80, 0x20, 0x18, 0x34, 0xa8, 0xd0, 0x06, 0x09, 0x22,
 | 
					 | 
				
			||||||
  0x04, 0xcb, 0x02, 0x0a, 0xa0, 0x40, 0x06, 0xcb, 0x68, 0x42, 0x00, 0x8c,
 | 
					 | 
				
			||||||
  0x18, 0x3c, 0x00, 0x08, 0x82, 0x41, 0xa3, 0x0a, 0x6f, 0xc0, 0x28, 0xc4,
 | 
					 | 
				
			||||||
  0xd0, 0x34, 0xa2, 0x20, 0x0a, 0x66, 0xd0, 0x8c, 0x26, 0x04, 0xc0, 0x68,
 | 
					 | 
				
			||||||
  0x82, 0x10, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x81, 0x95, 0x0a, 0x6c,
 | 
					 | 
				
			||||||
  0xc0, 0x98, 0xc2, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2,
 | 
					 | 
				
			||||||
  0x20, 0xd8, 0x80, 0xc0, 0xc7, 0x86, 0x03, 0x3e, 0x36, 0x1c, 0xf0, 0x19,
 | 
					 | 
				
			||||||
  0x31, 0x38, 0x00, 0x10, 0x04, 0x03, 0x0b, 0x16, 0xe6, 0x60, 0x52, 0x85,
 | 
					 | 
				
			||||||
  0xd1, 0x84, 0x00, 0x18, 0x4d, 0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31,
 | 
					 | 
				
			||||||
  0x58, 0x00, 0x10, 0x04, 0x83, 0xe7, 0x16, 0xf4, 0xe0, 0x30, 0x8a, 0x41,
 | 
					 | 
				
			||||||
  0x08, 0x46, 0x0c, 0x0e, 0x00, 0x04, 0xc1, 0xc0, 0xaa, 0x05, 0x3c, 0xc0,
 | 
					 | 
				
			||||||
  0x58, 0x61, 0x34, 0x21, 0x00, 0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10,
 | 
					 | 
				
			||||||
  0x46, 0x0c, 0x16, 0x00, 0x04, 0xc1, 0xe0, 0xe1, 0x85, 0x3f, 0x60, 0x16,
 | 
					 | 
				
			||||||
  0x65, 0x10, 0x82, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xb0, 0x74, 0xa1,
 | 
					 | 
				
			||||||
  0x0f, 0xba, 0x3d, 0x18, 0x4d, 0x08, 0x80, 0xd1, 0x04, 0x21, 0x18, 0x4d,
 | 
					 | 
				
			||||||
  0x18, 0x84, 0x11, 0x83, 0x05, 0x00, 0x41, 0x30, 0x78, 0xc2, 0x81, 0x14,
 | 
					 | 
				
			||||||
  0x22, 0xe8, 0x19, 0x84, 0x60, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2,
 | 
					 | 
				
			||||||
  0x70, 0xd0, 0x85, 0x65, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x71,
 | 
					 | 
				
			||||||
  0xd8, 0x85, 0x63, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0x71, 0xe0,
 | 
					 | 
				
			||||||
  0x85, 0x61, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x72, 0x00, 0x85,
 | 
					 | 
				
			||||||
  0x61, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0x72, 0x08, 0x85, 0x61,
 | 
					 | 
				
			||||||
  0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x73, 0x10, 0x85, 0xc1, 0x06,
 | 
					 | 
				
			||||||
  0x37, 0x90, 0x8f, 0x0d, 0x6f, 0x20, 0x1f, 0x1b, 0xe0, 0x40, 0x3e, 0x23,
 | 
					 | 
				
			||||||
  0x06, 0x06, 0x00, 0x82, 0x60, 0x10, 0xa9, 0xc3, 0x29, 0x0c, 0x23, 0x06,
 | 
					 | 
				
			||||||
  0x06, 0x00, 0x82, 0x60, 0x10, 0xad, 0x03, 0x2a, 0x0c, 0x23, 0x06, 0x06,
 | 
					 | 
				
			||||||
  0x00, 0x82, 0x60, 0x10, 0xb1, 0x43, 0x2a, 0x0c, 0x36, 0xd4, 0x01, 0x7c,
 | 
					 | 
				
			||||||
  0x6c, 0xb0, 0x03, 0xf8, 0xd8, 0x70, 0x07, 0xf0, 0x19, 0x31, 0x38, 0x00,
 | 
					 | 
				
			||||||
  0x10, 0x04, 0x83, 0xe9, 0x1d, 0x6a, 0x61, 0xb0, 0x83, 0x11, 0x83, 0x03,
 | 
					 | 
				
			||||||
  0x00, 0x41, 0x30, 0x98, 0xe0, 0xc1, 0x16, 0x86, 0x3b, 0x18, 0x31, 0x38,
 | 
					 | 
				
			||||||
  0x00, 0x10, 0x04, 0x83, 0x29, 0x1e, 0x6e, 0x61, 0xc0, 0x03, 0x4b, 0xf8,
 | 
					 | 
				
			||||||
  0x40, 0x3e, 0x96, 0xf4, 0x81, 0x7c, 0x2c, 0xf1, 0x03, 0xf9, 0x18, 0x28,
 | 
					 | 
				
			||||||
  0x0c, 0xf1, 0xb1, 0x50, 0x18, 0xe2, 0x63, 0xa2, 0x30, 0xc4, 0xc7, 0x92,
 | 
					 | 
				
			||||||
  0x81, 0x3e, 0x96, 0x0c, 0xf4, 0xb1, 0x64, 0xa0, 0xcf, 0x88, 0x81, 0x01,
 | 
					 | 
				
			||||||
  0x80, 0x20, 0x18, 0x44, 0xfc, 0x50, 0x0f, 0xc3, 0x88, 0x81, 0x01, 0x80,
 | 
					 | 
				
			||||||
  0x20, 0x18, 0x44, 0xfd, 0x60, 0x0f, 0xc3, 0x88, 0x81, 0x01, 0x80, 0x20,
 | 
					 | 
				
			||||||
  0x18, 0x44, 0xfe, 0x70, 0x0f, 0xc3, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18,
 | 
					 | 
				
			||||||
  0x44, 0xff, 0xb0, 0x0b, 0xc3, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x44,
 | 
					 | 
				
			||||||
  0x20, 0xc1, 0x0b, 0xc3, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x44, 0x21,
 | 
					 | 
				
			||||||
  0xd1, 0x0b, 0x83, 0x0d, 0xad, 0x20, 0x1f, 0x1b, 0x5c, 0x41, 0x3e, 0x36,
 | 
					 | 
				
			||||||
  0xbc, 0x82, 0x7c, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0x20, 0x2a, 0x09,
 | 
					 | 
				
			||||||
  0x71, 0x18, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0x20, 0x32, 0x89, 0x71,
 | 
					 | 
				
			||||||
  0x18, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0x20, 0x3a, 0x09, 0x72, 0x18,
 | 
					 | 
				
			||||||
  0x4c, 0xd0, 0x05, 0xf9, 0x98, 0xb0, 0x0b, 0xf2, 0xb1, 0xa2, 0x1c, 0xe4,
 | 
					 | 
				
			||||||
  0x33, 0x62, 0x80, 0x00, 0x20, 0x08, 0x06, 0x18, 0x4a, 0xac, 0x43, 0x39,
 | 
					 | 
				
			||||||
  0x0c, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18, 0x60, 0x29, 0xc1, 0x0e,
 | 
					 | 
				
			||||||
  0xe5, 0x30, 0x04, 0x86, 0x94, 0x83, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04,
 | 
					 | 
				
			||||||
  0xc1, 0x00, 0x5b, 0x09, 0x77, 0x28, 0x07, 0x23, 0x18, 0x31, 0x40, 0x00,
 | 
					 | 
				
			||||||
  0x10, 0x04, 0x03, 0x8c, 0x25, 0xde, 0xa1, 0x1c, 0x8c, 0xc0, 0x96, 0x72,
 | 
					 | 
				
			||||||
  0x90, 0xcf, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18, 0x60, 0x2e, 0x11, 0x0f,
 | 
					 | 
				
			||||||
  0xe5, 0x90, 0x04, 0x23, 0x06, 0x08, 0x00, 0x82, 0x60, 0x80, 0xbd, 0x84,
 | 
					 | 
				
			||||||
  0x3c, 0x94, 0x43, 0x12, 0xd8, 0xf1, 0x0b, 0xf2, 0xb1, 0x02, 0x1c, 0xe4,
 | 
					 | 
				
			||||||
  0x63, 0x43, 0x38, 0xc8, 0x67, 0xc4, 0xe0, 0x00, 0x40, 0x10, 0x0c, 0x2c,
 | 
					 | 
				
			||||||
  0x9a, 0xb8, 0x87, 0x5b, 0x80, 0x89, 0xd1, 0x84, 0x20, 0xb0, 0x22, 0x90,
 | 
					 | 
				
			||||||
  0x8f, 0x15, 0x82, 0x7c, 0xac, 0x18, 0xe4, 0x33, 0x9a, 0x50, 0x00, 0xc3,
 | 
					 | 
				
			||||||
  0x11, 0x81, 0x38, 0x38, 0xdf, 0x2c, 0xc3, 0x12, 0x04, 0xc3, 0x11, 0x85,
 | 
					 | 
				
			||||||
  0x3a, 0x28, 0xdf, 0x2c, 0xc3, 0x20, 0x04, 0x66, 0xb0, 0x83, 0x7c, 0x66,
 | 
					 | 
				
			||||||
  0x09, 0x88, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x88, 0x7e, 0x02, 0x27,
 | 
					 | 
				
			||||||
  0x8e, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x88, 0xc0, 0x82, 0x1f, 0x02,
 | 
					 | 
				
			||||||
  0x0b, 0xe0, 0x41, 0x3e, 0x23, 0x06, 0x06, 0x00, 0x82, 0x60, 0x10, 0x89,
 | 
					 | 
				
			||||||
  0xc5, 0x3f, 0x04, 0x16, 0xcc, 0x83, 0x7c, 0x2c, 0xa8, 0x07, 0xf8, 0xcc,
 | 
					 | 
				
			||||||
  0x12, 0x10, 0x03, 0x15, 0x83, 0x23, 0x08, 0xc3, 0x70, 0x44, 0x33, 0x0f,
 | 
					 | 
				
			||||||
  0xca, 0x37, 0xcb, 0x60, 0x14, 0x81, 0x39, 0xf5, 0x20, 0x9f, 0x59, 0x82,
 | 
					 | 
				
			||||||
  0x63, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0xb4, 0x08, 0x8b, 0x67,
 | 
					 | 
				
			||||||
  0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0xb4, 0x28, 0x89, 0xc0, 0x82,
 | 
					 | 
				
			||||||
  0x7c, 0x90, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x44, 0x6b, 0x81,
 | 
					 | 
				
			||||||
  0x12, 0x81, 0x05, 0xfc, 0x20, 0x1f, 0x0b, 0xfc, 0x01, 0x3e, 0xb3, 0x04,
 | 
					 | 
				
			||||||
  0xc7, 0x40, 0xc5, 0xe0, 0x14, 0x82, 0x31, 0x1c, 0x51, 0xf1, 0x83, 0xf2,
 | 
					 | 
				
			||||||
  0xcd, 0x32, 0x24, 0x48, 0x60, 0x96, 0x3f, 0xc8, 0x67, 0x96, 0x40, 0x19,
 | 
					 | 
				
			||||||
  0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x28, 0x2e, 0xd4, 0xe2, 0x1a, 0x31,
 | 
					 | 
				
			||||||
  0x30, 0x00, 0x10, 0x04, 0x83, 0x48, 0x2e, 0x5c, 0x22, 0xb0, 0x40, 0x24,
 | 
					 | 
				
			||||||
  0xe4, 0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x11, 0x5d, 0xc4, 0x44,
 | 
					 | 
				
			||||||
  0x60, 0x41, 0x49, 0xc8, 0xc7, 0x82, 0x93, 0x80, 0xcf, 0x2c, 0x81, 0x32,
 | 
					 | 
				
			||||||
  0x50, 0x31, 0x38, 0x88, 0x90, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0x41,
 | 
					 | 
				
			||||||
  0x84, 0x17, 0x3e, 0x31, 0x8d, 0x18, 0x18, 0x00, 0x08, 0x82, 0x41, 0x94,
 | 
					 | 
				
			||||||
  0x17, 0x3f, 0xb1, 0x8c, 0x18, 0x18, 0x00, 0x08, 0x82, 0x41, 0xa4, 0x17,
 | 
					 | 
				
			||||||
  0x60, 0x31, 0xcc, 0x12, 0x2c, 0x03, 0x15, 0x83, 0x29, 0x00, 0x86, 0x32,
 | 
					 | 
				
			||||||
  0x50, 0x31, 0x98, 0x02, 0x60, 0x28, 0x03, 0x15, 0x83, 0x29, 0x00, 0x86,
 | 
					 | 
				
			||||||
  0x62, 0x83, 0x3f, 0xc8, 0xc7, 0x06, 0x7f, 0x90, 0x8f, 0x0d, 0xfe, 0x20,
 | 
					 | 
				
			||||||
  0x9f, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0x40, 0x48, 0x83, 0x2c, 0xf6,
 | 
					 | 
				
			||||||
  0x62, 0x2f, 0xe2, 0x62, 0x18, 0x31, 0x48, 0x00, 0x10, 0x04, 0x03, 0x84,
 | 
					 | 
				
			||||||
  0x34, 0xc8, 0x62, 0x2f, 0xf6, 0x22, 0x2d, 0x84, 0x11, 0x83, 0x04, 0x00,
 | 
					 | 
				
			||||||
  0x41, 0x30, 0x40, 0x48, 0x83, 0x2c, 0xf6, 0x62, 0x2f, 0xe0, 0x22, 0x18,
 | 
					 | 
				
			||||||
  0x31, 0x48, 0x00, 0x10, 0x04, 0x03, 0x84, 0x34, 0xc8, 0x62, 0x2f, 0xf6,
 | 
					 | 
				
			||||||
  0x62, 0x2e, 0xfc, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,56 +0,0 @@
 | 
				
			|||||||
Texture2D theTextureY : register(t0);
 | 
					 | 
				
			||||||
Texture2D theTextureUV : register(t1);
 | 
					 | 
				
			||||||
SamplerState theSampler : register(s0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "D3D12_PixelShader_Common.incl"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NVRS \
 | 
					 | 
				
			||||||
    "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | 
					 | 
				
			||||||
    "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
					 | 
				
			||||||
    "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
					 | 
				
			||||||
    "            DENY_HULL_SHADER_ROOT_ACCESS )," \
 | 
					 | 
				
			||||||
    "RootConstants(num32BitConstants=20, b1),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
float3 PQtoNits(float3 v)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    const float c1 = 0.8359375;
 | 
					 | 
				
			||||||
    const float c2 = 18.8515625;
 | 
					 | 
				
			||||||
    const float c3 = 18.6875;
 | 
					 | 
				
			||||||
    const float oo_m1 = 1.0 / 0.1593017578125;
 | 
					 | 
				
			||||||
    const float oo_m2 = 1.0 / 78.84375;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 num = max(pow(abs(v), oo_m2) - c1, 0.0);
 | 
					 | 
				
			||||||
    float3 den = c2 - c3 * pow(abs(v), oo_m2);
 | 
					 | 
				
			||||||
    return 10000.0 * pow(abs(num / den), oo_m1);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[RootSignature(NVRS)]
 | 
					 | 
				
			||||||
float4 main(PixelShaderInput input) : SV_TARGET
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    const float3x3 mat2020to709 = {
 | 
					 | 
				
			||||||
        1.660496, -0.587656, -0.072840,
 | 
					 | 
				
			||||||
        -0.124547, 1.132895, -0.008348,
 | 
					 | 
				
			||||||
        -0.018154, -0.100597, 1.118751
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 yuv;
 | 
					 | 
				
			||||||
    yuv.x = theTextureY.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
    yuv.yz = theTextureUV.Sample(theSampler, input.tex).rg;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 rgb;
 | 
					 | 
				
			||||||
    yuv += Yoffset.xyz;
 | 
					 | 
				
			||||||
    rgb.r = dot(yuv, Rcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.g = dot(yuv, Gcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.b = dot(yuv, Bcoeff.xyz);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    rgb = PQtoNits(rgb);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    rgb = mul(mat2020to709, rgb);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    rgb = scRGBfromNits(rgb);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return GetOutputColorFromSCRGB(rgb) * input.color;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,729 +0,0 @@
 | 
				
			|||||||
#if 0
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Input signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
; SV_Position              0   xyzw        0      POS   float       
 | 
					 | 
				
			||||||
; TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
					 | 
				
			||||||
; COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Output signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
; SV_Target                0   xyzw        0   TARGET   float   xyzw
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; shader hash: 7be734894192b87b750f26f182766c91
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Pipeline Runtime Information: 
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Pixel Shader
 | 
					 | 
				
			||||||
; DepthOutput=0
 | 
					 | 
				
			||||||
; SampleFrequency=0
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Input signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index             InterpMode DynIdx
 | 
					 | 
				
			||||||
; -------------------- ----- ---------------------- ------
 | 
					 | 
				
			||||||
; SV_Position              0          noperspective       
 | 
					 | 
				
			||||||
; TEXCOORD                 0                 linear       
 | 
					 | 
				
			||||||
; COLOR                    0                 linear       
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Output signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index             InterpMode DynIdx
 | 
					 | 
				
			||||||
; -------------------- ----- ---------------------- ------
 | 
					 | 
				
			||||||
; SV_Target                0                              
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Buffer Definitions:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; cbuffer Constants
 | 
					 | 
				
			||||||
; {
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;   struct Constants
 | 
					 | 
				
			||||||
;   {
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;       float scRGB_output;                           ; Offset:    0
 | 
					 | 
				
			||||||
;       float color_scale;                            ; Offset:    4
 | 
					 | 
				
			||||||
;       float unused1;                                ; Offset:    8
 | 
					 | 
				
			||||||
;       float unused2;                                ; Offset:   12
 | 
					 | 
				
			||||||
;       float4 Yoffset;                               ; Offset:   16
 | 
					 | 
				
			||||||
;       float4 Rcoeff;                                ; Offset:   32
 | 
					 | 
				
			||||||
;       float4 Gcoeff;                                ; Offset:   48
 | 
					 | 
				
			||||||
;       float4 Bcoeff;                                ; Offset:   64
 | 
					 | 
				
			||||||
;   
 | 
					 | 
				
			||||||
;   } Constants;                                      ; Offset:    0 Size:    80
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; }
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Resource Bindings:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                                 Type  Format         Dim      ID      HLSL Bind  Count
 | 
					 | 
				
			||||||
; ------------------------------ ---------- ------- ----------- ------- -------------- ------
 | 
					 | 
				
			||||||
; Constants                         cbuffer      NA          NA     CB0            cb1     1
 | 
					 | 
				
			||||||
; theSampler                        sampler      NA          NA      S0             s0     1
 | 
					 | 
				
			||||||
; theTextureY                       texture     f32          2d      T0             t0     1
 | 
					 | 
				
			||||||
; theTextureUV                      texture     f32          2d      T1             t1     1
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; ViewId state:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Number of inputs: 12, outputs: 4
 | 
					 | 
				
			||||||
; Outputs dependent on ViewId: {  }
 | 
					 | 
				
			||||||
; Inputs contributing to computation of Outputs:
 | 
					 | 
				
			||||||
;   output 0 depends on inputs: { 4, 5, 8 }
 | 
					 | 
				
			||||||
;   output 1 depends on inputs: { 4, 5, 9 }
 | 
					 | 
				
			||||||
;   output 2 depends on inputs: { 4, 5, 10 }
 | 
					 | 
				
			||||||
;   output 3 depends on inputs: { 11 }
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f64:64-n8:16:32:64"
 | 
					 | 
				
			||||||
target triple = "dxil-ms-dx"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
%dx.types.Handle = type { i8* }
 | 
					 | 
				
			||||||
%dx.types.ResRet.f32 = type { float, float, float, float, i32 }
 | 
					 | 
				
			||||||
%dx.types.CBufRet.f32 = type { float, float, float, float }
 | 
					 | 
				
			||||||
%"class.Texture2D<vector<float, 4> >" = type { <4 x float>, %"class.Texture2D<vector<float, 4> >::mips_type" }
 | 
					 | 
				
			||||||
%"class.Texture2D<vector<float, 4> >::mips_type" = type { i32 }
 | 
					 | 
				
			||||||
%Constants = type { float, float, float, float, <4 x float>, <4 x float>, <4 x float>, <4 x float> }
 | 
					 | 
				
			||||||
%struct.SamplerState = type { i32 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
define void @main() {
 | 
					 | 
				
			||||||
  %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 1, i32 1, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %2 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %3 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 3, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %4 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 1, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %6 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %7 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %8 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %9 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %10 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %11 = call %dx.types.ResRet.f32 @dx.op.sample.f32(i32 60, %dx.types.Handle %2, %dx.types.Handle %3, float %9, float %10, float undef, float undef, i32 0, i32 0, i32 undef, float undef)  ; Sample(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp)
 | 
					 | 
				
			||||||
  %12 = extractvalue %dx.types.ResRet.f32 %11, 0
 | 
					 | 
				
			||||||
  %13 = call %dx.types.ResRet.f32 @dx.op.sample.f32(i32 60, %dx.types.Handle %1, %dx.types.Handle %3, float %9, float %10, float undef, float undef, i32 0, i32 0, i32 undef, float undef)  ; Sample(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp)
 | 
					 | 
				
			||||||
  %14 = extractvalue %dx.types.ResRet.f32 %13, 0
 | 
					 | 
				
			||||||
  %15 = extractvalue %dx.types.ResRet.f32 %13, 1
 | 
					 | 
				
			||||||
  %16 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 1)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %17 = extractvalue %dx.types.CBufRet.f32 %16, 0
 | 
					 | 
				
			||||||
  %18 = extractvalue %dx.types.CBufRet.f32 %16, 1
 | 
					 | 
				
			||||||
  %19 = extractvalue %dx.types.CBufRet.f32 %16, 2
 | 
					 | 
				
			||||||
  %20 = fadd fast float %17, %12
 | 
					 | 
				
			||||||
  %21 = fadd fast float %18, %14
 | 
					 | 
				
			||||||
  %22 = fadd fast float %19, %15
 | 
					 | 
				
			||||||
  %23 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 2)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %24 = extractvalue %dx.types.CBufRet.f32 %23, 0
 | 
					 | 
				
			||||||
  %25 = extractvalue %dx.types.CBufRet.f32 %23, 1
 | 
					 | 
				
			||||||
  %26 = extractvalue %dx.types.CBufRet.f32 %23, 2
 | 
					 | 
				
			||||||
  %27 = call float @dx.op.dot3.f32(i32 55, float %20, float %21, float %22, float %24, float %25, float %26)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %28 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 3)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %29 = extractvalue %dx.types.CBufRet.f32 %28, 0
 | 
					 | 
				
			||||||
  %30 = extractvalue %dx.types.CBufRet.f32 %28, 1
 | 
					 | 
				
			||||||
  %31 = extractvalue %dx.types.CBufRet.f32 %28, 2
 | 
					 | 
				
			||||||
  %32 = call float @dx.op.dot3.f32(i32 55, float %20, float %21, float %22, float %29, float %30, float %31)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %33 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 4)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %34 = extractvalue %dx.types.CBufRet.f32 %33, 0
 | 
					 | 
				
			||||||
  %35 = extractvalue %dx.types.CBufRet.f32 %33, 1
 | 
					 | 
				
			||||||
  %36 = extractvalue %dx.types.CBufRet.f32 %33, 2
 | 
					 | 
				
			||||||
  %37 = call float @dx.op.dot3.f32(i32 55, float %20, float %21, float %22, float %34, float %35, float %36)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %38 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 0)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %39 = extractvalue %dx.types.CBufRet.f32 %38, 0
 | 
					 | 
				
			||||||
  %40 = fcmp fast une float %39, 0.000000e+00
 | 
					 | 
				
			||||||
  br i1 %40, label %41, label %76
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:41                                      ; preds = %0
 | 
					 | 
				
			||||||
  %42 = fcmp fast ugt float %27, 0x3FA4B5DCC0000000
 | 
					 | 
				
			||||||
  br i1 %42, label %45, label %43
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:43                                      ; preds = %41
 | 
					 | 
				
			||||||
  %44 = fmul fast float %27, 0x3FB3D07220000000
 | 
					 | 
				
			||||||
  br label %52
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:45                                      ; preds = %41
 | 
					 | 
				
			||||||
  %46 = fadd fast float %27, 0x3FAC28F5C0000000
 | 
					 | 
				
			||||||
  %47 = call float @dx.op.unary.f32(i32 6, float %46)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %48 = fmul fast float %47, 0x3FEE54EDE0000000
 | 
					 | 
				
			||||||
  %49 = call float @dx.op.unary.f32(i32 23, float %48)  ; Log(value)
 | 
					 | 
				
			||||||
  %50 = fmul fast float %49, 0x4003333340000000
 | 
					 | 
				
			||||||
  %51 = call float @dx.op.unary.f32(i32 21, float %50)  ; Exp(value)
 | 
					 | 
				
			||||||
  br label %52
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:52                                      ; preds = %45, %43
 | 
					 | 
				
			||||||
  %53 = phi float [ %44, %43 ], [ %51, %45 ]
 | 
					 | 
				
			||||||
  %54 = fcmp fast ugt float %32, 0x3FA4B5DCC0000000
 | 
					 | 
				
			||||||
  br i1 %54, label %57, label %55
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:55                                      ; preds = %52
 | 
					 | 
				
			||||||
  %56 = fmul fast float %32, 0x3FB3D07220000000
 | 
					 | 
				
			||||||
  br label %64
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:57                                      ; preds = %52
 | 
					 | 
				
			||||||
  %58 = fadd fast float %32, 0x3FAC28F5C0000000
 | 
					 | 
				
			||||||
  %59 = call float @dx.op.unary.f32(i32 6, float %58)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %60 = fmul fast float %59, 0x3FEE54EDE0000000
 | 
					 | 
				
			||||||
  %61 = call float @dx.op.unary.f32(i32 23, float %60)  ; Log(value)
 | 
					 | 
				
			||||||
  %62 = fmul fast float %61, 0x4003333340000000
 | 
					 | 
				
			||||||
  %63 = call float @dx.op.unary.f32(i32 21, float %62)  ; Exp(value)
 | 
					 | 
				
			||||||
  br label %64
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:64                                      ; preds = %57, %55
 | 
					 | 
				
			||||||
  %65 = phi float [ %56, %55 ], [ %63, %57 ]
 | 
					 | 
				
			||||||
  %66 = fcmp fast ugt float %37, 0x3FA4B5DCC0000000
 | 
					 | 
				
			||||||
  br i1 %66, label %69, label %67
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:67                                      ; preds = %64
 | 
					 | 
				
			||||||
  %68 = fmul fast float %37, 0x3FB3D07220000000
 | 
					 | 
				
			||||||
  br label %76
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:69                                      ; preds = %64
 | 
					 | 
				
			||||||
  %70 = fadd fast float %37, 0x3FAC28F5C0000000
 | 
					 | 
				
			||||||
  %71 = call float @dx.op.unary.f32(i32 6, float %70)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %72 = fmul fast float %71, 0x3FEE54EDE0000000
 | 
					 | 
				
			||||||
  %73 = call float @dx.op.unary.f32(i32 23, float %72)  ; Log(value)
 | 
					 | 
				
			||||||
  %74 = fmul fast float %73, 0x4003333340000000
 | 
					 | 
				
			||||||
  %75 = call float @dx.op.unary.f32(i32 21, float %74)  ; Exp(value)
 | 
					 | 
				
			||||||
  br label %76
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:76                                      ; preds = %69, %67, %0
 | 
					 | 
				
			||||||
  %77 = phi float [ %27, %0 ], [ %53, %69 ], [ %53, %67 ]
 | 
					 | 
				
			||||||
  %78 = phi float [ %32, %0 ], [ %65, %69 ], [ %65, %67 ]
 | 
					 | 
				
			||||||
  %79 = phi float [ %37, %0 ], [ %75, %69 ], [ %68, %67 ]
 | 
					 | 
				
			||||||
  %80 = extractvalue %dx.types.CBufRet.f32 %38, 1
 | 
					 | 
				
			||||||
  %81 = fmul fast float %77, %5
 | 
					 | 
				
			||||||
  %82 = fmul fast float %81, %80
 | 
					 | 
				
			||||||
  %83 = fmul fast float %78, %6
 | 
					 | 
				
			||||||
  %84 = fmul fast float %83, %80
 | 
					 | 
				
			||||||
  %85 = fmul fast float %79, %7
 | 
					 | 
				
			||||||
  %86 = fmul fast float %85, %80
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %82)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %84)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %86)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %8)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  ret void
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind
 | 
					 | 
				
			||||||
declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.ResRet.f32 @dx.op.sample.f32(i32, %dx.types.Handle, %dx.types.Handle, float, float, float, float, i32, i32, i32, float) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.dot3.f32(i32, float, float, float, float, float, float) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.unary.f32(i32, float) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
attributes #0 = { nounwind readnone }
 | 
					 | 
				
			||||||
attributes #1 = { nounwind }
 | 
					 | 
				
			||||||
attributes #2 = { nounwind readonly }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
!llvm.ident = !{!0}
 | 
					 | 
				
			||||||
!dx.version = !{!1}
 | 
					 | 
				
			||||||
!dx.valver = !{!2}
 | 
					 | 
				
			||||||
!dx.shaderModel = !{!3}
 | 
					 | 
				
			||||||
!dx.resources = !{!4}
 | 
					 | 
				
			||||||
!dx.viewIdState = !{!13}
 | 
					 | 
				
			||||||
!dx.entryPoints = !{!14}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
!0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"}
 | 
					 | 
				
			||||||
!1 = !{i32 1, i32 0}
 | 
					 | 
				
			||||||
!2 = !{i32 1, i32 6}
 | 
					 | 
				
			||||||
!3 = !{!"ps", i32 6, i32 0}
 | 
					 | 
				
			||||||
!4 = !{!5, null, !9, !11}
 | 
					 | 
				
			||||||
!5 = !{!6, !8}
 | 
					 | 
				
			||||||
!6 = !{i32 0, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 0, i32 1, i32 2, i32 0, !7}
 | 
					 | 
				
			||||||
!7 = !{i32 0, i32 9}
 | 
					 | 
				
			||||||
!8 = !{i32 1, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 1, i32 1, i32 2, i32 0, !7}
 | 
					 | 
				
			||||||
!9 = !{!10}
 | 
					 | 
				
			||||||
!10 = !{i32 0, %Constants* undef, !"", i32 0, i32 1, i32 1, i32 80, null}
 | 
					 | 
				
			||||||
!11 = !{!12}
 | 
					 | 
				
			||||||
!12 = !{i32 0, %struct.SamplerState* undef, !"", i32 0, i32 0, i32 1, i32 0, null}
 | 
					 | 
				
			||||||
!13 = !{[14 x i32] [i32 12, i32 4, i32 0, i32 0, i32 0, i32 0, i32 7, i32 7, i32 0, i32 0, i32 1, i32 2, i32 4, i32 8]}
 | 
					 | 
				
			||||||
!14 = !{void ()* @main, !"main", !15, !4, null}
 | 
					 | 
				
			||||||
!15 = !{!16, !23, null}
 | 
					 | 
				
			||||||
!16 = !{!17, !19, !21}
 | 
					 | 
				
			||||||
!17 = !{i32 0, !"SV_Position", i8 9, i8 3, !18, i8 4, i32 1, i8 4, i32 0, i8 0, null}
 | 
					 | 
				
			||||||
!18 = !{i32 0}
 | 
					 | 
				
			||||||
!19 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !18, i8 2, i32 1, i8 2, i32 1, i8 0, !20}
 | 
					 | 
				
			||||||
!20 = !{i32 3, i32 3}
 | 
					 | 
				
			||||||
!21 = !{i32 2, !"COLOR", i8 9, i8 0, !18, i8 2, i32 1, i8 4, i32 2, i8 0, !22}
 | 
					 | 
				
			||||||
!22 = !{i32 3, i32 15}
 | 
					 | 
				
			||||||
!23 = !{!24}
 | 
					 | 
				
			||||||
!24 = !{i32 0, !"SV_Target", i8 9, i8 16, !18, i8 0, i32 1, i8 4, i32 0, i8 0, !22}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const unsigned char g_main[] = {
 | 
					 | 
				
			||||||
  0x44, 0x58, 0x42, 0x43, 0x2f, 0x4e, 0x08, 0xaf, 0x84, 0x7b, 0x9a, 0xe0,
 | 
					 | 
				
			||||||
  0x28, 0x5a, 0x6c, 0x95, 0x41, 0x20, 0x49, 0xc2, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x7d, 0x15, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x49, 0x02, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0x7d, 0x0b, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x99, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
 | 
					 | 
				
			||||||
  0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00,
 | 
					 | 
				
			||||||
  0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c,
 | 
					 | 
				
			||||||
  0x4f, 0x52, 0x00, 0x4f, 0x53, 0x47, 0x31, 0x32, 0x00, 0x00, 0x00, 0x01,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
 | 
					 | 
				
			||||||
  0x00, 0x50, 0x53, 0x56, 0x30, 0x2c, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43,
 | 
					 | 
				
			||||||
  0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x44, 0x03, 0x03, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x42, 0x00, 0x03, 0x02, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x44,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x44, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x52, 0x54, 0x53,
 | 
					 | 
				
			||||||
  0x30, 0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0x01, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0x70, 0x08, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x60, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
 | 
					 | 
				
			||||||
  0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x58, 0x08, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x13, 0x02, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
 | 
					 | 
				
			||||||
  0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14,
 | 
					 | 
				
			||||||
  0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e,
 | 
					 | 
				
			||||||
  0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5,
 | 
					 | 
				
			||||||
  0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8,
 | 
					 | 
				
			||||||
  0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86,
 | 
					 | 
				
			||||||
  0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08,
 | 
					 | 
				
			||||||
  0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x53, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4,
 | 
					 | 
				
			||||||
  0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c,
 | 
					 | 
				
			||||||
  0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x8c, 0xc1, 0x08, 0x40, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40,
 | 
					 | 
				
			||||||
  0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4,
 | 
					 | 
				
			||||||
  0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98,
 | 
					 | 
				
			||||||
  0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70,
 | 
					 | 
				
			||||||
  0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58,
 | 
					 | 
				
			||||||
  0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d,
 | 
					 | 
				
			||||||
  0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c,
 | 
					 | 
				
			||||||
  0x14, 0x1d, 0x35, 0x5c, 0xfe, 0x84, 0x3d, 0x84, 0xe4, 0x73, 0x1b, 0x55,
 | 
					 | 
				
			||||||
  0xac, 0xc4, 0xe4, 0x17, 0xb7, 0x8d, 0x88, 0x61, 0x18, 0x86, 0x42, 0x4c,
 | 
					 | 
				
			||||||
  0x04, 0x43, 0x10, 0x35, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xb0,
 | 
					 | 
				
			||||||
  0xe8, 0x1a, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8,
 | 
					 | 
				
			||||||
  0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca,
 | 
					 | 
				
			||||||
  0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc,
 | 
					 | 
				
			||||||
  0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8,
 | 
					 | 
				
			||||||
  0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40,
 | 
					 | 
				
			||||||
  0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50,
 | 
					 | 
				
			||||||
  0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0,
 | 
					 | 
				
			||||||
  0x07, 0x48, 0xd0, 0x36, 0xe2, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66,
 | 
					 | 
				
			||||||
  0x92, 0x10, 0x32, 0x0c, 0xc3, 0xa0, 0x69, 0x9a, 0x46, 0xde, 0x4d, 0xd2,
 | 
					 | 
				
			||||||
  0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0,
 | 
					 | 
				
			||||||
  0x44, 0xa0, 0x80, 0x20, 0x30, 0x1d, 0x08, 0x00, 0x00, 0x13, 0x14, 0x72,
 | 
					 | 
				
			||||||
  0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72,
 | 
					 | 
				
			||||||
  0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e,
 | 
					 | 
				
			||||||
  0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07,
 | 
					 | 
				
			||||||
  0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
 | 
					 | 
				
			||||||
  0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07,
 | 
					 | 
				
			||||||
  0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07,
 | 
					 | 
				
			||||||
  0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07,
 | 
					 | 
				
			||||||
  0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07,
 | 
					 | 
				
			||||||
  0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06,
 | 
					 | 
				
			||||||
  0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e,
 | 
					 | 
				
			||||||
  0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
 | 
					 | 
				
			||||||
  0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00,
 | 
					 | 
				
			||||||
  0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01,
 | 
					 | 
				
			||||||
  0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x87,
 | 
					 | 
				
			||||||
  0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21,
 | 
					 | 
				
			||||||
  0xcf, 0x05, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x59, 0x20, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98,
 | 
					 | 
				
			||||||
  0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
 | 
					 | 
				
			||||||
  0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0,
 | 
					 | 
				
			||||||
  0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0xca, 0xa3, 0x94, 0xca, 0x36, 0x80, 0x8a, 0x92, 0x28, 0x83,
 | 
					 | 
				
			||||||
  0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0x21, 0xab, 0x06, 0xa8, 0x9b, 0x01,
 | 
					 | 
				
			||||||
  0x20, 0x6f, 0x06, 0x80, 0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48, 0x1c,
 | 
					 | 
				
			||||||
  0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10,
 | 
					 | 
				
			||||||
  0x00, 0x79, 0x18, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c,
 | 
					 | 
				
			||||||
  0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03,
 | 
					 | 
				
			||||||
  0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01,
 | 
					 | 
				
			||||||
  0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a,
 | 
					 | 
				
			||||||
  0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b,
 | 
					 | 
				
			||||||
  0xd9, 0x10, 0x04, 0x13, 0x04, 0x02, 0x99, 0x20, 0x10, 0xc9, 0x06, 0x61,
 | 
					 | 
				
			||||||
  0x20, 0x36, 0x08, 0x04, 0x41, 0x01, 0x6e, 0x6e, 0x82, 0x40, 0x28, 0x1b,
 | 
					 | 
				
			||||||
  0x86, 0x03, 0x21, 0x26, 0x08, 0x5d, 0x18, 0x70, 0xa1, 0x43, 0x2b, 0xa3,
 | 
					 | 
				
			||||||
  0x2a, 0xc3, 0xa3, 0xab, 0x93, 0x2b, 0xcb, 0x9a, 0x20, 0x10, 0xcb, 0x04,
 | 
					 | 
				
			||||||
  0x81, 0x60, 0x36, 0x08, 0x44, 0xb3, 0x21, 0x21, 0x94, 0x85, 0x20, 0x06,
 | 
					 | 
				
			||||||
  0x86, 0x70, 0xc8, 0xd0, 0xa1, 0x95, 0x51, 0x95, 0xe1, 0xd1, 0xd5, 0xc9,
 | 
					 | 
				
			||||||
  0x95, 0x55, 0x59, 0x6d, 0x48, 0x06, 0x05, 0x22, 0x86, 0x81, 0x21, 0x9c,
 | 
					 | 
				
			||||||
  0x0d, 0xc2, 0x13, 0x4d, 0x10, 0xbe, 0x31, 0x60, 0x32, 0xf4, 0xe6, 0x36,
 | 
					 | 
				
			||||||
  0x47, 0x17, 0xe6, 0x46, 0x37, 0x37, 0x41, 0x20, 0x9a, 0x0d, 0x08, 0x31,
 | 
					 | 
				
			||||||
  0x51, 0xc4, 0x30, 0x54, 0xc0, 0x86, 0xc0, 0x9a, 0x20, 0x84, 0x01, 0x19,
 | 
					 | 
				
			||||||
  0x50, 0xa1, 0x43, 0x2b, 0x9b, 0x0a, 0x6b, 0x83, 0x63, 0x2b, 0x93, 0xdb,
 | 
					 | 
				
			||||||
  0x80, 0x10, 0x58, 0x46, 0x10, 0x03, 0x01, 0x6c, 0x08, 0xb4, 0x0d, 0x84,
 | 
					 | 
				
			||||||
  0x04, 0x5c, 0xdb, 0x04, 0xc1, 0x13, 0x03, 0x32, 0x73, 0x63, 0x52, 0x47,
 | 
					 | 
				
			||||||
  0x42, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x13, 0x04, 0xc2, 0x99,
 | 
					 | 
				
			||||||
  0x20, 0x10, 0xcf, 0x04, 0xc1, 0x02, 0x83, 0x0d, 0x08, 0xe2, 0x7d, 0x04,
 | 
					 | 
				
			||||||
  0x18, 0x34, 0x4d, 0x18, 0x70, 0x19, 0x7b, 0x63, 0x7b, 0x93, 0xfb, 0x9a,
 | 
					 | 
				
			||||||
  0x1b, 0x0b, 0x63, 0x2b, 0x9b, 0x20, 0x10, 0xd0, 0x06, 0x04, 0x19, 0x83,
 | 
					 | 
				
			||||||
  0x8f, 0x0c, 0xc0, 0xa0, 0x69, 0xc2, 0x80, 0x47, 0x9d, 0x5b, 0xdd, 0x5c,
 | 
					 | 
				
			||||||
  0x19, 0x59, 0xcc, 0x04, 0x81, 0x88, 0x36, 0x18, 0x88, 0x19, 0x7c, 0x67,
 | 
					 | 
				
			||||||
  0x00, 0x06, 0x0d, 0x8f, 0x3a, 0xb7, 0xba, 0xb9, 0x32, 0x32, 0x99, 0x09,
 | 
					 | 
				
			||||||
  0x02, 0x21, 0x6d, 0x30, 0x90, 0x34, 0xf8, 0xd4, 0x00, 0x0c, 0x1a, 0x1e,
 | 
					 | 
				
			||||||
  0x59, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x13, 0x04, 0x62, 0xda, 0x80,
 | 
					 | 
				
			||||||
  0x20, 0x6c, 0xf0, 0xb5, 0x01, 0x18, 0x34, 0x4d, 0x18, 0xd0, 0x90, 0x1a,
 | 
					 | 
				
			||||||
  0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd4, 0x06, 0x04, 0x79, 0x83,
 | 
					 | 
				
			||||||
  0x0f, 0x0e, 0xc0, 0xa0, 0x69, 0xc2, 0x80, 0xc6, 0xd1, 0xd8, 0x5b, 0x99,
 | 
					 | 
				
			||||||
  0x99, 0xd9, 0x04, 0x81, 0xa8, 0x36, 0x20, 0x88, 0x1c, 0x7c, 0x73, 0x00,
 | 
					 | 
				
			||||||
  0x06, 0x4d, 0x13, 0x06, 0x34, 0x84, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26,
 | 
					 | 
				
			||||||
  0x08, 0x84, 0xb5, 0x01, 0x41, 0xea, 0xe0, 0xb3, 0x03, 0x30, 0x68, 0x9a,
 | 
					 | 
				
			||||||
  0x30, 0xd8, 0x90, 0x54, 0x62, 0x50, 0x06, 0x68, 0xb0, 0x06, 0x6e, 0x10,
 | 
					 | 
				
			||||||
  0x07, 0x74, 0x70, 0x07, 0x1b, 0x06, 0xa2, 0xc3, 0x83, 0x09, 0x82, 0x00,
 | 
					 | 
				
			||||||
  0x6c, 0x00, 0x36, 0x0c, 0xc4, 0x1e, 0xec, 0xc1, 0x86, 0x80, 0x0f, 0x36,
 | 
					 | 
				
			||||||
  0x0c, 0x83, 0x1e, 0xf4, 0xc1, 0x04, 0x41, 0x0c, 0xca, 0x60, 0x43, 0xf0,
 | 
					 | 
				
			||||||
  0x07, 0x24, 0xda, 0xc2, 0xd2, 0xdc, 0xb8, 0x4c, 0x59, 0x7d, 0x41, 0xbd,
 | 
					 | 
				
			||||||
  0xcd, 0xa5, 0xd1, 0xa5, 0xbd, 0xb9, 0x4d, 0x10, 0x0a, 0x6d, 0x82, 0x50,
 | 
					 | 
				
			||||||
  0x6c, 0x1b, 0x02, 0x62, 0x82, 0x50, 0x70, 0x13, 0x84, 0xa2, 0xdb, 0xb0,
 | 
					 | 
				
			||||||
  0x10, 0xa2, 0x30, 0x0a, 0xa4, 0x50, 0x0a, 0xa6, 0x30, 0x98, 0x02, 0x71,
 | 
					 | 
				
			||||||
  0x0a, 0x00, 0x11, 0xaa, 0x22, 0xac, 0xa1, 0xa7, 0x27, 0x29, 0xa2, 0x09,
 | 
					 | 
				
			||||||
  0x42, 0xe1, 0x6d, 0x10, 0xbe, 0x6f, 0xc3, 0x32, 0xa4, 0xc2, 0x28, 0x9c,
 | 
					 | 
				
			||||||
  0x42, 0x29, 0xa8, 0xc2, 0xa0, 0x0a, 0xc3, 0x29, 0xac, 0x02, 0x8b, 0xa1,
 | 
					 | 
				
			||||||
  0x27, 0xa6, 0x27, 0xa9, 0x09, 0x02, 0x71, 0x6d, 0x10, 0x3e, 0x57, 0xd8,
 | 
					 | 
				
			||||||
  0xb0, 0x30, 0xad, 0x30, 0x0a, 0xa7, 0x50, 0x0a, 0xaa, 0x30, 0x98, 0x02,
 | 
					 | 
				
			||||||
  0x73, 0x0a, 0xaf, 0xb0, 0x61, 0x40, 0x05, 0x56, 0x80, 0x05, 0x26, 0x53,
 | 
					 | 
				
			||||||
  0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x13, 0x84, 0xe2, 0xdb,
 | 
					 | 
				
			||||||
  0xb0, 0x10, 0xb2, 0x30, 0x0a, 0xb3, 0x50, 0x0a, 0xa7, 0x30, 0x98, 0x02,
 | 
					 | 
				
			||||||
  0x71, 0x0a, 0xaf, 0xb0, 0x21, 0xa0, 0x85, 0x0d, 0x43, 0x2c, 0xd4, 0x02,
 | 
					 | 
				
			||||||
  0xb0, 0xa1, 0xd0, 0x83, 0x50, 0xb0, 0x05, 0x0e, 0x20, 0x22, 0x26, 0x17,
 | 
					 | 
				
			||||||
  0xe6, 0x36, 0x86, 0x56, 0x36, 0x47, 0xc3, 0x8c, 0xed, 0x2d, 0x8c, 0x6e,
 | 
					 | 
				
			||||||
  0x6e, 0x82, 0x40, 0x60, 0x2c, 0xd2, 0xdc, 0xe6, 0xe8, 0xe6, 0x26, 0x08,
 | 
					 | 
				
			||||||
  0x44, 0x46, 0x63, 0x2e, 0xed, 0xec, 0x8b, 0x8d, 0x8c, 0xc6, 0x5c, 0xda,
 | 
					 | 
				
			||||||
  0xd9, 0xd7, 0x1c, 0x1d, 0x11, 0xba, 0x32, 0xbc, 0x2f, 0xb7, 0x37, 0xb9,
 | 
					 | 
				
			||||||
  0xb6, 0x0d, 0x0c, 0x2e, 0x90, 0x41, 0x2e, 0xe8, 0xc2, 0x2e, 0xf0, 0x42,
 | 
					 | 
				
			||||||
  0x2f, 0x20, 0xbe, 0x40, 0x06, 0xbf, 0xc0, 0x54, 0x61, 0x63, 0xb3, 0x6b,
 | 
					 | 
				
			||||||
  0x73, 0x49, 0x23, 0x2b, 0x73, 0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0,
 | 
					 | 
				
			||||||
  0x5c, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13,
 | 
					 | 
				
			||||||
  0x32, 0x3c, 0x17, 0xbb, 0x30, 0x36, 0xbb, 0x32, 0xb9, 0x29, 0x41, 0x51,
 | 
					 | 
				
			||||||
  0x87, 0x0c, 0xcf, 0x65, 0x0e, 0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d,
 | 
					 | 
				
			||||||
  0xac, 0x8c, 0x6d, 0x4a, 0x80, 0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b,
 | 
					 | 
				
			||||||
  0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x9b, 0x9b, 0x12, 0x6c, 0x95, 0xc8, 0xf0,
 | 
					 | 
				
			||||||
  0x5c, 0xe8, 0xf2, 0xe0, 0xca, 0x82, 0xdc, 0xdc, 0xde, 0xe8, 0xc2, 0xe8,
 | 
					 | 
				
			||||||
  0xd2, 0xde, 0xdc, 0xe6, 0xa6, 0x08, 0x78, 0xd0, 0x07, 0x75, 0xc8, 0xf0,
 | 
					 | 
				
			||||||
  0x5c, 0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca,
 | 
					 | 
				
			||||||
  0xa6, 0x04, 0x7f, 0x50, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e,
 | 
					 | 
				
			||||||
  0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x60, 0x0b, 0x5d, 0xc8,
 | 
					 | 
				
			||||||
  0xf0, 0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0xca, 0xe4, 0xe6, 0xa6, 0x04,
 | 
					 | 
				
			||||||
  0xbf, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d,
 | 
					 | 
				
			||||||
  0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07,
 | 
					 | 
				
			||||||
  0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80,
 | 
					 | 
				
			||||||
  0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66,
 | 
					 | 
				
			||||||
  0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d,
 | 
					 | 
				
			||||||
  0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07,
 | 
					 | 
				
			||||||
  0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03,
 | 
					 | 
				
			||||||
  0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50,
 | 
					 | 
				
			||||||
  0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2,
 | 
					 | 
				
			||||||
  0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39,
 | 
					 | 
				
			||||||
  0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14,
 | 
					 | 
				
			||||||
  0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07,
 | 
					 | 
				
			||||||
  0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07,
 | 
					 | 
				
			||||||
  0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87,
 | 
					 | 
				
			||||||
  0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0,
 | 
					 | 
				
			||||||
  0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8,
 | 
					 | 
				
			||||||
  0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc,
 | 
					 | 
				
			||||||
  0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6,
 | 
					 | 
				
			||||||
  0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39,
 | 
					 | 
				
			||||||
  0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f,
 | 
					 | 
				
			||||||
  0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c,
 | 
					 | 
				
			||||||
  0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87,
 | 
					 | 
				
			||||||
  0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0,
 | 
					 | 
				
			||||||
  0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50,
 | 
					 | 
				
			||||||
  0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4,
 | 
					 | 
				
			||||||
  0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x71, 0x20, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x66, 0xb0, 0x0d,
 | 
					 | 
				
			||||||
  0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c,
 | 
					 | 
				
			||||||
  0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x07, 0xd2, 0x70, 0xf9,
 | 
					 | 
				
			||||||
  0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x18,
 | 
					 | 
				
			||||||
  0x81, 0x33, 0x5c, 0xbe, 0xf3, 0xf8, 0x83, 0x33, 0xdd, 0x7e, 0x71, 0xdb,
 | 
					 | 
				
			||||||
  0x16, 0x30, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0xe2, 0x00, 0x83, 0xd8, 0x3c,
 | 
					 | 
				
			||||||
  0xd4, 0xe4, 0x17, 0xb7, 0x6d, 0x03, 0xd0, 0x70, 0xf9, 0xce, 0xe3, 0x4b,
 | 
					 | 
				
			||||||
  0x00, 0xf3, 0x2c, 0x84, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
 | 
					 | 
				
			||||||
  0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
 | 
					 | 
				
			||||||
  0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9,
 | 
					 | 
				
			||||||
  0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x7b, 0xe7, 0x34, 0x89, 0x41, 0x92, 0xb8, 0x7b, 0x75, 0x0f, 0x26,
 | 
					 | 
				
			||||||
  0xf1, 0x82, 0x76, 0x6c, 0x91, 0x44, 0x58, 0x49, 0x4c, 0xdc, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x60, 0x00, 0x00, 0x00, 0x77, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
 | 
					 | 
				
			||||||
  0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xc4, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x6e, 0x02, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
 | 
					 | 
				
			||||||
  0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14,
 | 
					 | 
				
			||||||
  0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e,
 | 
					 | 
				
			||||||
  0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5,
 | 
					 | 
				
			||||||
  0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8,
 | 
					 | 
				
			||||||
  0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86,
 | 
					 | 
				
			||||||
  0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08,
 | 
					 | 
				
			||||||
  0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x54, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4,
 | 
					 | 
				
			||||||
  0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c,
 | 
					 | 
				
			||||||
  0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x90, 0xc1, 0x08, 0x40, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40,
 | 
					 | 
				
			||||||
  0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4,
 | 
					 | 
				
			||||||
  0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98,
 | 
					 | 
				
			||||||
  0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70,
 | 
					 | 
				
			||||||
  0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58,
 | 
					 | 
				
			||||||
  0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d,
 | 
					 | 
				
			||||||
  0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c,
 | 
					 | 
				
			||||||
  0x14, 0x1d, 0x35, 0x5c, 0xfe, 0x84, 0x3d, 0x84, 0xe4, 0x73, 0x1b, 0x55,
 | 
					 | 
				
			||||||
  0xac, 0xc4, 0xe4, 0x17, 0xb7, 0x8d, 0x88, 0x61, 0x18, 0x86, 0x42, 0x4c,
 | 
					 | 
				
			||||||
  0x04, 0x43, 0x10, 0x35, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xb0,
 | 
					 | 
				
			||||||
  0xe8, 0x1a, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8,
 | 
					 | 
				
			||||||
  0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca,
 | 
					 | 
				
			||||||
  0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc,
 | 
					 | 
				
			||||||
  0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8,
 | 
					 | 
				
			||||||
  0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40,
 | 
					 | 
				
			||||||
  0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50,
 | 
					 | 
				
			||||||
  0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0,
 | 
					 | 
				
			||||||
  0x07, 0x48, 0xd0, 0x36, 0xe2, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66,
 | 
					 | 
				
			||||||
  0x92, 0x10, 0x32, 0x0c, 0xc3, 0xa0, 0x69, 0x9a, 0x46, 0xde, 0x4d, 0xd2,
 | 
					 | 
				
			||||||
  0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0,
 | 
					 | 
				
			||||||
  0x44, 0xa0, 0x80, 0x20, 0x30, 0x1d, 0x88, 0x29, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87,
 | 
					 | 
				
			||||||
  0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0,
 | 
					 | 
				
			||||||
  0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0,
 | 
					 | 
				
			||||||
  0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20,
 | 
					 | 
				
			||||||
  0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
 | 
					 | 
				
			||||||
  0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30,
 | 
					 | 
				
			||||||
  0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40,
 | 
					 | 
				
			||||||
  0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0,
 | 
					 | 
				
			||||||
  0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30,
 | 
					 | 
				
			||||||
  0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40,
 | 
					 | 
				
			||||||
  0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30,
 | 
					 | 
				
			||||||
  0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10,
 | 
					 | 
				
			||||||
  0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2,
 | 
					 | 
				
			||||||
  0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
 | 
					 | 
				
			||||||
  0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0xc0, 0x90, 0x87, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x80, 0x21, 0xcf, 0x05, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26,
 | 
					 | 
				
			||||||
  0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0,
 | 
					 | 
				
			||||||
  0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a, 0x92, 0x28, 0x83, 0x42,
 | 
					 | 
				
			||||||
  0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x6e, 0x06, 0x80, 0xbe, 0x19, 0x00,
 | 
					 | 
				
			||||||
  0x0a, 0x67, 0x00, 0x48, 0x1c, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3,
 | 
					 | 
				
			||||||
  0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x6d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
 | 
					 | 
				
			||||||
  0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
 | 
					 | 
				
			||||||
  0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
 | 
					 | 
				
			||||||
  0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
 | 
					 | 
				
			||||||
  0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
 | 
					 | 
				
			||||||
  0x04, 0x02, 0x99, 0x20, 0x10, 0xc9, 0x06, 0x61, 0x20, 0x26, 0x08, 0x84,
 | 
					 | 
				
			||||||
  0xb2, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26,
 | 
					 | 
				
			||||||
  0x08, 0x9d, 0x45, 0x60, 0x82, 0x40, 0x2c, 0x13, 0x04, 0x82, 0xd9, 0x20,
 | 
					 | 
				
			||||||
  0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x90,
 | 
					 | 
				
			||||||
  0x0c, 0xca, 0x42, 0x0c, 0x03, 0x43, 0x38, 0x1b, 0x84, 0x07, 0x9a, 0x20,
 | 
					 | 
				
			||||||
  0x7c, 0xd7, 0x04, 0x81, 0x68, 0x36, 0x20, 0x84, 0xb4, 0x10, 0xc3, 0x30,
 | 
					 | 
				
			||||||
  0x01, 0x1b, 0x02, 0x6a, 0x82, 0x10, 0x06, 0xd8, 0x06, 0x84, 0xb0, 0x16,
 | 
					 | 
				
			||||||
  0x82, 0x18, 0x08, 0x60, 0x43, 0x70, 0x6d, 0x20, 0x22, 0xa0, 0xc2, 0x26,
 | 
					 | 
				
			||||||
  0x08, 0x62, 0x90, 0x6d, 0x08, 0xb4, 0x09, 0x82, 0x00, 0x90, 0x68, 0x0b,
 | 
					 | 
				
			||||||
  0x4b, 0x73, 0xe3, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46, 0x97,
 | 
					 | 
				
			||||||
  0xf6, 0xe6, 0x36, 0x41, 0x28, 0xa0, 0x09, 0x42, 0x11, 0x6d, 0x08, 0x88,
 | 
					 | 
				
			||||||
  0x09, 0x42, 0x21, 0x4d, 0x10, 0x8a, 0x69, 0xc3, 0x42, 0x78, 0x1f, 0x18,
 | 
					 | 
				
			||||||
  0x84, 0x81, 0x18, 0x0c, 0x62, 0x40, 0x8c, 0x01, 0x40, 0x84, 0xaa, 0x08,
 | 
					 | 
				
			||||||
  0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x50, 0x13, 0x04, 0xc2,
 | 
					 | 
				
			||||||
  0xd9, 0x20, 0x9c, 0xc1, 0x19, 0x6c, 0x58, 0x86, 0x32, 0xf8, 0xc6, 0x20,
 | 
					 | 
				
			||||||
  0x0c, 0xcc, 0x60, 0x30, 0x83, 0x61, 0x0c, 0xd0, 0x80, 0xc5, 0xd0, 0x13,
 | 
					 | 
				
			||||||
  0xd3, 0x93, 0xd4, 0x04, 0x81, 0x78, 0x36, 0x08, 0x67, 0xb0, 0x06, 0x1b,
 | 
					 | 
				
			||||||
  0x16, 0x46, 0x0d, 0xbe, 0x31, 0x08, 0x03, 0x33, 0x18, 0xc4, 0x80, 0x19,
 | 
					 | 
				
			||||||
  0x03, 0x36, 0xd8, 0x30, 0x90, 0x41, 0x1a, 0xb4, 0x01, 0x93, 0x29, 0xab,
 | 
					 | 
				
			||||||
  0x2f, 0xaa, 0x30, 0xb9, 0xb3, 0x32, 0xba, 0x09, 0x42, 0x51, 0x6d, 0x58,
 | 
					 | 
				
			||||||
  0x88, 0x37, 0xf8, 0xe0, 0x20, 0x0c, 0xc6, 0x60, 0x10, 0x03, 0x62, 0x0c,
 | 
					 | 
				
			||||||
  0xd8, 0x60, 0x43, 0x10, 0x07, 0x1b, 0x06, 0x37, 0x90, 0x03, 0x60, 0x43,
 | 
					 | 
				
			||||||
  0xc1, 0x75, 0x73, 0x90, 0x01, 0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2,
 | 
					 | 
				
			||||||
  0xc8, 0xca, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb,
 | 
					 | 
				
			||||||
  0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf,
 | 
					 | 
				
			||||||
  0xc5, 0x2e, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x60, 0xd4, 0x21, 0xc3,
 | 
					 | 
				
			||||||
  0x73, 0x99, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63,
 | 
					 | 
				
			||||||
  0x9b, 0x12, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea,
 | 
					 | 
				
			||||||
  0xe4, 0xc6, 0xca, 0xe6, 0xa6, 0x04, 0x58, 0x1d, 0x32, 0x3c, 0x17, 0xbb,
 | 
					 | 
				
			||||||
  0xb4, 0xb2, 0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30, 0xba, 0xb2, 0x29, 0x81,
 | 
					 | 
				
			||||||
  0x56, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d,
 | 
					 | 
				
			||||||
  0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x30, 0x07, 0x00, 0x00, 0x79, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
 | 
					 | 
				
			||||||
  0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
 | 
					 | 
				
			||||||
  0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
 | 
					 | 
				
			||||||
  0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d,
 | 
					 | 
				
			||||||
  0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83,
 | 
					 | 
				
			||||||
  0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78,
 | 
					 | 
				
			||||||
  0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70,
 | 
					 | 
				
			||||||
  0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc,
 | 
					 | 
				
			||||||
  0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3,
 | 
					 | 
				
			||||||
  0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c,
 | 
					 | 
				
			||||||
  0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83,
 | 
					 | 
				
			||||||
  0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03,
 | 
					 | 
				
			||||||
  0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68,
 | 
					 | 
				
			||||||
  0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60,
 | 
					 | 
				
			||||||
  0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80,
 | 
					 | 
				
			||||||
  0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98,
 | 
					 | 
				
			||||||
  0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec,
 | 
					 | 
				
			||||||
  0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c,
 | 
					 | 
				
			||||||
  0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d,
 | 
					 | 
				
			||||||
  0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43,
 | 
					 | 
				
			||||||
  0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03,
 | 
					 | 
				
			||||||
  0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03,
 | 
					 | 
				
			||||||
  0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28,
 | 
					 | 
				
			||||||
  0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4,
 | 
					 | 
				
			||||||
  0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1,
 | 
					 | 
				
			||||||
  0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f,
 | 
					 | 
				
			||||||
  0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c,
 | 
					 | 
				
			||||||
  0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x1e, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x66, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41,
 | 
					 | 
				
			||||||
  0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d,
 | 
					 | 
				
			||||||
  0x07, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08,
 | 
					 | 
				
			||||||
  0x34, 0xc3, 0x42, 0x18, 0x81, 0x33, 0x5c, 0xbe, 0xf3, 0xf8, 0x83, 0x33,
 | 
					 | 
				
			||||||
  0xdd, 0x7e, 0x71, 0xdb, 0x16, 0x30, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0xe2,
 | 
					 | 
				
			||||||
  0x00, 0x83, 0xd8, 0x3c, 0xd4, 0xe4, 0x17, 0xb7, 0x6d, 0x03, 0xd0, 0x70,
 | 
					 | 
				
			||||||
  0xf9, 0xce, 0xe3, 0x4b, 0x00, 0xf3, 0x2c, 0x84, 0x5f, 0xdc, 0xb6, 0x09,
 | 
					 | 
				
			||||||
  0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
 | 
					 | 
				
			||||||
  0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f,
 | 
					 | 
				
			||||||
  0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03,
 | 
					 | 
				
			||||||
  0x00, 0x61, 0x20, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x13, 0x04, 0x4b,
 | 
					 | 
				
			||||||
  0x2c, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x64, 0x8d, 0x00,
 | 
					 | 
				
			||||||
  0x50, 0x51, 0x02, 0x44, 0x14, 0x5e, 0xa9, 0x94, 0x4b, 0xb9, 0x95, 0xc2,
 | 
					 | 
				
			||||||
  0x0c, 0x40, 0x21, 0x94, 0x5d, 0xc9, 0xd1, 0x30, 0x02, 0x30, 0x46, 0xa0,
 | 
					 | 
				
			||||||
  0xb3, 0xe6, 0x1c, 0x82, 0xc1, 0x18, 0xc1, 0xbb, 0xa7, 0xe5, 0xfd, 0x8d,
 | 
					 | 
				
			||||||
  0x11, 0xb8, 0x7d, 0x2c, 0xda, 0xde, 0x18, 0x41, 0xcc, 0x83, 0x7d, 0xee,
 | 
					 | 
				
			||||||
  0x8d, 0x11, 0x98, 0xf7, 0xba, 0xca, 0xde, 0x0c, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x95, 0x01, 0x92, 0x91,
 | 
					 | 
				
			||||||
  0x01, 0x19, 0x48, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x99, 0x41,
 | 
					 | 
				
			||||||
  0xa2, 0x91, 0x01, 0x19, 0x4c, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70,
 | 
					 | 
				
			||||||
  0x9d, 0x81, 0xd2, 0x95, 0x41, 0x19, 0x50, 0x23, 0x06, 0x09, 0x00, 0x82,
 | 
					 | 
				
			||||||
  0x60, 0x70, 0xa1, 0xc1, 0xb2, 0x99, 0xc1, 0x19, 0x54, 0x23, 0x06, 0x09,
 | 
					 | 
				
			||||||
  0x00, 0x82, 0x60, 0x60, 0xbc, 0x81, 0x53, 0x06, 0x67, 0xd0, 0x3d, 0x23,
 | 
					 | 
				
			||||||
  0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc0, 0xc1, 0x63, 0x06, 0x68, 0x60,
 | 
					 | 
				
			||||||
  0x41, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc4, 0x01, 0x74, 0x06,
 | 
					 | 
				
			||||||
  0x69, 0xe0, 0x45, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc8, 0x41,
 | 
					 | 
				
			||||||
  0x84, 0x06, 0x6a, 0x20, 0x06, 0xd2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
 | 
					 | 
				
			||||||
  0x18, 0x73, 0x20, 0xb1, 0xc1, 0x1a, 0x84, 0xc1, 0x34, 0x62, 0x90, 0x00,
 | 
					 | 
				
			||||||
  0x20, 0x08, 0x06, 0x06, 0x1d, 0x4c, 0x6d, 0xc0, 0x06, 0x1a, 0x35, 0x62,
 | 
					 | 
				
			||||||
  0xf0, 0x00, 0x20, 0x08, 0x06, 0xcd, 0x1c, 0x68, 0x09, 0x22, 0x04, 0xcb,
 | 
					 | 
				
			||||||
  0xd2, 0x06, 0x6d, 0x50, 0x2d, 0xa3, 0x09, 0x01, 0x30, 0x62, 0xf0, 0x00,
 | 
					 | 
				
			||||||
  0x20, 0x08, 0x06, 0x4d, 0x1d, 0x70, 0x8c, 0x42, 0x0c, 0x4d, 0xf3, 0x06,
 | 
					 | 
				
			||||||
  0x6f, 0x70, 0x35, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0x23, 0x06,
 | 
					 | 
				
			||||||
  0x07, 0x00, 0x82, 0x60, 0x40, 0xd5, 0x01, 0xc6, 0xcc, 0xc1, 0x68, 0x42,
 | 
					 | 
				
			||||||
  0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0xd8, 0x80, 0xc0, 0xc7,
 | 
					 | 
				
			||||||
  0x86, 0x03, 0x3e, 0x36, 0x1c, 0xf0, 0x19, 0x31, 0x38, 0x00, 0x10, 0x04,
 | 
					 | 
				
			||||||
  0x03, 0x8a, 0x0f, 0xbe, 0xe9, 0x0e, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41,
 | 
					 | 
				
			||||||
  0x08, 0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40, 0x10, 0x0c, 0x1e,
 | 
					 | 
				
			||||||
  0x51, 0x38, 0x83, 0xc3, 0x28, 0x06, 0x21, 0x18, 0x31, 0x38, 0x00, 0x10,
 | 
					 | 
				
			||||||
  0x04, 0x03, 0x2a, 0x14, 0xc8, 0x00, 0xcb, 0x83, 0xd1, 0x84, 0x00, 0x18,
 | 
					 | 
				
			||||||
  0x4d, 0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31, 0x58, 0x00, 0x10, 0x04,
 | 
					 | 
				
			||||||
  0x83, 0xe7, 0x14, 0xd8, 0x80, 0x59, 0x94, 0x41, 0x08, 0x46, 0x0c, 0x0e,
 | 
					 | 
				
			||||||
  0x00, 0x04, 0xc1, 0x80, 0x32, 0x85, 0x34, 0xe8, 0xd4, 0x60, 0x34, 0x21,
 | 
					 | 
				
			||||||
  0x00, 0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10, 0x46, 0x0c, 0x16, 0x00,
 | 
					 | 
				
			||||||
  0x04, 0xc1, 0xe0, 0x61, 0x85, 0x38, 0x88, 0xa0, 0x67, 0x10, 0x82, 0x11,
 | 
					 | 
				
			||||||
  0x83, 0x03, 0x00, 0x41, 0x30, 0xa0, 0x56, 0xc1, 0x0d, 0xc4, 0x00, 0x15,
 | 
					 | 
				
			||||||
  0x46, 0x13, 0x02, 0x60, 0x38, 0x22, 0x70, 0x03, 0xe7, 0x9b, 0x65, 0x08,
 | 
					 | 
				
			||||||
  0x94, 0x60, 0x38, 0xc2, 0x51, 0x03, 0xe5, 0x9b, 0x65, 0x18, 0x84, 0xc0,
 | 
					 | 
				
			||||||
  0x1e, 0x36, 0x90, 0xcf, 0x2c, 0x01, 0x61, 0x90, 0x1b, 0xc0, 0x67, 0xc4,
 | 
					 | 
				
			||||||
  0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x59, 0x68, 0x85, 0xc0, 0x82, 0x38,
 | 
					 | 
				
			||||||
  0x90, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x44, 0xb4, 0xb0, 0x07,
 | 
					 | 
				
			||||||
  0x81, 0x05, 0x74, 0x20, 0x9f, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x88,
 | 
					 | 
				
			||||||
  0x6c, 0xc1, 0x0f, 0x82, 0x59, 0x02, 0x62, 0xa0, 0x62, 0x70, 0x04, 0x61,
 | 
					 | 
				
			||||||
  0x18, 0x8e, 0x90, 0xe6, 0x40, 0xf9, 0x66, 0x19, 0x8c, 0x22, 0xb0, 0xa9,
 | 
					 | 
				
			||||||
  0x0e, 0xe4, 0x33, 0x4b, 0x70, 0x18, 0x75, 0x07, 0xf0, 0x19, 0x31, 0x30,
 | 
					 | 
				
			||||||
  0x00, 0x10, 0x04, 0x83, 0x68, 0x17, 0x6c, 0x21, 0xb0, 0x40, 0x0f, 0xe4,
 | 
					 | 
				
			||||||
  0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x51, 0x2f, 0x90, 0x42, 0x60,
 | 
					 | 
				
			||||||
  0x41, 0x1f, 0xc8, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0x5f,
 | 
					 | 
				
			||||||
  0x38, 0x85, 0x60, 0x96, 0xe0, 0x18, 0xa8, 0x18, 0x9c, 0x42, 0x30, 0x86,
 | 
					 | 
				
			||||||
  0x23, 0x2c, 0x3e, 0x50, 0xbe, 0x59, 0x86, 0x04, 0x09, 0xec, 0xf2, 0x03,
 | 
					 | 
				
			||||||
  0xf9, 0xcc, 0x12, 0x28, 0x86, 0x81, 0x02, 0x7c, 0x46, 0x0c, 0x0c, 0x00,
 | 
					 | 
				
			||||||
  0x04, 0xc1, 0x20, 0x22, 0x87, 0x5f, 0x08, 0x2c, 0x18, 0x05, 0xf9, 0x8c,
 | 
					 | 
				
			||||||
  0x18, 0x18, 0x00, 0x08, 0x82, 0x41, 0x64, 0x0e, 0xad, 0x10, 0x58, 0x60,
 | 
					 | 
				
			||||||
  0x0a, 0xf2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x08, 0x1d, 0x60,
 | 
					 | 
				
			||||||
  0x21, 0x98, 0x25, 0x50, 0x06, 0x3a, 0x06, 0x58, 0x00, 0xc8, 0x20, 0x21,
 | 
					 | 
				
			||||||
  0x03, 0x64, 0xa0, 0x63, 0x40, 0x05, 0x80, 0x4a, 0x28, 0x64, 0xa0, 0x63,
 | 
					 | 
				
			||||||
  0x00, 0x05, 0xc0, 0x48, 0x24, 0x64, 0x34, 0x01, 0x0c, 0x02, 0x23, 0x44,
 | 
					 | 
				
			||||||
  0x41, 0x3e, 0x16, 0x08, 0xf2, 0xb1, 0x62, 0x14, 0xe4, 0x63, 0x01, 0x21,
 | 
					 | 
				
			||||||
  0x1f, 0x33, 0x48, 0x41, 0x3e, 0x16, 0x18, 0xf2, 0x19, 0x31, 0x48, 0x00,
 | 
					 | 
				
			||||||
  0x10, 0x04, 0x03, 0xc4, 0x1e, 0x70, 0xe1, 0x1d, 0xde, 0xa1, 0x1c, 0x8a,
 | 
					 | 
				
			||||||
  0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0x40, 0xec, 0x01, 0x17, 0xde, 0xe1,
 | 
					 | 
				
			||||||
  0x1d, 0x7a, 0x61, 0x18, 0x31, 0x48, 0x00, 0x10, 0x04, 0x03, 0xc4, 0x1e,
 | 
					 | 
				
			||||||
  0x70, 0xe1, 0x1d, 0xde, 0x81, 0x1c, 0x82, 0x11, 0x83, 0x04, 0x00, 0x41,
 | 
					 | 
				
			||||||
  0x30, 0x40, 0xec, 0x01, 0x17, 0xde, 0xe1, 0x1d, 0xce, 0xa1, 0x14, 0x10,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,31 +0,0 @@
 | 
				
			|||||||
Texture2D theTextureY : register(t0);
 | 
					 | 
				
			||||||
Texture2D theTextureUV : register(t1);
 | 
					 | 
				
			||||||
SamplerState theSampler : register(s0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "D3D12_PixelShader_Common.incl"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define NVRS \
 | 
					 | 
				
			||||||
    "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | 
					 | 
				
			||||||
    "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
					 | 
				
			||||||
    "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
					 | 
				
			||||||
    "            DENY_HULL_SHADER_ROOT_ACCESS )," \
 | 
					 | 
				
			||||||
    "RootConstants(num32BitConstants=20, b1),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[RootSignature(NVRS)]
 | 
					 | 
				
			||||||
float4 main(PixelShaderInput input) : SV_TARGET
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    float3 yuv;
 | 
					 | 
				
			||||||
    yuv.x = theTextureY.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
    yuv.yz = theTextureUV.Sample(theSampler, input.tex).rg;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 rgb;
 | 
					 | 
				
			||||||
    yuv += Yoffset.xyz;
 | 
					 | 
				
			||||||
    rgb.r = dot(yuv, Rcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.g = dot(yuv, Gcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.b = dot(yuv, Bcoeff.xyz);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return GetOutputColorFromSRGB(rgb) * input.color;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,729 +0,0 @@
 | 
				
			|||||||
#if 0
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Input signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
; SV_Position              0   xyzw        0      POS   float       
 | 
					 | 
				
			||||||
; TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
					 | 
				
			||||||
; COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Output signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
; SV_Target                0   xyzw        0   TARGET   float   xyzw
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; shader hash: 09cefd67edfe90788167dffafb728f7d
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Pipeline Runtime Information: 
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Pixel Shader
 | 
					 | 
				
			||||||
; DepthOutput=0
 | 
					 | 
				
			||||||
; SampleFrequency=0
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Input signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index             InterpMode DynIdx
 | 
					 | 
				
			||||||
; -------------------- ----- ---------------------- ------
 | 
					 | 
				
			||||||
; SV_Position              0          noperspective       
 | 
					 | 
				
			||||||
; TEXCOORD                 0                 linear       
 | 
					 | 
				
			||||||
; COLOR                    0                 linear       
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Output signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index             InterpMode DynIdx
 | 
					 | 
				
			||||||
; -------------------- ----- ---------------------- ------
 | 
					 | 
				
			||||||
; SV_Target                0                              
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Buffer Definitions:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; cbuffer Constants
 | 
					 | 
				
			||||||
; {
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;   struct Constants
 | 
					 | 
				
			||||||
;   {
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;       float scRGB_output;                           ; Offset:    0
 | 
					 | 
				
			||||||
;       float color_scale;                            ; Offset:    4
 | 
					 | 
				
			||||||
;       float unused1;                                ; Offset:    8
 | 
					 | 
				
			||||||
;       float unused2;                                ; Offset:   12
 | 
					 | 
				
			||||||
;       float4 Yoffset;                               ; Offset:   16
 | 
					 | 
				
			||||||
;       float4 Rcoeff;                                ; Offset:   32
 | 
					 | 
				
			||||||
;       float4 Gcoeff;                                ; Offset:   48
 | 
					 | 
				
			||||||
;       float4 Bcoeff;                                ; Offset:   64
 | 
					 | 
				
			||||||
;   
 | 
					 | 
				
			||||||
;   } Constants;                                      ; Offset:    0 Size:    80
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; }
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Resource Bindings:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                                 Type  Format         Dim      ID      HLSL Bind  Count
 | 
					 | 
				
			||||||
; ------------------------------ ---------- ------- ----------- ------- -------------- ------
 | 
					 | 
				
			||||||
; Constants                         cbuffer      NA          NA     CB0            cb1     1
 | 
					 | 
				
			||||||
; theSampler                        sampler      NA          NA      S0             s0     1
 | 
					 | 
				
			||||||
; theTextureY                       texture     f32          2d      T0             t0     1
 | 
					 | 
				
			||||||
; theTextureUV                      texture     f32          2d      T1             t1     1
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; ViewId state:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Number of inputs: 12, outputs: 4
 | 
					 | 
				
			||||||
; Outputs dependent on ViewId: {  }
 | 
					 | 
				
			||||||
; Inputs contributing to computation of Outputs:
 | 
					 | 
				
			||||||
;   output 0 depends on inputs: { 4, 5, 8 }
 | 
					 | 
				
			||||||
;   output 1 depends on inputs: { 4, 5, 9 }
 | 
					 | 
				
			||||||
;   output 2 depends on inputs: { 4, 5, 10 }
 | 
					 | 
				
			||||||
;   output 3 depends on inputs: { 11 }
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f64:64-n8:16:32:64"
 | 
					 | 
				
			||||||
target triple = "dxil-ms-dx"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
%dx.types.Handle = type { i8* }
 | 
					 | 
				
			||||||
%dx.types.ResRet.f32 = type { float, float, float, float, i32 }
 | 
					 | 
				
			||||||
%dx.types.CBufRet.f32 = type { float, float, float, float }
 | 
					 | 
				
			||||||
%"class.Texture2D<vector<float, 4> >" = type { <4 x float>, %"class.Texture2D<vector<float, 4> >::mips_type" }
 | 
					 | 
				
			||||||
%"class.Texture2D<vector<float, 4> >::mips_type" = type { i32 }
 | 
					 | 
				
			||||||
%Constants = type { float, float, float, float, <4 x float>, <4 x float>, <4 x float>, <4 x float> }
 | 
					 | 
				
			||||||
%struct.SamplerState = type { i32 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
define void @main() {
 | 
					 | 
				
			||||||
  %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 1, i32 1, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %2 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %3 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 3, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %4 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 1, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %6 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %7 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %8 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %9 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %10 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %11 = call %dx.types.ResRet.f32 @dx.op.sample.f32(i32 60, %dx.types.Handle %2, %dx.types.Handle %3, float %9, float %10, float undef, float undef, i32 0, i32 0, i32 undef, float undef)  ; Sample(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp)
 | 
					 | 
				
			||||||
  %12 = extractvalue %dx.types.ResRet.f32 %11, 0
 | 
					 | 
				
			||||||
  %13 = call %dx.types.ResRet.f32 @dx.op.sample.f32(i32 60, %dx.types.Handle %1, %dx.types.Handle %3, float %9, float %10, float undef, float undef, i32 0, i32 0, i32 undef, float undef)  ; Sample(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp)
 | 
					 | 
				
			||||||
  %14 = extractvalue %dx.types.ResRet.f32 %13, 0
 | 
					 | 
				
			||||||
  %15 = extractvalue %dx.types.ResRet.f32 %13, 1
 | 
					 | 
				
			||||||
  %16 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 1)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %17 = extractvalue %dx.types.CBufRet.f32 %16, 0
 | 
					 | 
				
			||||||
  %18 = extractvalue %dx.types.CBufRet.f32 %16, 1
 | 
					 | 
				
			||||||
  %19 = extractvalue %dx.types.CBufRet.f32 %16, 2
 | 
					 | 
				
			||||||
  %20 = fadd fast float %17, %12
 | 
					 | 
				
			||||||
  %21 = fadd fast float %18, %15
 | 
					 | 
				
			||||||
  %22 = fadd fast float %19, %14
 | 
					 | 
				
			||||||
  %23 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 2)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %24 = extractvalue %dx.types.CBufRet.f32 %23, 0
 | 
					 | 
				
			||||||
  %25 = extractvalue %dx.types.CBufRet.f32 %23, 1
 | 
					 | 
				
			||||||
  %26 = extractvalue %dx.types.CBufRet.f32 %23, 2
 | 
					 | 
				
			||||||
  %27 = call float @dx.op.dot3.f32(i32 55, float %20, float %21, float %22, float %24, float %25, float %26)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %28 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 3)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %29 = extractvalue %dx.types.CBufRet.f32 %28, 0
 | 
					 | 
				
			||||||
  %30 = extractvalue %dx.types.CBufRet.f32 %28, 1
 | 
					 | 
				
			||||||
  %31 = extractvalue %dx.types.CBufRet.f32 %28, 2
 | 
					 | 
				
			||||||
  %32 = call float @dx.op.dot3.f32(i32 55, float %20, float %21, float %22, float %29, float %30, float %31)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %33 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 4)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %34 = extractvalue %dx.types.CBufRet.f32 %33, 0
 | 
					 | 
				
			||||||
  %35 = extractvalue %dx.types.CBufRet.f32 %33, 1
 | 
					 | 
				
			||||||
  %36 = extractvalue %dx.types.CBufRet.f32 %33, 2
 | 
					 | 
				
			||||||
  %37 = call float @dx.op.dot3.f32(i32 55, float %20, float %21, float %22, float %34, float %35, float %36)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %38 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %4, i32 0)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %39 = extractvalue %dx.types.CBufRet.f32 %38, 0
 | 
					 | 
				
			||||||
  %40 = fcmp fast une float %39, 0.000000e+00
 | 
					 | 
				
			||||||
  br i1 %40, label %41, label %76
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:41                                      ; preds = %0
 | 
					 | 
				
			||||||
  %42 = fcmp fast ugt float %27, 0x3FA4B5DCC0000000
 | 
					 | 
				
			||||||
  br i1 %42, label %45, label %43
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:43                                      ; preds = %41
 | 
					 | 
				
			||||||
  %44 = fmul fast float %27, 0x3FB3D07220000000
 | 
					 | 
				
			||||||
  br label %52
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:45                                      ; preds = %41
 | 
					 | 
				
			||||||
  %46 = fadd fast float %27, 0x3FAC28F5C0000000
 | 
					 | 
				
			||||||
  %47 = call float @dx.op.unary.f32(i32 6, float %46)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %48 = fmul fast float %47, 0x3FEE54EDE0000000
 | 
					 | 
				
			||||||
  %49 = call float @dx.op.unary.f32(i32 23, float %48)  ; Log(value)
 | 
					 | 
				
			||||||
  %50 = fmul fast float %49, 0x4003333340000000
 | 
					 | 
				
			||||||
  %51 = call float @dx.op.unary.f32(i32 21, float %50)  ; Exp(value)
 | 
					 | 
				
			||||||
  br label %52
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:52                                      ; preds = %45, %43
 | 
					 | 
				
			||||||
  %53 = phi float [ %44, %43 ], [ %51, %45 ]
 | 
					 | 
				
			||||||
  %54 = fcmp fast ugt float %32, 0x3FA4B5DCC0000000
 | 
					 | 
				
			||||||
  br i1 %54, label %57, label %55
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:55                                      ; preds = %52
 | 
					 | 
				
			||||||
  %56 = fmul fast float %32, 0x3FB3D07220000000
 | 
					 | 
				
			||||||
  br label %64
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:57                                      ; preds = %52
 | 
					 | 
				
			||||||
  %58 = fadd fast float %32, 0x3FAC28F5C0000000
 | 
					 | 
				
			||||||
  %59 = call float @dx.op.unary.f32(i32 6, float %58)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %60 = fmul fast float %59, 0x3FEE54EDE0000000
 | 
					 | 
				
			||||||
  %61 = call float @dx.op.unary.f32(i32 23, float %60)  ; Log(value)
 | 
					 | 
				
			||||||
  %62 = fmul fast float %61, 0x4003333340000000
 | 
					 | 
				
			||||||
  %63 = call float @dx.op.unary.f32(i32 21, float %62)  ; Exp(value)
 | 
					 | 
				
			||||||
  br label %64
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:64                                      ; preds = %57, %55
 | 
					 | 
				
			||||||
  %65 = phi float [ %56, %55 ], [ %63, %57 ]
 | 
					 | 
				
			||||||
  %66 = fcmp fast ugt float %37, 0x3FA4B5DCC0000000
 | 
					 | 
				
			||||||
  br i1 %66, label %69, label %67
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:67                                      ; preds = %64
 | 
					 | 
				
			||||||
  %68 = fmul fast float %37, 0x3FB3D07220000000
 | 
					 | 
				
			||||||
  br label %76
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:69                                      ; preds = %64
 | 
					 | 
				
			||||||
  %70 = fadd fast float %37, 0x3FAC28F5C0000000
 | 
					 | 
				
			||||||
  %71 = call float @dx.op.unary.f32(i32 6, float %70)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %72 = fmul fast float %71, 0x3FEE54EDE0000000
 | 
					 | 
				
			||||||
  %73 = call float @dx.op.unary.f32(i32 23, float %72)  ; Log(value)
 | 
					 | 
				
			||||||
  %74 = fmul fast float %73, 0x4003333340000000
 | 
					 | 
				
			||||||
  %75 = call float @dx.op.unary.f32(i32 21, float %74)  ; Exp(value)
 | 
					 | 
				
			||||||
  br label %76
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:76                                      ; preds = %69, %67, %0
 | 
					 | 
				
			||||||
  %77 = phi float [ %27, %0 ], [ %53, %69 ], [ %53, %67 ]
 | 
					 | 
				
			||||||
  %78 = phi float [ %32, %0 ], [ %65, %69 ], [ %65, %67 ]
 | 
					 | 
				
			||||||
  %79 = phi float [ %37, %0 ], [ %75, %69 ], [ %68, %67 ]
 | 
					 | 
				
			||||||
  %80 = extractvalue %dx.types.CBufRet.f32 %38, 1
 | 
					 | 
				
			||||||
  %81 = fmul fast float %77, %5
 | 
					 | 
				
			||||||
  %82 = fmul fast float %81, %80
 | 
					 | 
				
			||||||
  %83 = fmul fast float %78, %6
 | 
					 | 
				
			||||||
  %84 = fmul fast float %83, %80
 | 
					 | 
				
			||||||
  %85 = fmul fast float %79, %7
 | 
					 | 
				
			||||||
  %86 = fmul fast float %85, %80
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %82)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %84)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %86)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %8)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  ret void
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind
 | 
					 | 
				
			||||||
declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.ResRet.f32 @dx.op.sample.f32(i32, %dx.types.Handle, %dx.types.Handle, float, float, float, float, i32, i32, i32, float) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.dot3.f32(i32, float, float, float, float, float, float) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.unary.f32(i32, float) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
attributes #0 = { nounwind readnone }
 | 
					 | 
				
			||||||
attributes #1 = { nounwind }
 | 
					 | 
				
			||||||
attributes #2 = { nounwind readonly }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
!llvm.ident = !{!0}
 | 
					 | 
				
			||||||
!dx.version = !{!1}
 | 
					 | 
				
			||||||
!dx.valver = !{!2}
 | 
					 | 
				
			||||||
!dx.shaderModel = !{!3}
 | 
					 | 
				
			||||||
!dx.resources = !{!4}
 | 
					 | 
				
			||||||
!dx.viewIdState = !{!13}
 | 
					 | 
				
			||||||
!dx.entryPoints = !{!14}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
!0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"}
 | 
					 | 
				
			||||||
!1 = !{i32 1, i32 0}
 | 
					 | 
				
			||||||
!2 = !{i32 1, i32 6}
 | 
					 | 
				
			||||||
!3 = !{!"ps", i32 6, i32 0}
 | 
					 | 
				
			||||||
!4 = !{!5, null, !9, !11}
 | 
					 | 
				
			||||||
!5 = !{!6, !8}
 | 
					 | 
				
			||||||
!6 = !{i32 0, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 0, i32 1, i32 2, i32 0, !7}
 | 
					 | 
				
			||||||
!7 = !{i32 0, i32 9}
 | 
					 | 
				
			||||||
!8 = !{i32 1, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 1, i32 1, i32 2, i32 0, !7}
 | 
					 | 
				
			||||||
!9 = !{!10}
 | 
					 | 
				
			||||||
!10 = !{i32 0, %Constants* undef, !"", i32 0, i32 1, i32 1, i32 80, null}
 | 
					 | 
				
			||||||
!11 = !{!12}
 | 
					 | 
				
			||||||
!12 = !{i32 0, %struct.SamplerState* undef, !"", i32 0, i32 0, i32 1, i32 0, null}
 | 
					 | 
				
			||||||
!13 = !{[14 x i32] [i32 12, i32 4, i32 0, i32 0, i32 0, i32 0, i32 7, i32 7, i32 0, i32 0, i32 1, i32 2, i32 4, i32 8]}
 | 
					 | 
				
			||||||
!14 = !{void ()* @main, !"main", !15, !4, null}
 | 
					 | 
				
			||||||
!15 = !{!16, !23, null}
 | 
					 | 
				
			||||||
!16 = !{!17, !19, !21}
 | 
					 | 
				
			||||||
!17 = !{i32 0, !"SV_Position", i8 9, i8 3, !18, i8 4, i32 1, i8 4, i32 0, i8 0, null}
 | 
					 | 
				
			||||||
!18 = !{i32 0}
 | 
					 | 
				
			||||||
!19 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !18, i8 2, i32 1, i8 2, i32 1, i8 0, !20}
 | 
					 | 
				
			||||||
!20 = !{i32 3, i32 3}
 | 
					 | 
				
			||||||
!21 = !{i32 2, !"COLOR", i8 9, i8 0, !18, i8 2, i32 1, i8 4, i32 2, i8 0, !22}
 | 
					 | 
				
			||||||
!22 = !{i32 3, i32 15}
 | 
					 | 
				
			||||||
!23 = !{!24}
 | 
					 | 
				
			||||||
!24 = !{i32 0, !"SV_Target", i8 9, i8 16, !18, i8 0, i32 1, i8 4, i32 0, i8 0, !22}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const unsigned char g_main[] = {
 | 
					 | 
				
			||||||
  0x44, 0x58, 0x42, 0x43, 0xb7, 0xa4, 0x73, 0xa5, 0xd0, 0x31, 0x18, 0x8c,
 | 
					 | 
				
			||||||
  0x0b, 0x1b, 0x77, 0x74, 0x8a, 0x6d, 0x8f, 0x8a, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x7d, 0x15, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x49, 0x02, 0x00, 0x00, 0x05, 0x03, 0x00, 0x00, 0x7d, 0x0b, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x99, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
 | 
					 | 
				
			||||||
  0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00,
 | 
					 | 
				
			||||||
  0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c,
 | 
					 | 
				
			||||||
  0x4f, 0x52, 0x00, 0x4f, 0x53, 0x47, 0x31, 0x32, 0x00, 0x00, 0x00, 0x01,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
 | 
					 | 
				
			||||||
  0x00, 0x50, 0x53, 0x56, 0x30, 0x2c, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43,
 | 
					 | 
				
			||||||
  0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x44, 0x03, 0x03, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x42, 0x00, 0x03, 0x02, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x44,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x44, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x52, 0x54, 0x53,
 | 
					 | 
				
			||||||
  0x30, 0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x94, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0x01, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x9c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0x70, 0x08, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x60, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
 | 
					 | 
				
			||||||
  0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x58, 0x08, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x13, 0x02, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
 | 
					 | 
				
			||||||
  0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14,
 | 
					 | 
				
			||||||
  0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e,
 | 
					 | 
				
			||||||
  0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5,
 | 
					 | 
				
			||||||
  0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8,
 | 
					 | 
				
			||||||
  0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86,
 | 
					 | 
				
			||||||
  0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08,
 | 
					 | 
				
			||||||
  0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x53, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4,
 | 
					 | 
				
			||||||
  0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c,
 | 
					 | 
				
			||||||
  0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x8c, 0xc1, 0x08, 0x40, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40,
 | 
					 | 
				
			||||||
  0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4,
 | 
					 | 
				
			||||||
  0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98,
 | 
					 | 
				
			||||||
  0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70,
 | 
					 | 
				
			||||||
  0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58,
 | 
					 | 
				
			||||||
  0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d,
 | 
					 | 
				
			||||||
  0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c,
 | 
					 | 
				
			||||||
  0x14, 0x1d, 0x35, 0x5c, 0xfe, 0x84, 0x3d, 0x84, 0xe4, 0x73, 0x1b, 0x55,
 | 
					 | 
				
			||||||
  0xac, 0xc4, 0xe4, 0x17, 0xb7, 0x8d, 0x88, 0x61, 0x18, 0x86, 0x42, 0x4c,
 | 
					 | 
				
			||||||
  0x04, 0x43, 0x10, 0x35, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xb0,
 | 
					 | 
				
			||||||
  0xe8, 0x1a, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8,
 | 
					 | 
				
			||||||
  0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca,
 | 
					 | 
				
			||||||
  0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc,
 | 
					 | 
				
			||||||
  0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8,
 | 
					 | 
				
			||||||
  0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40,
 | 
					 | 
				
			||||||
  0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50,
 | 
					 | 
				
			||||||
  0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0,
 | 
					 | 
				
			||||||
  0x07, 0x48, 0xd0, 0x36, 0xe2, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66,
 | 
					 | 
				
			||||||
  0x92, 0x10, 0x32, 0x0c, 0xc3, 0xa0, 0x69, 0x9a, 0x46, 0xde, 0x4d, 0xd2,
 | 
					 | 
				
			||||||
  0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0,
 | 
					 | 
				
			||||||
  0x44, 0xa0, 0x80, 0x20, 0x30, 0x1d, 0x08, 0x00, 0x00, 0x13, 0x14, 0x72,
 | 
					 | 
				
			||||||
  0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72,
 | 
					 | 
				
			||||||
  0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e,
 | 
					 | 
				
			||||||
  0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07,
 | 
					 | 
				
			||||||
  0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
 | 
					 | 
				
			||||||
  0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07,
 | 
					 | 
				
			||||||
  0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07,
 | 
					 | 
				
			||||||
  0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07,
 | 
					 | 
				
			||||||
  0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07,
 | 
					 | 
				
			||||||
  0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06,
 | 
					 | 
				
			||||||
  0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e,
 | 
					 | 
				
			||||||
  0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
 | 
					 | 
				
			||||||
  0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00,
 | 
					 | 
				
			||||||
  0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01,
 | 
					 | 
				
			||||||
  0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x87,
 | 
					 | 
				
			||||||
  0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21,
 | 
					 | 
				
			||||||
  0xcf, 0x05, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x59, 0x20, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98,
 | 
					 | 
				
			||||||
  0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
 | 
					 | 
				
			||||||
  0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0,
 | 
					 | 
				
			||||||
  0x0c, 0xca, 0xa1, 0x10, 0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0xca, 0xa3, 0x94, 0xca, 0x36, 0x80, 0x8a, 0x92, 0x28, 0x83,
 | 
					 | 
				
			||||||
  0x42, 0x18, 0x01, 0x28, 0x82, 0x02, 0x21, 0xab, 0x06, 0xa8, 0x9b, 0x01,
 | 
					 | 
				
			||||||
  0x20, 0x6f, 0x06, 0x80, 0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48, 0x1c,
 | 
					 | 
				
			||||||
  0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10,
 | 
					 | 
				
			||||||
  0x00, 0x79, 0x18, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c,
 | 
					 | 
				
			||||||
  0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03,
 | 
					 | 
				
			||||||
  0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01,
 | 
					 | 
				
			||||||
  0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a,
 | 
					 | 
				
			||||||
  0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b,
 | 
					 | 
				
			||||||
  0xd9, 0x10, 0x04, 0x13, 0x04, 0x02, 0x99, 0x20, 0x10, 0xc9, 0x06, 0x61,
 | 
					 | 
				
			||||||
  0x20, 0x36, 0x08, 0x04, 0x41, 0x01, 0x6e, 0x6e, 0x82, 0x40, 0x28, 0x1b,
 | 
					 | 
				
			||||||
  0x86, 0x03, 0x21, 0x26, 0x08, 0x5d, 0x18, 0x70, 0xa1, 0x43, 0x2b, 0xa3,
 | 
					 | 
				
			||||||
  0x2a, 0xc3, 0xa3, 0xab, 0x93, 0x2b, 0xcb, 0x9a, 0x20, 0x10, 0xcb, 0x04,
 | 
					 | 
				
			||||||
  0x81, 0x60, 0x36, 0x08, 0x44, 0xb3, 0x21, 0x21, 0x94, 0x85, 0x20, 0x06,
 | 
					 | 
				
			||||||
  0x86, 0x70, 0xc8, 0xd0, 0xa1, 0x95, 0x51, 0x95, 0xe1, 0xd1, 0xd5, 0xc9,
 | 
					 | 
				
			||||||
  0x95, 0x55, 0x59, 0x6d, 0x48, 0x06, 0x05, 0x22, 0x86, 0x81, 0x21, 0x9c,
 | 
					 | 
				
			||||||
  0x0d, 0xc2, 0x13, 0x4d, 0x10, 0xbe, 0x31, 0x60, 0x32, 0xf4, 0xe6, 0x36,
 | 
					 | 
				
			||||||
  0x47, 0x17, 0xe6, 0x46, 0x37, 0x37, 0x41, 0x20, 0x9a, 0x0d, 0x08, 0x31,
 | 
					 | 
				
			||||||
  0x51, 0xc4, 0x30, 0x54, 0xc0, 0x86, 0xc0, 0x9a, 0x20, 0x84, 0x01, 0x19,
 | 
					 | 
				
			||||||
  0x50, 0xa1, 0x43, 0x2b, 0x9b, 0x0a, 0x6b, 0x83, 0x63, 0x2b, 0x93, 0xdb,
 | 
					 | 
				
			||||||
  0x80, 0x10, 0x58, 0x46, 0x10, 0x03, 0x01, 0x6c, 0x08, 0xb4, 0x0d, 0x84,
 | 
					 | 
				
			||||||
  0x04, 0x5c, 0xdb, 0x04, 0xc1, 0x13, 0x03, 0x32, 0x73, 0x63, 0x52, 0x47,
 | 
					 | 
				
			||||||
  0x42, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x13, 0x04, 0xc2, 0x99,
 | 
					 | 
				
			||||||
  0x20, 0x10, 0xcf, 0x04, 0xc1, 0x02, 0x83, 0x0d, 0x08, 0xe2, 0x7d, 0x04,
 | 
					 | 
				
			||||||
  0x18, 0x34, 0x4d, 0x18, 0x70, 0x19, 0x7b, 0x63, 0x7b, 0x93, 0xfb, 0x9a,
 | 
					 | 
				
			||||||
  0x1b, 0x0b, 0x63, 0x2b, 0x9b, 0x20, 0x10, 0xd0, 0x06, 0x04, 0x19, 0x83,
 | 
					 | 
				
			||||||
  0x8f, 0x0c, 0xc0, 0xa0, 0x69, 0xc2, 0x80, 0x47, 0x9d, 0x5b, 0xdd, 0x5c,
 | 
					 | 
				
			||||||
  0x19, 0x59, 0xcc, 0x04, 0x81, 0x88, 0x36, 0x18, 0x88, 0x19, 0x7c, 0x67,
 | 
					 | 
				
			||||||
  0x00, 0x06, 0x0d, 0x8f, 0x3a, 0xb7, 0xba, 0xb9, 0x32, 0x32, 0x99, 0x09,
 | 
					 | 
				
			||||||
  0x02, 0x21, 0x6d, 0x30, 0x90, 0x34, 0xf8, 0xd4, 0x00, 0x0c, 0x1a, 0x1e,
 | 
					 | 
				
			||||||
  0x59, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x13, 0x04, 0x62, 0xda, 0x80,
 | 
					 | 
				
			||||||
  0x20, 0x6c, 0xf0, 0xb5, 0x01, 0x18, 0x34, 0x4d, 0x18, 0xd0, 0x90, 0x1a,
 | 
					 | 
				
			||||||
  0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd4, 0x06, 0x04, 0x79, 0x83,
 | 
					 | 
				
			||||||
  0x0f, 0x0e, 0xc0, 0xa0, 0x69, 0xc2, 0x80, 0xc6, 0xd1, 0xd8, 0x5b, 0x99,
 | 
					 | 
				
			||||||
  0x99, 0xd9, 0x04, 0x81, 0xa8, 0x36, 0x20, 0x88, 0x1c, 0x7c, 0x73, 0x00,
 | 
					 | 
				
			||||||
  0x06, 0x4d, 0x13, 0x06, 0x34, 0x84, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26,
 | 
					 | 
				
			||||||
  0x08, 0x84, 0xb5, 0x01, 0x41, 0xea, 0xe0, 0xb3, 0x03, 0x30, 0x68, 0x9a,
 | 
					 | 
				
			||||||
  0x30, 0xd8, 0x90, 0x54, 0x62, 0x50, 0x06, 0x68, 0xb0, 0x06, 0x6e, 0x10,
 | 
					 | 
				
			||||||
  0x07, 0x74, 0x70, 0x07, 0x1b, 0x06, 0xa2, 0xc3, 0x83, 0x09, 0x82, 0x00,
 | 
					 | 
				
			||||||
  0x6c, 0x00, 0x36, 0x0c, 0xc4, 0x1e, 0xec, 0xc1, 0x86, 0x80, 0x0f, 0x36,
 | 
					 | 
				
			||||||
  0x0c, 0x83, 0x1e, 0xf4, 0xc1, 0x04, 0x41, 0x0c, 0xca, 0x60, 0x43, 0xf0,
 | 
					 | 
				
			||||||
  0x07, 0x24, 0xda, 0xc2, 0xd2, 0xdc, 0xb8, 0x4c, 0x59, 0x7d, 0x41, 0xbd,
 | 
					 | 
				
			||||||
  0xcd, 0xa5, 0xd1, 0xa5, 0xbd, 0xb9, 0x4d, 0x10, 0x0a, 0x6d, 0x82, 0x50,
 | 
					 | 
				
			||||||
  0x6c, 0x1b, 0x02, 0x62, 0x82, 0x50, 0x70, 0x13, 0x84, 0xa2, 0xdb, 0xb0,
 | 
					 | 
				
			||||||
  0x10, 0xa2, 0x30, 0x0a, 0xa4, 0x50, 0x0a, 0xa6, 0x30, 0x98, 0x02, 0x71,
 | 
					 | 
				
			||||||
  0x0a, 0x00, 0x11, 0xaa, 0x22, 0xac, 0xa1, 0xa7, 0x27, 0x29, 0xa2, 0x09,
 | 
					 | 
				
			||||||
  0x42, 0xe1, 0x6d, 0x10, 0xbe, 0x6f, 0xc3, 0x32, 0xa4, 0xc2, 0x28, 0x9c,
 | 
					 | 
				
			||||||
  0x42, 0x29, 0xa8, 0xc2, 0xa0, 0x0a, 0xc3, 0x29, 0xac, 0x02, 0x8b, 0xa1,
 | 
					 | 
				
			||||||
  0x27, 0xa6, 0x27, 0xa9, 0x09, 0x02, 0x71, 0x6d, 0x10, 0x3e, 0x57, 0xd8,
 | 
					 | 
				
			||||||
  0xb0, 0x30, 0xad, 0x30, 0x0a, 0xa7, 0x50, 0x0a, 0xaa, 0x30, 0x98, 0x02,
 | 
					 | 
				
			||||||
  0x73, 0x0a, 0xaf, 0xb0, 0x61, 0x40, 0x05, 0x56, 0x80, 0x05, 0x26, 0x53,
 | 
					 | 
				
			||||||
  0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x13, 0x84, 0xe2, 0xdb,
 | 
					 | 
				
			||||||
  0xb0, 0x10, 0xb2, 0x30, 0x0a, 0xb3, 0x50, 0x0a, 0xa7, 0x30, 0x98, 0x02,
 | 
					 | 
				
			||||||
  0x71, 0x0a, 0xaf, 0xb0, 0x21, 0xa0, 0x85, 0x0d, 0x43, 0x2c, 0xd4, 0x02,
 | 
					 | 
				
			||||||
  0xb0, 0xa1, 0xd0, 0x83, 0x50, 0xb0, 0x05, 0x0e, 0x20, 0x22, 0x26, 0x17,
 | 
					 | 
				
			||||||
  0xe6, 0x36, 0x86, 0x56, 0x36, 0x47, 0xc3, 0x8c, 0xed, 0x2d, 0x8c, 0x6e,
 | 
					 | 
				
			||||||
  0x6e, 0x82, 0x40, 0x60, 0x2c, 0xd2, 0xdc, 0xe6, 0xe8, 0xe6, 0x26, 0x08,
 | 
					 | 
				
			||||||
  0x44, 0x46, 0x63, 0x2e, 0xed, 0xec, 0x8b, 0x8d, 0x8c, 0xc6, 0x5c, 0xda,
 | 
					 | 
				
			||||||
  0xd9, 0xd7, 0x1c, 0x1d, 0x11, 0xba, 0x32, 0xbc, 0x2f, 0xb7, 0x37, 0xb9,
 | 
					 | 
				
			||||||
  0xb6, 0x0d, 0x0c, 0x2e, 0x90, 0x41, 0x2e, 0xe8, 0xc2, 0x2e, 0xf0, 0x42,
 | 
					 | 
				
			||||||
  0x2f, 0x20, 0xbe, 0x40, 0x06, 0xbf, 0xc0, 0x54, 0x61, 0x63, 0xb3, 0x6b,
 | 
					 | 
				
			||||||
  0x73, 0x49, 0x23, 0x2b, 0x73, 0xa3, 0x9b, 0x12, 0x04, 0x55, 0xc8, 0xf0,
 | 
					 | 
				
			||||||
  0x5c, 0xec, 0xca, 0xe4, 0xe6, 0xd2, 0xde, 0xdc, 0xa6, 0x04, 0x44, 0x13,
 | 
					 | 
				
			||||||
  0x32, 0x3c, 0x17, 0xbb, 0x30, 0x36, 0xbb, 0x32, 0xb9, 0x29, 0x41, 0x51,
 | 
					 | 
				
			||||||
  0x87, 0x0c, 0xcf, 0x65, 0x0e, 0x2d, 0x8c, 0xac, 0x4c, 0xae, 0xe9, 0x8d,
 | 
					 | 
				
			||||||
  0xac, 0x8c, 0x6d, 0x4a, 0x80, 0x94, 0x21, 0xc3, 0x73, 0x91, 0x2b, 0x9b,
 | 
					 | 
				
			||||||
  0x7b, 0xab, 0x93, 0x1b, 0x2b, 0x9b, 0x9b, 0x12, 0x6c, 0x95, 0xc8, 0xf0,
 | 
					 | 
				
			||||||
  0x5c, 0xe8, 0xf2, 0xe0, 0xca, 0x82, 0xdc, 0xdc, 0xde, 0xe8, 0xc2, 0xe8,
 | 
					 | 
				
			||||||
  0xd2, 0xde, 0xdc, 0xe6, 0xa6, 0x08, 0x78, 0xd0, 0x07, 0x75, 0xc8, 0xf0,
 | 
					 | 
				
			||||||
  0x5c, 0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca,
 | 
					 | 
				
			||||||
  0xa6, 0x04, 0x7f, 0x50, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e,
 | 
					 | 
				
			||||||
  0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x60, 0x0b, 0x5d, 0xc8,
 | 
					 | 
				
			||||||
  0xf0, 0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0xca, 0xe4, 0xe6, 0xa6, 0x04,
 | 
					 | 
				
			||||||
  0xbf, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d,
 | 
					 | 
				
			||||||
  0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07,
 | 
					 | 
				
			||||||
  0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80,
 | 
					 | 
				
			||||||
  0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66,
 | 
					 | 
				
			||||||
  0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d,
 | 
					 | 
				
			||||||
  0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07,
 | 
					 | 
				
			||||||
  0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03,
 | 
					 | 
				
			||||||
  0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50,
 | 
					 | 
				
			||||||
  0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2,
 | 
					 | 
				
			||||||
  0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39,
 | 
					 | 
				
			||||||
  0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14,
 | 
					 | 
				
			||||||
  0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07,
 | 
					 | 
				
			||||||
  0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07,
 | 
					 | 
				
			||||||
  0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87,
 | 
					 | 
				
			||||||
  0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0,
 | 
					 | 
				
			||||||
  0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8,
 | 
					 | 
				
			||||||
  0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc,
 | 
					 | 
				
			||||||
  0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6,
 | 
					 | 
				
			||||||
  0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39,
 | 
					 | 
				
			||||||
  0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f,
 | 
					 | 
				
			||||||
  0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c,
 | 
					 | 
				
			||||||
  0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87,
 | 
					 | 
				
			||||||
  0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0,
 | 
					 | 
				
			||||||
  0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50,
 | 
					 | 
				
			||||||
  0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4,
 | 
					 | 
				
			||||||
  0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x71, 0x20, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x66, 0xb0, 0x0d,
 | 
					 | 
				
			||||||
  0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c,
 | 
					 | 
				
			||||||
  0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x07, 0xd2, 0x70, 0xf9,
 | 
					 | 
				
			||||||
  0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x18,
 | 
					 | 
				
			||||||
  0x81, 0x33, 0x5c, 0xbe, 0xf3, 0xf8, 0x83, 0x33, 0xdd, 0x7e, 0x71, 0xdb,
 | 
					 | 
				
			||||||
  0x16, 0x30, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0xe2, 0x00, 0x83, 0xd8, 0x3c,
 | 
					 | 
				
			||||||
  0xd4, 0xe4, 0x17, 0xb7, 0x6d, 0x03, 0xd0, 0x70, 0xf9, 0xce, 0xe3, 0x4b,
 | 
					 | 
				
			||||||
  0x00, 0xf3, 0x2c, 0x84, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
 | 
					 | 
				
			||||||
  0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
 | 
					 | 
				
			||||||
  0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9,
 | 
					 | 
				
			||||||
  0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x09, 0xce, 0xfd, 0x67, 0xed, 0xfe, 0x90, 0x78, 0x81, 0x67, 0xdf,
 | 
					 | 
				
			||||||
  0xfa, 0xfb, 0x72, 0x8f, 0x7d, 0x44, 0x58, 0x49, 0x4c, 0xdc, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x60, 0x00, 0x00, 0x00, 0x77, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
 | 
					 | 
				
			||||||
  0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xc4, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x6e, 0x02, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
 | 
					 | 
				
			||||||
  0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14,
 | 
					 | 
				
			||||||
  0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e,
 | 
					 | 
				
			||||||
  0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5,
 | 
					 | 
				
			||||||
  0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8,
 | 
					 | 
				
			||||||
  0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86,
 | 
					 | 
				
			||||||
  0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08,
 | 
					 | 
				
			||||||
  0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x54, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4,
 | 
					 | 
				
			||||||
  0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c,
 | 
					 | 
				
			||||||
  0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x90, 0xc1, 0x08, 0x40, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40,
 | 
					 | 
				
			||||||
  0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4,
 | 
					 | 
				
			||||||
  0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98,
 | 
					 | 
				
			||||||
  0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70,
 | 
					 | 
				
			||||||
  0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58,
 | 
					 | 
				
			||||||
  0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d,
 | 
					 | 
				
			||||||
  0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c,
 | 
					 | 
				
			||||||
  0x14, 0x1d, 0x35, 0x5c, 0xfe, 0x84, 0x3d, 0x84, 0xe4, 0x73, 0x1b, 0x55,
 | 
					 | 
				
			||||||
  0xac, 0xc4, 0xe4, 0x17, 0xb7, 0x8d, 0x88, 0x61, 0x18, 0x86, 0x42, 0x4c,
 | 
					 | 
				
			||||||
  0x04, 0x43, 0x10, 0x35, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xb0,
 | 
					 | 
				
			||||||
  0xe8, 0x1a, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8,
 | 
					 | 
				
			||||||
  0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca,
 | 
					 | 
				
			||||||
  0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc,
 | 
					 | 
				
			||||||
  0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8,
 | 
					 | 
				
			||||||
  0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40,
 | 
					 | 
				
			||||||
  0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50,
 | 
					 | 
				
			||||||
  0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0,
 | 
					 | 
				
			||||||
  0x07, 0x48, 0xd0, 0x36, 0xe2, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66,
 | 
					 | 
				
			||||||
  0x92, 0x10, 0x32, 0x0c, 0xc3, 0xa0, 0x69, 0x9a, 0x46, 0xde, 0x4d, 0xd2,
 | 
					 | 
				
			||||||
  0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0,
 | 
					 | 
				
			||||||
  0x44, 0xa0, 0x80, 0x20, 0x30, 0x1d, 0x88, 0x29, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87,
 | 
					 | 
				
			||||||
  0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0,
 | 
					 | 
				
			||||||
  0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0,
 | 
					 | 
				
			||||||
  0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20,
 | 
					 | 
				
			||||||
  0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
 | 
					 | 
				
			||||||
  0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30,
 | 
					 | 
				
			||||||
  0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40,
 | 
					 | 
				
			||||||
  0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0,
 | 
					 | 
				
			||||||
  0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30,
 | 
					 | 
				
			||||||
  0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40,
 | 
					 | 
				
			||||||
  0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30,
 | 
					 | 
				
			||||||
  0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10,
 | 
					 | 
				
			||||||
  0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2,
 | 
					 | 
				
			||||||
  0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
 | 
					 | 
				
			||||||
  0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0xc0, 0x90, 0x87, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x80, 0x21, 0xcf, 0x05, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26,
 | 
					 | 
				
			||||||
  0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0,
 | 
					 | 
				
			||||||
  0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a, 0x92, 0x28, 0x83, 0x42,
 | 
					 | 
				
			||||||
  0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x6e, 0x06, 0x80, 0xbe, 0x19, 0x00,
 | 
					 | 
				
			||||||
  0x0a, 0x67, 0x00, 0x48, 0x1c, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3,
 | 
					 | 
				
			||||||
  0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x6d, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
 | 
					 | 
				
			||||||
  0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
 | 
					 | 
				
			||||||
  0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
 | 
					 | 
				
			||||||
  0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
 | 
					 | 
				
			||||||
  0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
 | 
					 | 
				
			||||||
  0x04, 0x02, 0x99, 0x20, 0x10, 0xc9, 0x06, 0x61, 0x20, 0x26, 0x08, 0x84,
 | 
					 | 
				
			||||||
  0xb2, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26,
 | 
					 | 
				
			||||||
  0x08, 0x9d, 0x45, 0x60, 0x82, 0x40, 0x2c, 0x13, 0x04, 0x82, 0xd9, 0x20,
 | 
					 | 
				
			||||||
  0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x90,
 | 
					 | 
				
			||||||
  0x0c, 0xca, 0x42, 0x0c, 0x03, 0x43, 0x38, 0x1b, 0x84, 0x07, 0x9a, 0x20,
 | 
					 | 
				
			||||||
  0x7c, 0xd7, 0x04, 0x81, 0x68, 0x36, 0x20, 0x84, 0xb4, 0x10, 0xc3, 0x30,
 | 
					 | 
				
			||||||
  0x01, 0x1b, 0x02, 0x6a, 0x82, 0x10, 0x06, 0xd8, 0x06, 0x84, 0xb0, 0x16,
 | 
					 | 
				
			||||||
  0x82, 0x18, 0x08, 0x60, 0x43, 0x70, 0x6d, 0x20, 0x22, 0xa0, 0xc2, 0x26,
 | 
					 | 
				
			||||||
  0x08, 0x62, 0x90, 0x6d, 0x08, 0xb4, 0x09, 0x82, 0x00, 0x90, 0x68, 0x0b,
 | 
					 | 
				
			||||||
  0x4b, 0x73, 0xe3, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36, 0x97, 0x46, 0x97,
 | 
					 | 
				
			||||||
  0xf6, 0xe6, 0x36, 0x41, 0x28, 0xa0, 0x09, 0x42, 0x11, 0x6d, 0x08, 0x88,
 | 
					 | 
				
			||||||
  0x09, 0x42, 0x21, 0x4d, 0x10, 0x8a, 0x69, 0xc3, 0x42, 0x78, 0x1f, 0x18,
 | 
					 | 
				
			||||||
  0x84, 0x81, 0x18, 0x0c, 0x62, 0x40, 0x8c, 0x01, 0x40, 0x84, 0xaa, 0x08,
 | 
					 | 
				
			||||||
  0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50, 0x50, 0x13, 0x04, 0xc2,
 | 
					 | 
				
			||||||
  0xd9, 0x20, 0x9c, 0xc1, 0x19, 0x6c, 0x58, 0x86, 0x32, 0xf8, 0xc6, 0x20,
 | 
					 | 
				
			||||||
  0x0c, 0xcc, 0x60, 0x30, 0x83, 0x61, 0x0c, 0xd0, 0x80, 0xc5, 0xd0, 0x13,
 | 
					 | 
				
			||||||
  0xd3, 0x93, 0xd4, 0x04, 0x81, 0x78, 0x36, 0x08, 0x67, 0xb0, 0x06, 0x1b,
 | 
					 | 
				
			||||||
  0x16, 0x46, 0x0d, 0xbe, 0x31, 0x08, 0x03, 0x33, 0x18, 0xc4, 0x80, 0x19,
 | 
					 | 
				
			||||||
  0x03, 0x36, 0xd8, 0x30, 0x90, 0x41, 0x1a, 0xb4, 0x01, 0x93, 0x29, 0xab,
 | 
					 | 
				
			||||||
  0x2f, 0xaa, 0x30, 0xb9, 0xb3, 0x32, 0xba, 0x09, 0x42, 0x51, 0x6d, 0x58,
 | 
					 | 
				
			||||||
  0x88, 0x37, 0xf8, 0xe0, 0x20, 0x0c, 0xc6, 0x60, 0x10, 0x03, 0x62, 0x0c,
 | 
					 | 
				
			||||||
  0xd8, 0x60, 0x43, 0x10, 0x07, 0x1b, 0x06, 0x37, 0x90, 0x03, 0x60, 0x43,
 | 
					 | 
				
			||||||
  0xc1, 0x75, 0x73, 0x90, 0x01, 0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2,
 | 
					 | 
				
			||||||
  0xc8, 0xca, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb,
 | 
					 | 
				
			||||||
  0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf,
 | 
					 | 
				
			||||||
  0xc5, 0x2e, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x60, 0xd4, 0x21, 0xc3,
 | 
					 | 
				
			||||||
  0x73, 0x99, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63,
 | 
					 | 
				
			||||||
  0x9b, 0x12, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea,
 | 
					 | 
				
			||||||
  0xe4, 0xc6, 0xca, 0xe6, 0xa6, 0x04, 0x58, 0x1d, 0x32, 0x3c, 0x17, 0xbb,
 | 
					 | 
				
			||||||
  0xb4, 0xb2, 0xbb, 0x24, 0xb2, 0x29, 0xba, 0x30, 0xba, 0xb2, 0x29, 0x81,
 | 
					 | 
				
			||||||
  0x56, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d,
 | 
					 | 
				
			||||||
  0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0x30, 0x07, 0x00, 0x00, 0x79, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
 | 
					 | 
				
			||||||
  0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
 | 
					 | 
				
			||||||
  0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
 | 
					 | 
				
			||||||
  0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d,
 | 
					 | 
				
			||||||
  0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83,
 | 
					 | 
				
			||||||
  0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78,
 | 
					 | 
				
			||||||
  0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70,
 | 
					 | 
				
			||||||
  0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc,
 | 
					 | 
				
			||||||
  0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3,
 | 
					 | 
				
			||||||
  0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c,
 | 
					 | 
				
			||||||
  0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83,
 | 
					 | 
				
			||||||
  0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03,
 | 
					 | 
				
			||||||
  0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68,
 | 
					 | 
				
			||||||
  0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60,
 | 
					 | 
				
			||||||
  0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80,
 | 
					 | 
				
			||||||
  0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98,
 | 
					 | 
				
			||||||
  0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec,
 | 
					 | 
				
			||||||
  0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c,
 | 
					 | 
				
			||||||
  0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d,
 | 
					 | 
				
			||||||
  0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43,
 | 
					 | 
				
			||||||
  0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03,
 | 
					 | 
				
			||||||
  0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03,
 | 
					 | 
				
			||||||
  0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28,
 | 
					 | 
				
			||||||
  0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4,
 | 
					 | 
				
			||||||
  0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1,
 | 
					 | 
				
			||||||
  0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f,
 | 
					 | 
				
			||||||
  0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c,
 | 
					 | 
				
			||||||
  0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x1e, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x66, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41,
 | 
					 | 
				
			||||||
  0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d,
 | 
					 | 
				
			||||||
  0x07, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08,
 | 
					 | 
				
			||||||
  0x34, 0xc3, 0x42, 0x18, 0x81, 0x33, 0x5c, 0xbe, 0xf3, 0xf8, 0x83, 0x33,
 | 
					 | 
				
			||||||
  0xdd, 0x7e, 0x71, 0xdb, 0x16, 0x30, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0xe2,
 | 
					 | 
				
			||||||
  0x00, 0x83, 0xd8, 0x3c, 0xd4, 0xe4, 0x17, 0xb7, 0x6d, 0x03, 0xd0, 0x70,
 | 
					 | 
				
			||||||
  0xf9, 0xce, 0xe3, 0x4b, 0x00, 0xf3, 0x2c, 0x84, 0x5f, 0xdc, 0xb6, 0x09,
 | 
					 | 
				
			||||||
  0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
 | 
					 | 
				
			||||||
  0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f,
 | 
					 | 
				
			||||||
  0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03,
 | 
					 | 
				
			||||||
  0x00, 0x61, 0x20, 0x00, 0x00, 0xbe, 0x00, 0x00, 0x00, 0x13, 0x04, 0x4b,
 | 
					 | 
				
			||||||
  0x2c, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x64, 0x8d, 0x00,
 | 
					 | 
				
			||||||
  0x50, 0x51, 0x02, 0x44, 0x14, 0x5e, 0xa9, 0x94, 0x4b, 0xb9, 0x95, 0xc2,
 | 
					 | 
				
			||||||
  0x0c, 0x40, 0x21, 0x94, 0x5d, 0xc9, 0xd1, 0x30, 0x02, 0x30, 0x46, 0xa0,
 | 
					 | 
				
			||||||
  0xb3, 0xe6, 0x1c, 0x82, 0xc1, 0x18, 0xc1, 0xbb, 0xa7, 0xe5, 0xfd, 0x8d,
 | 
					 | 
				
			||||||
  0x11, 0xb8, 0x7d, 0x2c, 0xda, 0xde, 0x18, 0x41, 0xcc, 0x83, 0x7d, 0xee,
 | 
					 | 
				
			||||||
  0x8d, 0x11, 0x98, 0xf7, 0xba, 0xca, 0xde, 0x0c, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x95, 0x01, 0x92, 0x91,
 | 
					 | 
				
			||||||
  0x01, 0x19, 0x48, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x99, 0x41,
 | 
					 | 
				
			||||||
  0xa2, 0x91, 0x01, 0x19, 0x4c, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70,
 | 
					 | 
				
			||||||
  0x9d, 0x81, 0xd2, 0x95, 0x41, 0x19, 0x50, 0x23, 0x06, 0x09, 0x00, 0x82,
 | 
					 | 
				
			||||||
  0x60, 0x70, 0xa1, 0xc1, 0xb2, 0x99, 0xc1, 0x19, 0x54, 0x23, 0x06, 0x09,
 | 
					 | 
				
			||||||
  0x00, 0x82, 0x60, 0x60, 0xbc, 0x81, 0x53, 0x06, 0x67, 0xd0, 0x3d, 0x23,
 | 
					 | 
				
			||||||
  0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc0, 0xc1, 0x63, 0x06, 0x68, 0x60,
 | 
					 | 
				
			||||||
  0x41, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc4, 0x01, 0x74, 0x06,
 | 
					 | 
				
			||||||
  0x69, 0xe0, 0x45, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc8, 0x41,
 | 
					 | 
				
			||||||
  0x84, 0x06, 0x6a, 0x20, 0x06, 0xd2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
 | 
					 | 
				
			||||||
  0x18, 0x73, 0x20, 0xb1, 0xc1, 0x1a, 0x84, 0xc1, 0x34, 0x62, 0x90, 0x00,
 | 
					 | 
				
			||||||
  0x20, 0x08, 0x06, 0x06, 0x1d, 0x4c, 0x6d, 0xc0, 0x06, 0x1a, 0x35, 0x62,
 | 
					 | 
				
			||||||
  0xf0, 0x00, 0x20, 0x08, 0x06, 0xcd, 0x1c, 0x68, 0x09, 0x22, 0x04, 0xcb,
 | 
					 | 
				
			||||||
  0xd2, 0x06, 0x6d, 0x50, 0x2d, 0xa3, 0x09, 0x01, 0x30, 0x62, 0xf0, 0x00,
 | 
					 | 
				
			||||||
  0x20, 0x08, 0x06, 0x4d, 0x1d, 0x70, 0x8c, 0x42, 0x0c, 0x4d, 0xf3, 0x06,
 | 
					 | 
				
			||||||
  0x6f, 0x70, 0x35, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0x23, 0x06,
 | 
					 | 
				
			||||||
  0x07, 0x00, 0x82, 0x60, 0x40, 0xd5, 0x01, 0xc6, 0xcc, 0xc1, 0x68, 0x42,
 | 
					 | 
				
			||||||
  0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0xd8, 0x80, 0xc0, 0xc7,
 | 
					 | 
				
			||||||
  0x06, 0x03, 0x3e, 0x36, 0x20, 0xf0, 0x19, 0x31, 0x38, 0x00, 0x10, 0x04,
 | 
					 | 
				
			||||||
  0x03, 0x8a, 0x0f, 0xbe, 0xe9, 0x0e, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41,
 | 
					 | 
				
			||||||
  0x08, 0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40, 0x10, 0x0c, 0x1e,
 | 
					 | 
				
			||||||
  0x51, 0x38, 0x83, 0xc3, 0x28, 0x06, 0x21, 0x18, 0x31, 0x38, 0x00, 0x10,
 | 
					 | 
				
			||||||
  0x04, 0x03, 0x2a, 0x14, 0xc8, 0x00, 0xcb, 0x83, 0xd1, 0x84, 0x00, 0x18,
 | 
					 | 
				
			||||||
  0x4d, 0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31, 0x58, 0x00, 0x10, 0x04,
 | 
					 | 
				
			||||||
  0x83, 0xe7, 0x14, 0xd8, 0x80, 0x59, 0x94, 0x41, 0x08, 0x46, 0x0c, 0x0e,
 | 
					 | 
				
			||||||
  0x00, 0x04, 0xc1, 0x80, 0x32, 0x85, 0x34, 0xe8, 0xd4, 0x60, 0x34, 0x21,
 | 
					 | 
				
			||||||
  0x00, 0x46, 0x13, 0x84, 0x60, 0x34, 0x61, 0x10, 0x46, 0x0c, 0x16, 0x00,
 | 
					 | 
				
			||||||
  0x04, 0xc1, 0xe0, 0x61, 0x85, 0x38, 0x88, 0xa0, 0x67, 0x10, 0x82, 0x11,
 | 
					 | 
				
			||||||
  0x83, 0x03, 0x00, 0x41, 0x30, 0xa0, 0x56, 0xc1, 0x0d, 0xc4, 0x00, 0x15,
 | 
					 | 
				
			||||||
  0x46, 0x13, 0x02, 0x60, 0x38, 0x22, 0x70, 0x03, 0xe7, 0x9b, 0x65, 0x08,
 | 
					 | 
				
			||||||
  0x94, 0x60, 0x38, 0xc2, 0x51, 0x03, 0xe5, 0x9b, 0x65, 0x18, 0x84, 0xc0,
 | 
					 | 
				
			||||||
  0x1e, 0x36, 0x90, 0xcf, 0x2c, 0x01, 0x61, 0x90, 0x1b, 0xc0, 0x67, 0xc4,
 | 
					 | 
				
			||||||
  0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x59, 0x68, 0x85, 0xc0, 0x82, 0x38,
 | 
					 | 
				
			||||||
  0x90, 0xcf, 0x88, 0x81, 0x01, 0x80, 0x20, 0x18, 0x44, 0xb4, 0xb0, 0x07,
 | 
					 | 
				
			||||||
  0x81, 0x05, 0x74, 0x20, 0x9f, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x88,
 | 
					 | 
				
			||||||
  0x6c, 0xc1, 0x0f, 0x82, 0x59, 0x02, 0x62, 0xa0, 0x62, 0x70, 0x04, 0x61,
 | 
					 | 
				
			||||||
  0x18, 0x8e, 0x90, 0xe6, 0x40, 0xf9, 0x66, 0x19, 0x8c, 0x22, 0xb0, 0xa9,
 | 
					 | 
				
			||||||
  0x0e, 0xe4, 0x33, 0x4b, 0x70, 0x18, 0x75, 0x07, 0xf0, 0x19, 0x31, 0x30,
 | 
					 | 
				
			||||||
  0x00, 0x10, 0x04, 0x83, 0x68, 0x17, 0x6c, 0x21, 0xb0, 0x40, 0x0f, 0xe4,
 | 
					 | 
				
			||||||
  0x33, 0x62, 0x60, 0x00, 0x20, 0x08, 0x06, 0x51, 0x2f, 0x90, 0x42, 0x60,
 | 
					 | 
				
			||||||
  0x41, 0x1f, 0xc8, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0xa2, 0x5f,
 | 
					 | 
				
			||||||
  0x38, 0x85, 0x60, 0x96, 0xe0, 0x18, 0xa8, 0x18, 0x9c, 0x42, 0x30, 0x86,
 | 
					 | 
				
			||||||
  0x23, 0x2c, 0x3e, 0x50, 0xbe, 0x59, 0x86, 0x04, 0x09, 0xec, 0xf2, 0x03,
 | 
					 | 
				
			||||||
  0xf9, 0xcc, 0x12, 0x28, 0x86, 0x81, 0x02, 0x7c, 0x46, 0x0c, 0x0c, 0x00,
 | 
					 | 
				
			||||||
  0x04, 0xc1, 0x20, 0x22, 0x87, 0x5f, 0x08, 0x2c, 0x18, 0x05, 0xf9, 0x8c,
 | 
					 | 
				
			||||||
  0x18, 0x18, 0x00, 0x08, 0x82, 0x41, 0x64, 0x0e, 0xad, 0x10, 0x58, 0x60,
 | 
					 | 
				
			||||||
  0x0a, 0xf2, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83, 0x08, 0x1d, 0x60,
 | 
					 | 
				
			||||||
  0x21, 0x98, 0x25, 0x50, 0x06, 0x3a, 0x06, 0x58, 0x00, 0xc8, 0x20, 0x21,
 | 
					 | 
				
			||||||
  0x03, 0x64, 0xa0, 0x63, 0x40, 0x05, 0x80, 0x4a, 0x28, 0x64, 0xa0, 0x63,
 | 
					 | 
				
			||||||
  0x00, 0x05, 0xc0, 0x48, 0x24, 0x64, 0x34, 0x01, 0x0c, 0x02, 0x23, 0x44,
 | 
					 | 
				
			||||||
  0x41, 0x3e, 0x16, 0x08, 0xf2, 0xb1, 0x62, 0x14, 0xe4, 0x63, 0x01, 0x21,
 | 
					 | 
				
			||||||
  0x1f, 0x33, 0x48, 0x41, 0x3e, 0x16, 0x18, 0xf2, 0x19, 0x31, 0x48, 0x00,
 | 
					 | 
				
			||||||
  0x10, 0x04, 0x03, 0xc4, 0x1e, 0x70, 0xe1, 0x1d, 0xde, 0xa1, 0x1c, 0x8a,
 | 
					 | 
				
			||||||
  0x11, 0x83, 0x04, 0x00, 0x41, 0x30, 0x40, 0xec, 0x01, 0x17, 0xde, 0xe1,
 | 
					 | 
				
			||||||
  0x1d, 0x7a, 0x61, 0x18, 0x31, 0x48, 0x00, 0x10, 0x04, 0x03, 0xc4, 0x1e,
 | 
					 | 
				
			||||||
  0x70, 0xe1, 0x1d, 0xde, 0x81, 0x1c, 0x82, 0x11, 0x83, 0x04, 0x00, 0x41,
 | 
					 | 
				
			||||||
  0x30, 0x40, 0xec, 0x01, 0x17, 0xde, 0xe1, 0x1d, 0xce, 0xa1, 0x14, 0x10,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -15,7 +15,7 @@
 | 
				
			|||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					; -------------------- ----- ------ -------- -------- ------- ------
 | 
				
			||||||
; SV_Target                0   xyzw        0   TARGET   float   xyzw
 | 
					; SV_Target                0   xyzw        0   TARGET   float   xyzw
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; shader hash: b58b213e0d598eac28cdb76f8fd261ee
 | 
					; shader hash: 7a58efcd6cfa5eef872e7cbc3b5f38b8
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; Pipeline Runtime Information: 
 | 
					; Pipeline Runtime Information: 
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
@@ -47,15 +47,19 @@
 | 
				
			|||||||
;   {
 | 
					;   {
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
;       float scRGB_output;                           ; Offset:    0
 | 
					;       float scRGB_output;                           ; Offset:    0
 | 
				
			||||||
;       float color_scale;                            ; Offset:    4
 | 
					;       float texture_type;                           ; Offset:    4
 | 
				
			||||||
;       float unused1;                                ; Offset:    8
 | 
					;       float input_type;                             ; Offset:    8
 | 
				
			||||||
;       float unused2;                                ; Offset:   12
 | 
					;       float color_scale;                            ; Offset:   12
 | 
				
			||||||
;       float4 Yoffset;                               ; Offset:   16
 | 
					;       float tonemap_method;                         ; Offset:   16
 | 
				
			||||||
;       float4 Rcoeff;                                ; Offset:   32
 | 
					;       float tonemap_factor1;                        ; Offset:   20
 | 
				
			||||||
;       float4 Gcoeff;                                ; Offset:   48
 | 
					;       float tonemap_factor2;                        ; Offset:   24
 | 
				
			||||||
;       float4 Bcoeff;                                ; Offset:   64
 | 
					;       float sdr_white_point;                        ; Offset:   28
 | 
				
			||||||
 | 
					;       float4 Yoffset;                               ; Offset:   32
 | 
				
			||||||
 | 
					;       float4 Rcoeff;                                ; Offset:   48
 | 
				
			||||||
 | 
					;       float4 Gcoeff;                                ; Offset:   64
 | 
				
			||||||
 | 
					;       float4 Bcoeff;                                ; Offset:   80
 | 
				
			||||||
;   
 | 
					;   
 | 
				
			||||||
;   } Constants;                                      ; Offset:    0 Size:    80
 | 
					;   } Constants;                                      ; Offset:    0 Size:    96
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; }
 | 
					; }
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
@@ -65,8 +69,8 @@
 | 
				
			|||||||
; Name                                 Type  Format         Dim      ID      HLSL Bind  Count
 | 
					; Name                                 Type  Format         Dim      ID      HLSL Bind  Count
 | 
				
			||||||
; ------------------------------ ---------- ------- ----------- ------- -------------- ------
 | 
					; ------------------------------ ---------- ------- ----------- ------- -------------- ------
 | 
				
			||||||
; Constants                         cbuffer      NA          NA     CB0            cb1     1
 | 
					; Constants                         cbuffer      NA          NA     CB0            cb1     1
 | 
				
			||||||
; theSampler                        sampler      NA          NA      S0             s0     1
 | 
					; sampler0                          sampler      NA          NA      S0             s0     1
 | 
				
			||||||
; theTexture                        texture     f32          2d      T0             t0     1
 | 
					; texture0                          texture     f32          2d      T0             t0     1
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; ViewId state:
 | 
					; ViewId state:
 | 
				
			||||||
@@ -87,7 +91,7 @@ target triple = "dxil-ms-dx"
 | 
				
			|||||||
%dx.types.CBufRet.f32 = type { float, float, float, float }
 | 
					%dx.types.CBufRet.f32 = type { float, float, float, float }
 | 
				
			||||||
%"class.Texture2D<vector<float, 4> >" = type { <4 x float>, %"class.Texture2D<vector<float, 4> >::mips_type" }
 | 
					%"class.Texture2D<vector<float, 4> >" = type { <4 x float>, %"class.Texture2D<vector<float, 4> >::mips_type" }
 | 
				
			||||||
%"class.Texture2D<vector<float, 4> >::mips_type" = type { i32 }
 | 
					%"class.Texture2D<vector<float, 4> >::mips_type" = type { i32 }
 | 
				
			||||||
%Constants = type { float, float, float, float, <4 x float>, <4 x float>, <4 x float>, <4 x float> }
 | 
					%Constants = type { float, float, float, float, float, float, float, float, <4 x float>, <4 x float>, <4 x float>, <4 x float> }
 | 
				
			||||||
%struct.SamplerState = type { i32 }
 | 
					%struct.SamplerState = type { i32 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define void @main() {
 | 
					define void @main() {
 | 
				
			||||||
@@ -106,7 +110,7 @@ define void @main() {
 | 
				
			|||||||
  %13 = extractvalue %dx.types.ResRet.f32 %10, 2
 | 
					  %13 = extractvalue %dx.types.ResRet.f32 %10, 2
 | 
				
			||||||
  %14 = extractvalue %dx.types.ResRet.f32 %10, 3
 | 
					  %14 = extractvalue %dx.types.ResRet.f32 %10, 3
 | 
				
			||||||
  %15 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %3, i32 0)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					  %15 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %3, i32 0)  ; CBufferLoadLegacy(handle,regIndex)
 | 
				
			||||||
  %16 = extractvalue %dx.types.CBufRet.f32 %15, 1
 | 
					  %16 = extractvalue %dx.types.CBufRet.f32 %15, 3
 | 
				
			||||||
  %17 = fmul fast float %11, %4
 | 
					  %17 = fmul fast float %11, %4
 | 
				
			||||||
  %18 = fmul fast float %17, %16
 | 
					  %18 = fmul fast float %17, %16
 | 
				
			||||||
  %19 = fmul fast float %12, %5
 | 
					  %19 = fmul fast float %12, %5
 | 
				
			||||||
@@ -157,7 +161,7 @@ attributes #2 = { nounwind readonly }
 | 
				
			|||||||
!6 = !{i32 0, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 0, i32 1, i32 2, i32 0, !7}
 | 
					!6 = !{i32 0, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 0, i32 1, i32 2, i32 0, !7}
 | 
				
			||||||
!7 = !{i32 0, i32 9}
 | 
					!7 = !{i32 0, i32 9}
 | 
				
			||||||
!8 = !{!9}
 | 
					!8 = !{!9}
 | 
				
			||||||
!9 = !{i32 0, %Constants* undef, !"", i32 0, i32 1, i32 1, i32 80, null}
 | 
					!9 = !{i32 0, %Constants* undef, !"", i32 0, i32 1, i32 1, i32 96, null}
 | 
				
			||||||
!10 = !{!11}
 | 
					!10 = !{!11}
 | 
				
			||||||
!11 = !{i32 0, %struct.SamplerState* undef, !"", i32 0, i32 0, i32 1, i32 0, null}
 | 
					!11 = !{i32 0, %struct.SamplerState* undef, !"", i32 0, i32 0, i32 1, i32 0, null}
 | 
				
			||||||
!12 = !{[14 x i32] [i32 12, i32 4, i32 0, i32 0, i32 0, i32 0, i32 15, i32 15, i32 0, i32 0, i32 1, i32 2, i32 4, i32 8]}
 | 
					!12 = !{[14 x i32] [i32 12, i32 4, i32 0, i32 0, i32 0, i32 0, i32 15, i32 15, i32 0, i32 0, i32 1, i32 2, i32 4, i32 8]}
 | 
				
			||||||
@@ -176,12 +180,12 @@ attributes #2 = { nounwind readonly }
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const unsigned char g_main[] = {
 | 
					const unsigned char g_main[] = {
 | 
				
			||||||
  0x44, 0x58, 0x42, 0x43, 0xb7, 0x4d, 0x38, 0xab, 0xd5, 0x9f, 0xa3, 0xeb,
 | 
					  0x44, 0x58, 0x42, 0x43, 0x7e, 0x01, 0x52, 0x7e, 0xc9, 0xe3, 0xe4, 0xf6,
 | 
				
			||||||
  0x40, 0x70, 0xe8, 0xcb, 0xf6, 0x29, 0x85, 0xeb, 0x01, 0x00, 0x00, 0x00,
 | 
					  0x3d, 0xab, 0x9a, 0xb9, 0xeb, 0xf9, 0xcb, 0xde, 0x01, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x41, 0x12, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
 | 
					  0xc9, 0x12, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
 | 
					  0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
 | 
				
			||||||
  0x31, 0x02, 0x00, 0x00, 0xc1, 0x02, 0x00, 0x00, 0x95, 0x0a, 0x00, 0x00,
 | 
					  0x31, 0x02, 0x00, 0x00, 0xc1, 0x02, 0x00, 0x00, 0x19, 0x0b, 0x00, 0x00,
 | 
				
			||||||
  0xb1, 0x0a, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
 | 
					  0x35, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
 | 
				
			||||||
  0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
					  0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
@@ -229,16 +233,16 @@ const unsigned char g_main[] = {
 | 
				
			|||||||
  0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					  0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					  0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x68, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00,
 | 
					  0x00, 0x18, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
 | 
				
			||||||
  0xff, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					  0xff, 0x01, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41,
 | 
				
			||||||
  0x54, 0xcc, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0xf3, 0x01, 0x00,
 | 
					  0x54, 0x50, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x14, 0x02, 0x00,
 | 
				
			||||||
  0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00,
 | 
					  0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0xb4, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00,
 | 
					  0x00, 0x38, 0x08, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00,
 | 
				
			||||||
  0x00, 0xea, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00,
 | 
					  0x00, 0x0b, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04,
 | 
					  0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04,
 | 
				
			||||||
  0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08,
 | 
					  0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08,
 | 
				
			||||||
  0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b,
 | 
					  0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b,
 | 
				
			||||||
@@ -251,7 +255,7 @@ const unsigned char g_main[] = {
 | 
				
			|||||||
  0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8,
 | 
					  0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8,
 | 
				
			||||||
  0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60,
 | 
					  0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60,
 | 
				
			||||||
  0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00,
 | 
					  0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00,
 | 
				
			||||||
  0x00, 0x4d, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85,
 | 
					  0x00, 0x4e, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85,
 | 
				
			||||||
  0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90,
 | 
					  0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90,
 | 
				
			||||||
  0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x7c, 0x23,
 | 
					  0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x7c, 0x23,
 | 
				
			||||||
  0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00,
 | 
					  0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00,
 | 
				
			||||||
@@ -274,99 +278,110 @@ const unsigned char g_main[] = {
 | 
				
			|||||||
  0x41, 0x0e, 0x48, 0x81, 0x0f, 0xec, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xde,
 | 
					  0x41, 0x0e, 0x48, 0x81, 0x0f, 0xec, 0xa1, 0x1c, 0xc6, 0x81, 0x1e, 0xde,
 | 
				
			||||||
  0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d, 0xc2, 0x81, 0x1e, 0xd8,
 | 
					  0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d, 0xc2, 0x81, 0x1e, 0xd8,
 | 
				
			||||||
  0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f, 0x90, 0x60, 0x2f, 0xe1,
 | 
					  0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f, 0x90, 0x60, 0x2f, 0xe1,
 | 
				
			||||||
  0x4b, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0x84, 0x8c, 0x31, 0x86,
 | 
					  0x4b, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0xc4, 0x8c, 0x31, 0xc6,
 | 
				
			||||||
  0xb5, 0xd6, 0x92, 0xbe, 0x49, 0x9a, 0x22, 0x4a, 0x98, 0x7c, 0x16, 0x60,
 | 
					  0x18, 0x63, 0x58, 0x6b, 0x2d, 0xe9, 0x9b, 0xa4, 0x29, 0xa2, 0x84, 0xc9,
 | 
				
			||||||
  0x9e, 0x85, 0x88, 0xd8, 0x09, 0x98, 0x08, 0x14, 0x10, 0xe2, 0xe9, 0x40,
 | 
					  0x67, 0x01, 0xe6, 0x59, 0x88, 0x88, 0x9d, 0x80, 0x89, 0x40, 0x01, 0x21,
 | 
				
			||||||
  0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87,
 | 
					  0x9e, 0x0e, 0x04, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60,
 | 
				
			||||||
  0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0,
 | 
					  0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf,
 | 
				
			||||||
  0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0,
 | 
					  0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a,
 | 
				
			||||||
  0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20,
 | 
					  0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71,
 | 
				
			||||||
  0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
 | 
					  0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73,
 | 
				
			||||||
  0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30,
 | 
					  0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72,
 | 
				
			||||||
  0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40,
 | 
					  0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
 | 
				
			||||||
  0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0,
 | 
					  0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6,
 | 
				
			||||||
  0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30,
 | 
					  0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73,
 | 
				
			||||||
  0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40,
 | 
					  0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74,
 | 
				
			||||||
  0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30,
 | 
					  0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71,
 | 
				
			||||||
  0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00,
 | 
					  0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10,
 | 
					  0x9e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10,
 | 
					  0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2,
 | 
					  0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
 | 
					  0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x60, 0xc8, 0x33, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01, 0x01, 0x30, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x40, 0x16, 0x08, 0x00, 0x15, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x17, 0x00, 0x00,
 | 
				
			||||||
  0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43,
 | 
					  0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26,
 | 
				
			||||||
  0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x45, 0x50, 0x12, 0x05, 0x1a, 0x50,
 | 
					  0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x45, 0x50,
 | 
				
			||||||
  0x06, 0xe5, 0x50, 0x08, 0x05, 0x51, 0x18, 0x05, 0x52, 0x40, 0x05, 0x56,
 | 
					  0x12, 0x05, 0x1c, 0x50, 0x06, 0xe5, 0x50, 0x08, 0x05, 0x51, 0x18, 0x05,
 | 
				
			||||||
  0x80, 0x01, 0xe5, 0x51, 0x38, 0x54, 0x4a, 0xa2, 0x0c, 0x0a, 0x61, 0x04,
 | 
					  0x52, 0x28, 0x05, 0x53, 0x38, 0x05, 0x54, 0x60, 0x05, 0x18, 0x50, 0xa0,
 | 
				
			||||||
  0xa0, 0x08, 0x0a, 0x84, 0x64, 0x0d, 0x50, 0x9e, 0x01, 0x20, 0x3d, 0x03,
 | 
					  0x01, 0xe5, 0x41, 0xa5, 0x24, 0xca, 0xa0, 0x10, 0x46, 0x00, 0x8a, 0xa0,
 | 
				
			||||||
  0x40, 0x7b, 0x06, 0x80, 0xfa, 0x0c, 0x00, 0xf9, 0xb1, 0x1c, 0x86, 0x00,
 | 
					  0x40, 0x48, 0xd6, 0x00, 0xe5, 0x19, 0x00, 0xd2, 0x33, 0x00, 0xb4, 0x67,
 | 
				
			||||||
  0x00, 0x00, 0x78, 0x1e, 0x00, 0x08, 0x04, 0x02, 0x01, 0x79, 0x18, 0x00,
 | 
					  0x00, 0xa8, 0xcf, 0x00, 0x90, 0x1f, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80,
 | 
				
			||||||
  0x00, 0xbe, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
 | 
					  0xe7, 0x01, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
 | 
				
			||||||
 | 
					  0x00, 0xdc, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
 | 
				
			||||||
  0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
 | 
					  0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
 | 
				
			||||||
  0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
 | 
					  0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
 | 
				
			||||||
  0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
 | 
					  0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
 | 
				
			||||||
  0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
 | 
					  0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
 | 
				
			||||||
  0x04, 0xc2, 0x98, 0x20, 0x10, 0xc7, 0x06, 0x61, 0x20, 0x36, 0x08, 0x04,
 | 
					  0x04, 0xc2, 0x98, 0x20, 0x10, 0xc7, 0x06, 0x61, 0x20, 0x36, 0x08, 0x04,
 | 
				
			||||||
  0x41, 0x01, 0x6e, 0x6e, 0x82, 0x40, 0x20, 0x1b, 0x86, 0x03, 0x21, 0x26,
 | 
					  0x41, 0x01, 0x6e, 0x6e, 0x82, 0x40, 0x20, 0x1b, 0x86, 0x03, 0x21, 0x26,
 | 
				
			||||||
  0x08, 0x99, 0x47, 0x85, 0x0e, 0xad, 0x8c, 0xaa, 0x0c, 0x8f, 0xae, 0x4e,
 | 
					  0x08, 0x59, 0x18, 0x10, 0xa1, 0x2b, 0xc3, 0xa3, 0xab, 0x93, 0x2b, 0x83,
 | 
				
			||||||
  0xae, 0x6c, 0x82, 0x40, 0x24, 0x13, 0x04, 0x42, 0xd9, 0x20, 0x10, 0xcd,
 | 
					  0x99, 0x20, 0x10, 0xc9, 0x04, 0x81, 0x50, 0x36, 0x08, 0x44, 0xb3, 0x21,
 | 
				
			||||||
  0x86, 0x84, 0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x10, 0x3c, 0x13,
 | 
					  0x21, 0x94, 0x85, 0x20, 0x06, 0x86, 0x70, 0x36, 0x04, 0xcf, 0x04, 0x61,
 | 
				
			||||||
  0x84, 0x0d, 0x0c, 0x98, 0x0c, 0xbd, 0xb9, 0xcd, 0xd1, 0x85, 0xb9, 0xd1,
 | 
					  0x1b, 0x03, 0x26, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73,
 | 
				
			||||||
  0xcd, 0x4d, 0x10, 0x88, 0x65, 0x03, 0x42, 0x44, 0x12, 0x31, 0x0c, 0x13,
 | 
					  0x13, 0x04, 0x62, 0xd9, 0x80, 0x10, 0x91, 0x44, 0x0c, 0xc3, 0x04, 0x6c,
 | 
				
			||||||
  0xb0, 0x21, 0xa0, 0x26, 0x08, 0x5d, 0x18, 0x50, 0xa1, 0x43, 0x2b, 0x9b,
 | 
					  0x08, 0xa8, 0x09, 0x42, 0x47, 0x06, 0x44, 0xe6, 0xc2, 0xda, 0xe0, 0xd8,
 | 
				
			||||||
  0x0a, 0x6b, 0x83, 0x63, 0x2b, 0x93, 0xdb, 0x80, 0x10, 0xd6, 0x45, 0x10,
 | 
					  0xca, 0xe4, 0x60, 0x36, 0x20, 0x84, 0x75, 0x11, 0xc4, 0x40, 0x00, 0x1b,
 | 
				
			||||||
  0x03, 0x01, 0x6c, 0x08, 0xb0, 0x0d, 0x04, 0x04, 0x54, 0xd9, 0x04, 0x41,
 | 
					  0x02, 0x6c, 0x03, 0x01, 0x01, 0x55, 0x36, 0x41, 0xd0, 0xc4, 0x80, 0xcc,
 | 
				
			||||||
  0xfb, 0xc8, 0xcc, 0x8d, 0x49, 0x1d, 0x09, 0x7d, 0xbd, 0xd5, 0xd1, 0xc1,
 | 
					  0xdc, 0x98, 0xd4, 0x91, 0xd0, 0xd7, 0x5b, 0x1d, 0x1d, 0x5c, 0x1d, 0xdd,
 | 
				
			||||||
  0xd5, 0xd1, 0x4d, 0x10, 0x08, 0x66, 0x82, 0x40, 0x34, 0x1b, 0x0c, 0x84,
 | 
					  0x04, 0x81, 0x60, 0x26, 0x08, 0x44, 0xb3, 0xc1, 0x40, 0xb8, 0x8e, 0xf0,
 | 
				
			||||||
  0xeb, 0x08, 0xaf, 0xe1, 0x32, 0xf6, 0xc6, 0xf6, 0x26, 0xf7, 0x35, 0x37,
 | 
					  0x1a, 0x32, 0x74, 0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x74, 0x79,
 | 
				
			||||||
  0x16, 0xc6, 0x56, 0x36, 0x41, 0x20, 0x9c, 0x09, 0x82, 0xd4, 0x6d, 0x40,
 | 
					  0x70, 0x65, 0x13, 0x04, 0xc2, 0xd9, 0x60, 0x20, 0x60, 0xd0, 0x85, 0x81,
 | 
				
			||||||
  0x10, 0x30, 0xe8, 0xc2, 0xc0, 0x6b, 0x1a, 0x31, 0xe0, 0x51, 0xe7, 0x56,
 | 
					  0xd7, 0x50, 0x49, 0x73, 0x83, 0xab, 0xa3, 0xfb, 0xa2, 0xcb, 0x83, 0x2b,
 | 
				
			||||||
  0x37, 0x57, 0x46, 0x16, 0x33, 0x41, 0x20, 0x9e, 0x0d, 0x06, 0x42, 0x06,
 | 
					  0x9b, 0x20, 0x10, 0xcf, 0x06, 0x03, 0x19, 0x83, 0x8e, 0x0c, 0xbc, 0x86,
 | 
				
			||||||
  0x5d, 0x19, 0x78, 0x0d, 0x8f, 0x3a, 0xb7, 0xba, 0xb9, 0x32, 0x32, 0x99,
 | 
					  0xcb, 0xd8, 0x1b, 0xdb, 0x9b, 0xdc, 0xd7, 0xdc, 0x58, 0x18, 0x5b, 0xd9,
 | 
				
			||||||
  0x09, 0x02, 0x01, 0x6d, 0x30, 0x90, 0x33, 0xe8, 0xd0, 0xc0, 0x6b, 0x78,
 | 
					  0x04, 0x81, 0x80, 0x26, 0x08, 0x12, 0x18, 0x6c, 0x40, 0x10, 0x33, 0xe8,
 | 
				
			||||||
  0x64, 0xbd, 0x99, 0x99, 0xcd, 0x95, 0xd1, 0x4d, 0x10, 0x88, 0x68, 0x83,
 | 
					  0xce, 0xc0, 0x6b, 0x1a, 0x34, 0xa0, 0x43, 0xf7, 0xe6, 0x56, 0xd6, 0x16,
 | 
				
			||||||
  0x81, 0xa8, 0x41, 0xb7, 0x06, 0x5e, 0x43, 0x43, 0x6a, 0xec, 0xad, 0xcc,
 | 
					  0x06, 0xf7, 0xd5, 0x56, 0x46, 0x87, 0xf6, 0x46, 0x36, 0x41, 0x20, 0xa2,
 | 
				
			||||||
  0xcc, 0x6c, 0x82, 0x40, 0x48, 0x1b, 0x0c, 0xa4, 0x0d, 0x3a, 0x37, 0xf0,
 | 
					  0x0d, 0x06, 0xa2, 0x06, 0xdd, 0x1a, 0x78, 0x0d, 0x1f, 0xba, 0x37, 0xb7,
 | 
				
			||||||
  0x1a, 0x1a, 0x47, 0x63, 0x6f, 0x65, 0x66, 0x66, 0x13, 0x04, 0x62, 0xda,
 | 
					  0xb2, 0xb6, 0x30, 0xb8, 0x2f, 0xb3, 0xb0, 0x31, 0xba, 0x37, 0xb9, 0x98,
 | 
				
			||||||
  0x60, 0x20, 0x70, 0xd0, 0xc5, 0x81, 0xd7, 0xd0, 0x10, 0x1a, 0x7b, 0x2b,
 | 
					  0x09, 0x02, 0x21, 0x6d, 0x30, 0x90, 0x36, 0xe8, 0xdc, 0xc0, 0x6b, 0xf8,
 | 
				
			||||||
  0x33, 0x33, 0x9b, 0x20, 0x10, 0xd4, 0x06, 0x03, 0x99, 0x83, 0x8e, 0x0e,
 | 
					  0xd0, 0xbd, 0xb9, 0x95, 0xb5, 0x85, 0xc1, 0x7d, 0x99, 0x85, 0x8d, 0xd1,
 | 
				
			||||||
  0xbc, 0x66, 0x43, 0x32, 0x7d, 0x63, 0x60, 0x06, 0x69, 0xc0, 0x06, 0x6f,
 | 
					  0xbd, 0xc9, 0xc9, 0x4c, 0x10, 0x88, 0x69, 0x83, 0x81, 0xc0, 0x41, 0x17,
 | 
				
			||||||
  0x20, 0x07, 0x75, 0xb0, 0x61, 0x20, 0x36, 0x3b, 0x98, 0x20, 0x08, 0xc0,
 | 
					  0x07, 0x5e, 0xc3, 0x67, 0x8e, 0x4c, 0xee, 0xeb, 0x0e, 0x2d, 0x8d, 0xae,
 | 
				
			||||||
  0x06, 0x60, 0xc3, 0x40, 0xe4, 0x41, 0x1e, 0x6c, 0x08, 0xf4, 0x60, 0xc3,
 | 
					  0xec, 0x0b, 0xee, 0x2d, 0xcd, 0x8d, 0x6e, 0x82, 0x40, 0x50, 0x1b, 0x0c,
 | 
				
			||||||
  0x30, 0xe0, 0xc1, 0x1e, 0x4c, 0x10, 0x3c, 0x31, 0xd8, 0x10, 0xf4, 0x01,
 | 
					  0x64, 0x0e, 0x3a, 0x3a, 0xf0, 0x1a, 0x1e, 0x59, 0x6f, 0x66, 0x66, 0x73,
 | 
				
			||||||
  0x89, 0xb6, 0xb0, 0x34, 0x37, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73,
 | 
					  0x65, 0x74, 0x13, 0x04, 0xa2, 0xda, 0x60, 0x20, 0x76, 0xd0, 0xdd, 0x81,
 | 
				
			||||||
  0x69, 0x74, 0x69, 0x6f, 0x6e, 0x13, 0x84, 0xe2, 0x9a, 0x20, 0x14, 0xd8,
 | 
					  0xd7, 0xd0, 0x90, 0x1a, 0x7b, 0x2b, 0x33, 0x33, 0x9b, 0x20, 0x10, 0xd6,
 | 
				
			||||||
  0x86, 0x80, 0x98, 0x20, 0x14, 0xd9, 0x04, 0xa1, 0xd0, 0x36, 0x2c, 0x04,
 | 
					  0x06, 0x03, 0xc9, 0x83, 0x4e, 0x0f, 0xbc, 0x86, 0xc6, 0xd1, 0xd8, 0x5b,
 | 
				
			||||||
  0x28, 0x84, 0x82, 0x28, 0x8c, 0x02, 0x29, 0x0c, 0xa4, 0x40, 0x94, 0x02,
 | 
					  0x99, 0x99, 0xd9, 0x04, 0x81, 0xb8, 0x36, 0x18, 0x08, 0x1f, 0x74, 0x7d,
 | 
				
			||||||
  0x40, 0x84, 0xaa, 0x08, 0x6b, 0xe8, 0xe9, 0x49, 0x8a, 0x68, 0x82, 0x50,
 | 
					  0xe0, 0x35, 0x34, 0x84, 0xc6, 0xde, 0xca, 0xcc, 0xcc, 0x26, 0x08, 0x04,
 | 
				
			||||||
  0x6c, 0x1b, 0x84, 0xae, 0xdb, 0xb0, 0x0c, 0xa7, 0x10, 0x0a, 0xa5, 0x30,
 | 
					  0xb6, 0xc1, 0x40, 0xfe, 0xa0, 0x03, 0x05, 0xaf, 0xd9, 0xd0, 0x4c, 0x9f,
 | 
				
			||||||
  0x0a, 0xa8, 0x30, 0xa0, 0xc2, 0x50, 0x0a, 0xa9, 0xc0, 0x62, 0xe8, 0x89,
 | 
					  0x18, 0x94, 0x41, 0x1a, 0xb0, 0xc1, 0x1b, 0xc8, 0x41, 0x1d, 0xe0, 0xc1,
 | 
				
			||||||
  0xe9, 0x49, 0x6a, 0x82, 0x40, 0x54, 0x1b, 0x84, 0x8e, 0x15, 0x36, 0x2c,
 | 
					  0x1e, 0xf8, 0x41, 0x28, 0x6c, 0x18, 0x88, 0x4d, 0x14, 0x26, 0x08, 0x02,
 | 
				
			||||||
  0xcc, 0x2a, 0x84, 0x42, 0x29, 0x8c, 0x02, 0x2a, 0x0c, 0xa4, 0xc0, 0x94,
 | 
					  0xb0, 0x01, 0xd8, 0x30, 0x10, 0xa5, 0x50, 0x0a, 0x1b, 0x02, 0x53, 0xd8,
 | 
				
			||||||
  0x42, 0x2b, 0x6c, 0x18, 0x4c, 0x41, 0x15, 0x5c, 0x81, 0xc9, 0x94, 0xd5,
 | 
					  0x30, 0x0c, 0xa4, 0x70, 0x0a, 0x13, 0x04, 0xaf, 0x0c, 0x36, 0x04, 0xa9,
 | 
				
			||||||
  0x17, 0x55, 0x98, 0xdc, 0x59, 0x19, 0xdd, 0x04, 0xa1, 0xe0, 0x36, 0x2c,
 | 
					  0x40, 0xa2, 0x2d, 0x2c, 0xcd, 0x8d, 0xcb, 0x94, 0xd5, 0x17, 0xd4, 0xdb,
 | 
				
			||||||
  0x04, 0x2c, 0x84, 0x42, 0x2c, 0x8c, 0x42, 0x29, 0x0c, 0xa4, 0x40, 0x94,
 | 
					  0x5c, 0x1a, 0x5d, 0xda, 0x9b, 0xdb, 0x04, 0xa1, 0xd0, 0x26, 0x08, 0xc5,
 | 
				
			||||||
  0x42, 0x2b, 0x6c, 0x08, 0x64, 0x61, 0xc3, 0xf0, 0x0a, 0xb3, 0x00, 0x6c,
 | 
					  0xb6, 0x21, 0x20, 0x26, 0x08, 0x05, 0x37, 0x41, 0x28, 0xba, 0x0d, 0x0b,
 | 
				
			||||||
  0x28, 0xf0, 0xe0, 0x0f, 0x68, 0x41, 0x03, 0x68, 0x98, 0xb1, 0xbd, 0x85,
 | 
					  0xc1, 0x0a, 0xad, 0xe0, 0x0a, 0xaf, 0x00, 0x0b, 0x03, 0x2c, 0x10, 0xb1,
 | 
				
			||||||
  0xd1, 0xcd, 0xb1, 0x48, 0x73, 0x9b, 0xa3, 0x9b, 0x9b, 0x20, 0x10, 0x16,
 | 
					  0x00, 0x10, 0xa1, 0x2a, 0xc2, 0x1a, 0x7a, 0x7a, 0x92, 0x22, 0x9a, 0x20,
 | 
				
			||||||
  0x8d, 0xb9, 0xb4, 0xb3, 0x2f, 0x36, 0x32, 0x1a, 0x73, 0x69, 0x67, 0x5f,
 | 
					  0x14, 0xde, 0x06, 0xa1, 0xeb, 0x36, 0x2c, 0xc3, 0x2c, 0xb4, 0x42, 0x2c,
 | 
				
			||||||
  0x73, 0x74, 0x44, 0xe8, 0xca, 0xf0, 0xbe, 0xdc, 0xde, 0xe4, 0xda, 0x36,
 | 
					  0xbc, 0x02, 0x2d, 0x0c, 0xb4, 0x30, 0xc4, 0x42, 0x2d, 0xb0, 0x18, 0x7a,
 | 
				
			||||||
  0x28, 0xb6, 0xe0, 0xdd, 0x02, 0x2e, 0xe4, 0x02, 0xa2, 0x0b, 0x61, 0xb0,
 | 
					  0x62, 0x7a, 0x92, 0x9a, 0x20, 0x10, 0xd9, 0x06, 0xa1, 0xc3, 0x85, 0x0d,
 | 
				
			||||||
  0x0b, 0x43, 0x15, 0x36, 0x36, 0xbb, 0x36, 0x97, 0x34, 0xb2, 0x32, 0x37,
 | 
					  0x0b, 0x73, 0x0b, 0xad, 0x10, 0x0b, 0xaf, 0x40, 0x0b, 0x03, 0x2c, 0x30,
 | 
				
			||||||
  0xba, 0x29, 0x41, 0x50, 0x85, 0x0c, 0xcf, 0xc5, 0xae, 0x4c, 0x6e, 0x2e,
 | 
					  0xb1, 0x90, 0x0b, 0x1b, 0x06, 0x59, 0xb0, 0x05, 0x5d, 0x60, 0x32, 0x65,
 | 
				
			||||||
  0xed, 0xcd, 0x6d, 0x4a, 0x40, 0x34, 0x21, 0xc3, 0x73, 0xb1, 0x0b, 0x63,
 | 
					  0xf5, 0x45, 0x15, 0x26, 0x77, 0x56, 0x46, 0x37, 0x41, 0x28, 0xbe, 0x0d,
 | 
				
			||||||
  0xb3, 0x2b, 0x93, 0x9b, 0x12, 0x14, 0x75, 0xc8, 0xf0, 0x5c, 0xe6, 0xd0,
 | 
					  0x0b, 0xc1, 0x0b, 0xad, 0xd0, 0x0b, 0xaf, 0x10, 0x0b, 0x03, 0x2c, 0x10,
 | 
				
			||||||
  0xc2, 0xc8, 0xca, 0xe4, 0x9a, 0xde, 0xc8, 0xca, 0xd8, 0xa6, 0x04, 0x48,
 | 
					  0xb1, 0x90, 0x0b, 0x1b, 0x02, 0x5f, 0xd8, 0x30, 0xec, 0xc2, 0x2f, 0x00,
 | 
				
			||||||
  0x19, 0x32, 0x3c, 0x17, 0xb9, 0xb2, 0xb9, 0xb7, 0x3a, 0xb9, 0xb1, 0xb2,
 | 
					  0x1b, 0x0a, 0x52, 0x58, 0x05, 0x70, 0xd0, 0x00, 0x1a, 0x66, 0x6c, 0x6f,
 | 
				
			||||||
  0xb9, 0x29, 0x41, 0x56, 0x89, 0x0c, 0xcf, 0x85, 0x2e, 0x0f, 0xae, 0x2c,
 | 
					  0x61, 0x74, 0x73, 0x2c, 0xd2, 0xdc, 0xe6, 0xe8, 0xe6, 0x68, 0xcc, 0xa5,
 | 
				
			||||||
  0xc8, 0xcd, 0xed, 0x8d, 0x2e, 0x8c, 0x2e, 0xed, 0xcd, 0x6d, 0x6e, 0x8a,
 | 
					  0x9d, 0x7d, 0xb1, 0x91, 0xd1, 0x98, 0x4b, 0x3b, 0xfb, 0x9a, 0xa3, 0x23,
 | 
				
			||||||
  0x60, 0x07, 0x7b, 0x50, 0x87, 0x0c, 0xcf, 0xc5, 0x2e, 0xad, 0xec, 0x2e,
 | 
					  0x42, 0x57, 0x86, 0xf7, 0xe5, 0xf6, 0x26, 0xd7, 0xb6, 0x41, 0x11, 0x07,
 | 
				
			||||||
  0x89, 0x6c, 0x8a, 0x2e, 0x8c, 0xae, 0x6c, 0x4a, 0xd0, 0x07, 0x75, 0xc8,
 | 
					  0x6f, 0x1c, 0xe8, 0x80, 0x1c, 0x90, 0x72, 0x08, 0x03, 0x73, 0x18, 0xaa,
 | 
				
			||||||
  0xf0, 0x5c, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0xa0, 0xde, 0xd2, 0xdc, 0xe8,
 | 
					  0xb0, 0xb1, 0xd9, 0xb5, 0xb9, 0xa4, 0x91, 0x95, 0xb9, 0xd1, 0x4d, 0x09,
 | 
				
			||||||
  0xe6, 0xa6, 0x04, 0xb4, 0xd0, 0x85, 0x0c, 0xcf, 0x65, 0xec, 0xad, 0xce,
 | 
					  0x82, 0x2a, 0x64, 0x78, 0x2e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
 | 
				
			||||||
  0x8d, 0xae, 0x4c, 0x6e, 0x6e, 0x4a, 0xb0, 0x0b, 0x00, 0x79, 0x18, 0x00,
 | 
					  0x53, 0x02, 0xa2, 0x09, 0x19, 0x9e, 0x8b, 0x5d, 0x18, 0x9b, 0x5d, 0x99,
 | 
				
			||||||
 | 
					  0xdc, 0x94, 0xa0, 0xa8, 0x43, 0x86, 0xe7, 0x32, 0x87, 0x16, 0x46, 0x56,
 | 
				
			||||||
 | 
					  0x26, 0xd7, 0xf4, 0x46, 0x56, 0xc6, 0x36, 0x25, 0x40, 0xca, 0x90, 0xe1,
 | 
				
			||||||
 | 
					  0xb9, 0xc8, 0x95, 0xcd, 0xbd, 0xd5, 0xc9, 0x8d, 0x95, 0xcd, 0x4d, 0x09,
 | 
				
			||||||
 | 
					  0xb2, 0x4a, 0x64, 0x78, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x41, 0x6e, 0x6e,
 | 
				
			||||||
 | 
					  0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x04, 0x51, 0x38,
 | 
				
			||||||
 | 
					  0x85, 0x3a, 0x64, 0x78, 0x2e, 0x76, 0x69, 0x65, 0x77, 0x49, 0x64, 0x53,
 | 
				
			||||||
 | 
					  0x74, 0x61, 0x74, 0x65, 0x53, 0x82, 0x54, 0xa8, 0x43, 0x86, 0xe7, 0x52,
 | 
				
			||||||
 | 
					  0xe6, 0x46, 0x27, 0x97, 0x07, 0xf5, 0x96, 0xe6, 0x46, 0x37, 0x37, 0x25,
 | 
				
			||||||
 | 
					  0x00, 0x87, 0x2e, 0x64, 0x78, 0x2e, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x65,
 | 
				
			||||||
 | 
					  0x72, 0x73, 0x53, 0x02, 0x73, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
 | 
				
			||||||
  0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
 | 
					  0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
 | 
				
			||||||
  0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
 | 
					  0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
 | 
				
			||||||
  0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
 | 
					  0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
 | 
				
			||||||
@@ -402,12 +417,12 @@ const unsigned char g_main[] = {
 | 
				
			|||||||
  0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11,
 | 
					  0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11,
 | 
				
			||||||
  0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x06, 0x40, 0x30, 0x00,
 | 
					  0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x06, 0x40, 0x30, 0x00,
 | 
				
			||||||
  0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53,
 | 
					  0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53,
 | 
				
			||||||
  0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb5, 0x8b, 0x21,
 | 
					  0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x58, 0xef,
 | 
				
			||||||
  0x3e, 0x0d, 0x59, 0x8e, 0xac, 0x28, 0xcd, 0xb7, 0x6f, 0x8f, 0xd2, 0x61,
 | 
					  0xcd, 0x6c, 0xfa, 0x5e, 0xef, 0x87, 0x2e, 0x7c, 0xbc, 0x3b, 0x5f, 0x38,
 | 
				
			||||||
  0xee, 0x44, 0x58, 0x49, 0x4c, 0x88, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00,
 | 
					  0xb8, 0x44, 0x58, 0x49, 0x4c, 0x8c, 0x07, 0x00, 0x00, 0x60, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0xe2, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00,
 | 
					  0x00, 0xe3, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00,
 | 
				
			||||||
  0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0,
 | 
					  0x00, 0x10, 0x00, 0x00, 0x00, 0x74, 0x07, 0x00, 0x00, 0x42, 0x43, 0xc0,
 | 
				
			||||||
  0xde, 0x21, 0x0c, 0x00, 0x00, 0xd9, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20,
 | 
					  0xde, 0x21, 0x0c, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0x0b, 0x82, 0x20,
 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23,
 | 
					  0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23,
 | 
				
			||||||
  0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84,
 | 
					  0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84,
 | 
				
			||||||
  0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45,
 | 
					  0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45,
 | 
				
			||||||
@@ -420,7 +435,7 @@ const unsigned char g_main[] = {
 | 
				
			|||||||
  0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff,
 | 
					  0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff,
 | 
				
			||||||
  0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					  0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x89, 0x20, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48,
 | 
					  0x00, 0x89, 0x20, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48,
 | 
				
			||||||
  0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22,
 | 
					  0x09, 0x20, 0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22,
 | 
				
			||||||
  0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4,
 | 
					  0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4,
 | 
				
			||||||
  0x4c, 0x10, 0x7c, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08,
 | 
					  0x4c, 0x10, 0x7c, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08,
 | 
				
			||||||
@@ -444,126 +459,126 @@ const unsigned char g_main[] = {
 | 
				
			|||||||
  0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d,
 | 
					  0xc6, 0x81, 0x1e, 0xde, 0x41, 0x1e, 0xf8, 0xc0, 0x1c, 0xd8, 0xe1, 0x1d,
 | 
				
			||||||
  0xc2, 0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f,
 | 
					  0xc2, 0x81, 0x1e, 0xd8, 0x00, 0x0c, 0xe8, 0xc0, 0x0f, 0xc0, 0xc0, 0x0f,
 | 
				
			||||||
  0x90, 0x60, 0x2f, 0xe1, 0x4b, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24,
 | 
					  0x90, 0x60, 0x2f, 0xe1, 0x4b, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24,
 | 
				
			||||||
  0x84, 0x8c, 0x31, 0x86, 0xb5, 0xd6, 0x92, 0xbe, 0x49, 0x9a, 0x22, 0x4a,
 | 
					  0xc4, 0x8c, 0x31, 0xc6, 0x18, 0x63, 0x58, 0x6b, 0x2d, 0xe9, 0x9b, 0xa4,
 | 
				
			||||||
  0x98, 0x7c, 0x16, 0x60, 0x9e, 0x85, 0x88, 0xd8, 0x09, 0x98, 0x08, 0x14,
 | 
					  0x29, 0xa2, 0x84, 0xc9, 0x67, 0x01, 0xe6, 0x59, 0x88, 0x88, 0x9d, 0x80,
 | 
				
			||||||
  0x10, 0xe2, 0xe9, 0x40, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60,
 | 
					  0x89, 0x40, 0x01, 0x21, 0x9e, 0x0e, 0x04, 0x00, 0x00, 0x13, 0x14, 0x72,
 | 
				
			||||||
  0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf,
 | 
					  0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72,
 | 
				
			||||||
  0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a,
 | 
					  0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e,
 | 
				
			||||||
  0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71,
 | 
					  0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07,
 | 
				
			||||||
  0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73,
 | 
					  0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
 | 
				
			||||||
  0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72,
 | 
					  0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07,
 | 
				
			||||||
  0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
 | 
					  0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07,
 | 
				
			||||||
  0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6,
 | 
					  0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07,
 | 
				
			||||||
  0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73,
 | 
					  0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07,
 | 
				
			||||||
  0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74,
 | 
					  0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06,
 | 
				
			||||||
  0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71,
 | 
					  0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e,
 | 
				
			||||||
  0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43,
 | 
					  0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07,
 | 
				
			||||||
  0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00, 0x18, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x81, 0x80, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01, 0x01, 0x30, 0x00, 0x00,
 | 
					  0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x33, 0x01,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x10, 0x00, 0x00,
 | 
					  0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x16, 0x08,
 | 
				
			||||||
  0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26,
 | 
					  0x00, 0x10, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c,
 | 
				
			||||||
  0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x45, 0x50,
 | 
					  0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25, 0x30, 0x02,
 | 
				
			||||||
  0x12, 0x05, 0x1a, 0x50, 0x06, 0xe5, 0x41, 0xa5, 0x24, 0xca, 0xa0, 0x10,
 | 
					  0x50, 0x0c, 0x45, 0x50, 0x12, 0x05, 0x1c, 0x50, 0x06, 0xe5, 0x41, 0xa5,
 | 
				
			||||||
  0x46, 0x00, 0x8a, 0xa0, 0x40, 0x28, 0xcf, 0x00, 0xd0, 0x9e, 0x01, 0xa0,
 | 
					  0x24, 0xca, 0xa0, 0x10, 0x46, 0x00, 0x8a, 0xa0, 0x40, 0x28, 0xcf, 0x00,
 | 
				
			||||||
  0x3e, 0x03, 0x40, 0x7e, 0x2c, 0x87, 0x21, 0x00, 0x00, 0x00, 0x9e, 0x07,
 | 
					  0xd0, 0x9e, 0x01, 0xa0, 0x3e, 0x03, 0x40, 0x7e, 0x2c, 0x87, 0x21, 0x00,
 | 
				
			||||||
  0x00, 0x02, 0x81, 0x40, 0x00, 0x79, 0x18, 0x00, 0x00, 0x6a, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x9e, 0x07, 0x00, 0x02, 0x81, 0x40, 0x00, 0x79, 0x18, 0x00,
 | 
				
			||||||
  0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63,
 | 
					  0x00, 0x6a, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
 | 
				
			||||||
  0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03,
 | 
					  0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
 | 
				
			||||||
  0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a,
 | 
					  0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
 | 
				
			||||||
  0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b,
 | 
					  0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
 | 
				
			||||||
  0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0xc2, 0x98, 0x20,
 | 
					  0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
 | 
				
			||||||
  0x10, 0xc7, 0x06, 0x61, 0x20, 0x26, 0x08, 0x04, 0xb2, 0x41, 0x18, 0x0c,
 | 
					  0x04, 0xc2, 0x98, 0x20, 0x10, 0xc7, 0x06, 0x61, 0x20, 0x26, 0x08, 0x04,
 | 
				
			||||||
  0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26, 0x08, 0x19, 0x45, 0x60,
 | 
					  0xb2, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26,
 | 
				
			||||||
  0x82, 0x40, 0x24, 0x13, 0x04, 0x42, 0xd9, 0x20, 0x10, 0xcd, 0x86, 0x84,
 | 
					  0x08, 0x19, 0x45, 0x60, 0x82, 0x40, 0x24, 0x13, 0x04, 0x42, 0xd9, 0x20,
 | 
				
			||||||
  0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x10, 0x3c, 0x13, 0x84, 0xad,
 | 
					  0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x10,
 | 
				
			||||||
  0x9a, 0x20, 0x10, 0xcb, 0x06, 0x84, 0x88, 0x16, 0x62, 0x18, 0x24, 0x60,
 | 
					  0x3c, 0x13, 0x84, 0xad, 0x9a, 0x20, 0x10, 0xcb, 0x06, 0x84, 0x88, 0x16,
 | 
				
			||||||
  0x43, 0x30, 0x4d, 0x10, 0x3a, 0x6b, 0x03, 0x42, 0x54, 0x0b, 0x41, 0x0c,
 | 
					  0x62, 0x18, 0x24, 0x60, 0x43, 0x30, 0x4d, 0x10, 0x3a, 0x6b, 0x03, 0x42,
 | 
				
			||||||
  0x04, 0xb0, 0x21, 0xb0, 0x36, 0x10, 0x10, 0x40, 0x5d, 0x13, 0x04, 0xef,
 | 
					  0x54, 0x0b, 0x41, 0x0c, 0x04, 0xb0, 0x21, 0xb0, 0x36, 0x10, 0x10, 0x40,
 | 
				
			||||||
  0xda, 0x10, 0x64, 0x13, 0x04, 0x01, 0x20, 0xd1, 0x16, 0x96, 0xe6, 0xc6,
 | 
					  0x5d, 0x13, 0x04, 0xef, 0xda, 0x10, 0x64, 0x13, 0x04, 0x01, 0x20, 0xd1,
 | 
				
			||||||
  0x65, 0xca, 0xea, 0x0b, 0xea, 0x6d, 0x2e, 0x8d, 0x2e, 0xed, 0xcd, 0x6d,
 | 
					  0x16, 0x96, 0xe6, 0xc6, 0x65, 0xca, 0xea, 0x0b, 0xea, 0x6d, 0x2e, 0x8d,
 | 
				
			||||||
  0x82, 0x50, 0x38, 0x13, 0x84, 0xe2, 0xd9, 0x10, 0x10, 0x13, 0x84, 0x02,
 | 
					  0x2e, 0xed, 0xcd, 0x6d, 0x82, 0x50, 0x38, 0x13, 0x84, 0xe2, 0xd9, 0x10,
 | 
				
			||||||
  0x9a, 0x20, 0x14, 0xd1, 0x86, 0x85, 0xe8, 0xbc, 0x0f, 0x0c, 0xc2, 0x60,
 | 
					  0x10, 0x13, 0x84, 0x02, 0x9a, 0x20, 0x14, 0xd1, 0x86, 0x85, 0xe8, 0xbc,
 | 
				
			||||||
  0x08, 0x03, 0x42, 0x0c, 0x00, 0x22, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f,
 | 
					  0x0f, 0x0c, 0xc2, 0x60, 0x08, 0x03, 0x42, 0x0c, 0x00, 0x22, 0x54, 0x45,
 | 
				
			||||||
  0x52, 0x44, 0x13, 0x84, 0x42, 0x9a, 0x20, 0x10, 0xcc, 0x06, 0xc1, 0x0c,
 | 
					  0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x13, 0x84, 0x42, 0x9a, 0x20, 0x10,
 | 
				
			||||||
  0xcc, 0x60, 0xc3, 0x32, 0x90, 0x81, 0x27, 0x06, 0x60, 0x50, 0x06, 0x43,
 | 
					  0xcc, 0x06, 0xc1, 0x0c, 0xcc, 0x60, 0xc3, 0x32, 0x90, 0x81, 0x27, 0x06,
 | 
				
			||||||
  0x19, 0x0c, 0x62, 0x70, 0x06, 0x2c, 0x86, 0x9e, 0x98, 0x9e, 0xa4, 0x26,
 | 
					  0x60, 0x50, 0x06, 0x43, 0x19, 0x0c, 0x62, 0x70, 0x06, 0x2c, 0x86, 0x9e,
 | 
				
			||||||
  0x08, 0x44, 0xb3, 0x41, 0x30, 0x03, 0x35, 0xd8, 0xb0, 0x30, 0x69, 0xe0,
 | 
					  0x98, 0x9e, 0xa4, 0x26, 0x08, 0x44, 0xb3, 0x41, 0x30, 0x03, 0x35, 0xd8,
 | 
				
			||||||
  0x89, 0x01, 0x18, 0x94, 0xc1, 0x10, 0x06, 0x8c, 0x18, 0xac, 0xc1, 0x86,
 | 
					  0xb0, 0x30, 0x69, 0xe0, 0x89, 0x01, 0x18, 0x94, 0xc1, 0x10, 0x06, 0x8c,
 | 
				
			||||||
  0x61, 0x0c, 0xd0, 0x80, 0x0d, 0x98, 0x4c, 0x59, 0x7d, 0x51, 0x85, 0xc9,
 | 
					  0x18, 0xac, 0xc1, 0x86, 0x61, 0x0c, 0xd0, 0x80, 0x0d, 0x98, 0x4c, 0x59,
 | 
				
			||||||
  0x9d, 0x95, 0xd1, 0x4d, 0x10, 0x8a, 0x69, 0xc3, 0x42, 0xb8, 0x81, 0xf7,
 | 
					  0x7d, 0x51, 0x85, 0xc9, 0x9d, 0x95, 0xd1, 0x4d, 0x10, 0x8a, 0x69, 0xc3,
 | 
				
			||||||
  0x06, 0x60, 0x20, 0x06, 0x43, 0x18, 0x10, 0x62, 0xb0, 0x06, 0x1b, 0x02,
 | 
					  0x42, 0xb8, 0x81, 0xf7, 0x06, 0x60, 0x20, 0x06, 0x43, 0x18, 0x10, 0x62,
 | 
				
			||||||
  0x38, 0xd8, 0x30, 0xb4, 0x41, 0x1c, 0x00, 0x1b, 0x8a, 0x8d, 0x93, 0x03,
 | 
					  0xb0, 0x06, 0x1b, 0x02, 0x38, 0xd8, 0x30, 0xb4, 0x41, 0x1c, 0x00, 0x1b,
 | 
				
			||||||
  0x0c, 0xa8, 0xc2, 0xc6, 0x66, 0xd7, 0xe6, 0x92, 0x46, 0x56, 0xe6, 0x46,
 | 
					  0x8a, 0x8d, 0x93, 0x03, 0x0c, 0xa8, 0xc2, 0xc6, 0x66, 0xd7, 0xe6, 0x92,
 | 
				
			||||||
  0x37, 0x25, 0x08, 0xaa, 0x90, 0xe1, 0xb9, 0xd8, 0x95, 0xc9, 0xcd, 0xa5,
 | 
					  0x46, 0x56, 0xe6, 0x46, 0x37, 0x25, 0x08, 0xaa, 0x90, 0xe1, 0xb9, 0xd8,
 | 
				
			||||||
  0xbd, 0xb9, 0x4d, 0x09, 0x88, 0x26, 0x64, 0x78, 0x2e, 0x76, 0x61, 0x6c,
 | 
					  0x95, 0xc9, 0xcd, 0xa5, 0xbd, 0xb9, 0x4d, 0x09, 0x88, 0x26, 0x64, 0x78,
 | 
				
			||||||
  0x76, 0x65, 0x72, 0x53, 0x02, 0xa3, 0x0e, 0x19, 0x9e, 0xcb, 0x1c, 0x5a,
 | 
					  0x2e, 0x76, 0x61, 0x6c, 0x76, 0x65, 0x72, 0x53, 0x02, 0xa3, 0x0e, 0x19,
 | 
				
			||||||
  0x18, 0x59, 0x99, 0x5c, 0xd3, 0x1b, 0x59, 0x19, 0xdb, 0x94, 0x00, 0x29,
 | 
					  0x9e, 0xcb, 0x1c, 0x5a, 0x18, 0x59, 0x99, 0x5c, 0xd3, 0x1b, 0x59, 0x19,
 | 
				
			||||||
  0x43, 0x86, 0xe7, 0x22, 0x57, 0x36, 0xf7, 0x56, 0x27, 0x37, 0x56, 0x36,
 | 
					  0xdb, 0x94, 0x00, 0x29, 0x43, 0x86, 0xe7, 0x22, 0x57, 0x36, 0xf7, 0x56,
 | 
				
			||||||
  0x37, 0x25, 0xb8, 0xea, 0x90, 0xe1, 0xb9, 0xd8, 0xa5, 0x95, 0xdd, 0x25,
 | 
					  0x27, 0x37, 0x56, 0x36, 0x37, 0x25, 0xb8, 0xea, 0x90, 0xe1, 0xb9, 0xd8,
 | 
				
			||||||
  0x91, 0x4d, 0xd1, 0x85, 0xd1, 0x95, 0x4d, 0x09, 0xb2, 0x3a, 0x64, 0x78,
 | 
					  0xa5, 0x95, 0xdd, 0x25, 0x91, 0x4d, 0xd1, 0x85, 0xd1, 0x95, 0x4d, 0x09,
 | 
				
			||||||
  0x2e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73,
 | 
					  0xb2, 0x3a, 0x64, 0x78, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f,
 | 
				
			||||||
  0x53, 0x02, 0x39, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x4c, 0x00, 0x00,
 | 
					  0x69, 0x6e, 0x74, 0x73, 0x53, 0x02, 0x39, 0x00, 0x00, 0x79, 0x18, 0x00,
 | 
				
			||||||
  0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d,
 | 
					  0x00, 0x4c, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
 | 
				
			||||||
  0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07,
 | 
					  0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
 | 
				
			||||||
  0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80,
 | 
					  0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
 | 
				
			||||||
  0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66,
 | 
					  0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d,
 | 
				
			||||||
  0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d,
 | 
					  0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83,
 | 
				
			||||||
  0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07,
 | 
					  0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78,
 | 
				
			||||||
  0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03,
 | 
					  0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70,
 | 
				
			||||||
  0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90,
 | 
					  0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc,
 | 
				
			||||||
  0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50,
 | 
					  0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3,
 | 
				
			||||||
  0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2,
 | 
					  0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c,
 | 
				
			||||||
  0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39,
 | 
					  0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83,
 | 
				
			||||||
  0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14,
 | 
					  0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03,
 | 
				
			||||||
  0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07,
 | 
					  0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68,
 | 
				
			||||||
  0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07,
 | 
					  0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60,
 | 
				
			||||||
  0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87,
 | 
					  0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80,
 | 
				
			||||||
  0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0,
 | 
					  0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98,
 | 
				
			||||||
  0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8,
 | 
					  0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec,
 | 
				
			||||||
  0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc,
 | 
					  0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c,
 | 
				
			||||||
  0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6,
 | 
					  0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d,
 | 
				
			||||||
  0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39,
 | 
					  0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43,
 | 
				
			||||||
  0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f,
 | 
					  0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03,
 | 
				
			||||||
  0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c,
 | 
					  0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03,
 | 
				
			||||||
  0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87,
 | 
					  0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28,
 | 
				
			||||||
  0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0,
 | 
					  0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4,
 | 
				
			||||||
  0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50,
 | 
					  0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1,
 | 
				
			||||||
  0x0f, 0xf4, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00,
 | 
					  0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00,
 | 
				
			||||||
  0x00, 0x46, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41,
 | 
					  0x00, 0x18, 0x00, 0x00, 0x00, 0x46, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe,
 | 
				
			||||||
  0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d,
 | 
					  0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02,
 | 
				
			||||||
  0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08,
 | 
					  0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11,
 | 
				
			||||||
  0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03,
 | 
					  0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe,
 | 
				
			||||||
  0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x0d, 0x40, 0xc3, 0xe5,
 | 
					  0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6,
 | 
				
			||||||
  0x3b, 0x8f, 0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e, 0x71, 0xdb, 0x26, 0x50,
 | 
					  0x0d, 0x40, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x01, 0xcc, 0xb3, 0x10, 0x7e,
 | 
				
			||||||
  0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11, 0x81, 0x52, 0xd3, 0x43,
 | 
					  0x71, 0xdb, 0x26, 0x50, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x34, 0x39, 0x11,
 | 
				
			||||||
  0x4d, 0x7e, 0x71, 0xdb, 0x06, 0x40, 0x30, 0x00, 0xd2, 0x00, 0x00, 0x00,
 | 
					  0x81, 0x52, 0xd3, 0x43, 0x4d, 0x7e, 0x71, 0xdb, 0x06, 0x40, 0x30, 0x00,
 | 
				
			||||||
  0x00, 0x61, 0x20, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41,
 | 
					  0xd2, 0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0x46, 0x00, 0x00,
 | 
				
			||||||
  0x2c, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x24, 0x47, 0x00,
 | 
					  0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
				
			||||||
  0x88, 0xcc, 0x00, 0x14, 0x42, 0x29, 0x94, 0x5c, 0xe1, 0x95, 0x1d, 0x95,
 | 
					  0x00, 0x24, 0x47, 0x00, 0x88, 0xcc, 0x00, 0x14, 0x42, 0x29, 0x94, 0x5c,
 | 
				
			||||||
  0x12, 0xa0, 0x31, 0x03, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x30,
 | 
					  0xe1, 0x95, 0x1d, 0x95, 0x12, 0xa0, 0x31, 0x03, 0x00, 0x23, 0x06, 0x09,
 | 
				
			||||||
  0x71, 0x05, 0xa4, 0x69, 0xc9, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x4c,
 | 
					  0x00, 0x82, 0x60, 0x30, 0x71, 0x05, 0xa4, 0x69, 0xc9, 0x88, 0x41, 0x02,
 | 
				
			||||||
  0x9d, 0x31, 0x6d, 0x9b, 0x32, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x93,
 | 
					  0x80, 0x20, 0x18, 0x4c, 0x9d, 0x31, 0x6d, 0x9b, 0x32, 0x62, 0x90, 0x00,
 | 
				
			||||||
  0x77, 0x44, 0x5c, 0xb7, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0x31,
 | 
					  0x20, 0x08, 0x06, 0x93, 0x77, 0x44, 0x5c, 0xb7, 0x8c, 0x18, 0x24, 0x00,
 | 
				
			||||||
  0x06, 0xca, 0xd6, 0x4d, 0xcb, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18,
 | 
					  0x08, 0x82, 0x81, 0x31, 0x06, 0xca, 0xd6, 0x4d, 0xcb, 0x88, 0x41, 0x02,
 | 
				
			||||||
  0x64, 0xb0, 0x70, 0x9e, 0xc1, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81,
 | 
					  0x80, 0x20, 0x18, 0x18, 0x64, 0xb0, 0x70, 0x9e, 0xc1, 0x8c, 0x18, 0x24,
 | 
				
			||||||
  0x51, 0x06, 0x4c, 0xf7, 0x51, 0xcd, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18,
 | 
					  0x00, 0x08, 0x82, 0x81, 0x51, 0x06, 0x4c, 0xf7, 0x51, 0xcd, 0x88, 0x41,
 | 
				
			||||||
  0x18, 0x66, 0xd0, 0x78, 0x60, 0x80, 0x39, 0x23, 0x06, 0x09, 0x00, 0x82,
 | 
					  0x02, 0x80, 0x20, 0x18, 0x18, 0x66, 0xd0, 0x78, 0x60, 0x80, 0x39, 0x23,
 | 
				
			||||||
  0x60, 0x60, 0x9c, 0x81, 0x23, 0x06, 0x61, 0x70, 0x3d, 0x23, 0x06, 0x09,
 | 
					  0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x9c, 0x81, 0x23, 0x06, 0x61, 0x70,
 | 
				
			||||||
  0x00, 0x82, 0x60, 0x60, 0xa0, 0xc1, 0x33, 0x06, 0x62, 0xa0, 0x40, 0x23,
 | 
					  0x3d, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xa0, 0xc1, 0x33, 0x06,
 | 
				
			||||||
  0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0, 0x9c, 0x41, 0x93, 0x20, 0x42, 0xa0,
 | 
					  0x62, 0xa0, 0x40, 0x23, 0x06, 0x0f, 0x00, 0x82, 0x60, 0xd0, 0x9c, 0x41,
 | 
				
			||||||
  0x28, 0x63, 0x30, 0x06, 0x91, 0x32, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42,
 | 
					  0x93, 0x20, 0x42, 0xa0, 0x28, 0x63, 0x30, 0x06, 0x91, 0x32, 0x9a, 0x10,
 | 
				
			||||||
  0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70, 0x00, 0x20,
 | 
					  0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30,
 | 
				
			||||||
  0x08, 0x06, 0xd0, 0x1a, 0x44, 0x0c, 0x1a, 0x8c, 0x26, 0x04, 0x81, 0x19,
 | 
					  0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0xd0, 0x1a, 0x44, 0x0c, 0x1a, 0x8c,
 | 
				
			||||||
  0x8d, 0x7c, 0x2c, 0x10, 0xe4, 0x63, 0x87, 0x23, 0x1f, 0x0b, 0x08, 0xf9,
 | 
					  0x26, 0x04, 0x83, 0x19, 0x8d, 0x7c, 0x2c, 0x10, 0xe4, 0x63, 0x87, 0x23,
 | 
				
			||||||
  0x18, 0xf2, 0xc8, 0xc7, 0x02, 0x43, 0x3e, 0x96, 0x40, 0xf2, 0x19, 0x31,
 | 
					  0x1f, 0x0b, 0x08, 0xf9, 0x18, 0xf2, 0xc8, 0xc7, 0x02, 0x43, 0x3e, 0x96,
 | 
				
			||||||
  0x48, 0x00, 0x10, 0x04, 0x03, 0xc4, 0x0e, 0xba, 0x38, 0x88, 0x83, 0x33,
 | 
					  0x40, 0xf2, 0x19, 0x31, 0x48, 0x00, 0x10, 0x04, 0x03, 0xc4, 0x0e, 0xba,
 | 
				
			||||||
  0x30, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0xb1, 0x83, 0x2e, 0x0e,
 | 
					  0x38, 0x88, 0x83, 0x33, 0x30, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00,
 | 
				
			||||||
  0xe2, 0x20, 0x23, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0xb1, 0x83,
 | 
					  0xb1, 0x83, 0x2e, 0x0e, 0xe2, 0x20, 0x23, 0x46, 0x0c, 0x12, 0x00, 0x04,
 | 
				
			||||||
  0x2e, 0x0e, 0xe2, 0xc0, 0x0c, 0x84, 0x11, 0x83, 0x04, 0x00, 0x41, 0x30,
 | 
					  0xc1, 0x00, 0xb1, 0x83, 0x2e, 0x0e, 0xe2, 0xc0, 0x0c, 0x84, 0x11, 0x83,
 | 
				
			||||||
  0x40, 0xec, 0xa0, 0x8b, 0x83, 0x38, 0x48, 0x83, 0x00, 0x01, 0x00, 0x00,
 | 
					  0x04, 0x00, 0x41, 0x30, 0x40, 0xec, 0xa0, 0x8b, 0x83, 0x38, 0x48, 0x83,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00
 | 
					  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,3 @@
 | 
				
			|||||||
Texture2D theTexture : register(t0);
 | 
					 | 
				
			||||||
SamplerState theSampler : register(s0);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "D3D12_PixelShader_Common.incl"
 | 
					#include "D3D12_PixelShader_Common.incl"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -8,12 +6,12 @@ SamplerState theSampler : register(s0);
 | 
				
			|||||||
    "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
					    "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
				
			||||||
    "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
					    "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
				
			||||||
    "            DENY_HULL_SHADER_ROOT_ACCESS )," \
 | 
					    "            DENY_HULL_SHADER_ROOT_ACCESS )," \
 | 
				
			||||||
    "RootConstants(num32BitConstants=20, b1),"\
 | 
					    "RootConstants(num32BitConstants=24, b1),"\
 | 
				
			||||||
    "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					    "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
				
			||||||
    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
					    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[RootSignature(TextureRS)]
 | 
					[RootSignature(TextureRS)]
 | 
				
			||||||
float4 main(PixelShaderInput input) : SV_TARGET
 | 
					float4 main(PixelShaderInput input) : SV_TARGET
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return GetOutputColor(theTexture.Sample(theSampler, input.tex)) * input.color;
 | 
					    return GetOutputColor(texture0.Sample(sampler0, input.tex)) * input.color;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,745 +0,0 @@
 | 
				
			|||||||
#if 0
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Input signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
; SV_Position              0   xyzw        0      POS   float       
 | 
					 | 
				
			||||||
; TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
					 | 
				
			||||||
; COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Output signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
; SV_Target                0   xyzw        0   TARGET   float   xyzw
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; shader hash: 6db8687cf82d7e20b49d5858e541af33
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Pipeline Runtime Information: 
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Pixel Shader
 | 
					 | 
				
			||||||
; DepthOutput=0
 | 
					 | 
				
			||||||
; SampleFrequency=0
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Input signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index             InterpMode DynIdx
 | 
					 | 
				
			||||||
; -------------------- ----- ---------------------- ------
 | 
					 | 
				
			||||||
; SV_Position              0          noperspective       
 | 
					 | 
				
			||||||
; TEXCOORD                 0                 linear       
 | 
					 | 
				
			||||||
; COLOR                    0                 linear       
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Output signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index             InterpMode DynIdx
 | 
					 | 
				
			||||||
; -------------------- ----- ---------------------- ------
 | 
					 | 
				
			||||||
; SV_Target                0                              
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Buffer Definitions:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; cbuffer Constants
 | 
					 | 
				
			||||||
; {
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;   struct Constants
 | 
					 | 
				
			||||||
;   {
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;       float scRGB_output;                           ; Offset:    0
 | 
					 | 
				
			||||||
;       float color_scale;                            ; Offset:    4
 | 
					 | 
				
			||||||
;       float unused1;                                ; Offset:    8
 | 
					 | 
				
			||||||
;       float unused2;                                ; Offset:   12
 | 
					 | 
				
			||||||
;       float4 Yoffset;                               ; Offset:   16
 | 
					 | 
				
			||||||
;       float4 Rcoeff;                                ; Offset:   32
 | 
					 | 
				
			||||||
;       float4 Gcoeff;                                ; Offset:   48
 | 
					 | 
				
			||||||
;       float4 Bcoeff;                                ; Offset:   64
 | 
					 | 
				
			||||||
;   
 | 
					 | 
				
			||||||
;   } Constants;                                      ; Offset:    0 Size:    80
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; }
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Resource Bindings:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                                 Type  Format         Dim      ID      HLSL Bind  Count
 | 
					 | 
				
			||||||
; ------------------------------ ---------- ------- ----------- ------- -------------- ------
 | 
					 | 
				
			||||||
; Constants                         cbuffer      NA          NA     CB0            cb1     1
 | 
					 | 
				
			||||||
; theSampler                        sampler      NA          NA      S0             s0     1
 | 
					 | 
				
			||||||
; theTextureY                       texture     f32          2d      T0             t0     1
 | 
					 | 
				
			||||||
; theTextureU                       texture     f32          2d      T1             t1     1
 | 
					 | 
				
			||||||
; theTextureV                       texture     f32          2d      T2             t2     1
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; ViewId state:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Number of inputs: 12, outputs: 4
 | 
					 | 
				
			||||||
; Outputs dependent on ViewId: {  }
 | 
					 | 
				
			||||||
; Inputs contributing to computation of Outputs:
 | 
					 | 
				
			||||||
;   output 0 depends on inputs: { 4, 5, 8 }
 | 
					 | 
				
			||||||
;   output 1 depends on inputs: { 4, 5, 9 }
 | 
					 | 
				
			||||||
;   output 2 depends on inputs: { 4, 5, 10 }
 | 
					 | 
				
			||||||
;   output 3 depends on inputs: { 11 }
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f64:64-n8:16:32:64"
 | 
					 | 
				
			||||||
target triple = "dxil-ms-dx"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
%dx.types.Handle = type { i8* }
 | 
					 | 
				
			||||||
%dx.types.ResRet.f32 = type { float, float, float, float, i32 }
 | 
					 | 
				
			||||||
%dx.types.CBufRet.f32 = type { float, float, float, float }
 | 
					 | 
				
			||||||
%"class.Texture2D<vector<float, 4> >" = type { <4 x float>, %"class.Texture2D<vector<float, 4> >::mips_type" }
 | 
					 | 
				
			||||||
%"class.Texture2D<vector<float, 4> >::mips_type" = type { i32 }
 | 
					 | 
				
			||||||
%Constants = type { float, float, float, float, <4 x float>, <4 x float>, <4 x float>, <4 x float> }
 | 
					 | 
				
			||||||
%struct.SamplerState = type { i32 }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
define void @main() {
 | 
					 | 
				
			||||||
  %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 2, i32 2, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %2 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 1, i32 1, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %3 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %4 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 3, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %5 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 1, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %6 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %7 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %8 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %9 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %10 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %11 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %12 = call %dx.types.ResRet.f32 @dx.op.sample.f32(i32 60, %dx.types.Handle %3, %dx.types.Handle %4, float %10, float %11, float undef, float undef, i32 0, i32 0, i32 undef, float undef)  ; Sample(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp)
 | 
					 | 
				
			||||||
  %13 = extractvalue %dx.types.ResRet.f32 %12, 0
 | 
					 | 
				
			||||||
  %14 = call %dx.types.ResRet.f32 @dx.op.sample.f32(i32 60, %dx.types.Handle %2, %dx.types.Handle %4, float %10, float %11, float undef, float undef, i32 0, i32 0, i32 undef, float undef)  ; Sample(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp)
 | 
					 | 
				
			||||||
  %15 = extractvalue %dx.types.ResRet.f32 %14, 0
 | 
					 | 
				
			||||||
  %16 = call %dx.types.ResRet.f32 @dx.op.sample.f32(i32 60, %dx.types.Handle %1, %dx.types.Handle %4, float %10, float %11, float undef, float undef, i32 0, i32 0, i32 undef, float undef)  ; Sample(srv,sampler,coord0,coord1,coord2,coord3,offset0,offset1,offset2,clamp)
 | 
					 | 
				
			||||||
  %17 = extractvalue %dx.types.ResRet.f32 %16, 0
 | 
					 | 
				
			||||||
  %18 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %5, i32 1)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %19 = extractvalue %dx.types.CBufRet.f32 %18, 0
 | 
					 | 
				
			||||||
  %20 = extractvalue %dx.types.CBufRet.f32 %18, 1
 | 
					 | 
				
			||||||
  %21 = extractvalue %dx.types.CBufRet.f32 %18, 2
 | 
					 | 
				
			||||||
  %22 = fadd fast float %19, %13
 | 
					 | 
				
			||||||
  %23 = fadd fast float %20, %15
 | 
					 | 
				
			||||||
  %24 = fadd fast float %21, %17
 | 
					 | 
				
			||||||
  %25 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %5, i32 2)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %26 = extractvalue %dx.types.CBufRet.f32 %25, 0
 | 
					 | 
				
			||||||
  %27 = extractvalue %dx.types.CBufRet.f32 %25, 1
 | 
					 | 
				
			||||||
  %28 = extractvalue %dx.types.CBufRet.f32 %25, 2
 | 
					 | 
				
			||||||
  %29 = call float @dx.op.dot3.f32(i32 55, float %22, float %23, float %24, float %26, float %27, float %28)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %30 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %5, i32 3)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %31 = extractvalue %dx.types.CBufRet.f32 %30, 0
 | 
					 | 
				
			||||||
  %32 = extractvalue %dx.types.CBufRet.f32 %30, 1
 | 
					 | 
				
			||||||
  %33 = extractvalue %dx.types.CBufRet.f32 %30, 2
 | 
					 | 
				
			||||||
  %34 = call float @dx.op.dot3.f32(i32 55, float %22, float %23, float %24, float %31, float %32, float %33)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %35 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %5, i32 4)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %36 = extractvalue %dx.types.CBufRet.f32 %35, 0
 | 
					 | 
				
			||||||
  %37 = extractvalue %dx.types.CBufRet.f32 %35, 1
 | 
					 | 
				
			||||||
  %38 = extractvalue %dx.types.CBufRet.f32 %35, 2
 | 
					 | 
				
			||||||
  %39 = call float @dx.op.dot3.f32(i32 55, float %22, float %23, float %24, float %36, float %37, float %38)  ; Dot3(ax,ay,az,bx,by,bz)
 | 
					 | 
				
			||||||
  %40 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %5, i32 0)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %41 = extractvalue %dx.types.CBufRet.f32 %40, 0
 | 
					 | 
				
			||||||
  %42 = fcmp fast une float %41, 0.000000e+00
 | 
					 | 
				
			||||||
  br i1 %42, label %43, label %78
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:43                                      ; preds = %0
 | 
					 | 
				
			||||||
  %44 = fcmp fast ugt float %29, 0x3FA4B5DCC0000000
 | 
					 | 
				
			||||||
  br i1 %44, label %47, label %45
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:45                                      ; preds = %43
 | 
					 | 
				
			||||||
  %46 = fmul fast float %29, 0x3FB3D07220000000
 | 
					 | 
				
			||||||
  br label %54
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:47                                      ; preds = %43
 | 
					 | 
				
			||||||
  %48 = fadd fast float %29, 0x3FAC28F5C0000000
 | 
					 | 
				
			||||||
  %49 = call float @dx.op.unary.f32(i32 6, float %48)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %50 = fmul fast float %49, 0x3FEE54EDE0000000
 | 
					 | 
				
			||||||
  %51 = call float @dx.op.unary.f32(i32 23, float %50)  ; Log(value)
 | 
					 | 
				
			||||||
  %52 = fmul fast float %51, 0x4003333340000000
 | 
					 | 
				
			||||||
  %53 = call float @dx.op.unary.f32(i32 21, float %52)  ; Exp(value)
 | 
					 | 
				
			||||||
  br label %54
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:54                                      ; preds = %47, %45
 | 
					 | 
				
			||||||
  %55 = phi float [ %46, %45 ], [ %53, %47 ]
 | 
					 | 
				
			||||||
  %56 = fcmp fast ugt float %34, 0x3FA4B5DCC0000000
 | 
					 | 
				
			||||||
  br i1 %56, label %59, label %57
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:57                                      ; preds = %54
 | 
					 | 
				
			||||||
  %58 = fmul fast float %34, 0x3FB3D07220000000
 | 
					 | 
				
			||||||
  br label %66
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:59                                      ; preds = %54
 | 
					 | 
				
			||||||
  %60 = fadd fast float %34, 0x3FAC28F5C0000000
 | 
					 | 
				
			||||||
  %61 = call float @dx.op.unary.f32(i32 6, float %60)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %62 = fmul fast float %61, 0x3FEE54EDE0000000
 | 
					 | 
				
			||||||
  %63 = call float @dx.op.unary.f32(i32 23, float %62)  ; Log(value)
 | 
					 | 
				
			||||||
  %64 = fmul fast float %63, 0x4003333340000000
 | 
					 | 
				
			||||||
  %65 = call float @dx.op.unary.f32(i32 21, float %64)  ; Exp(value)
 | 
					 | 
				
			||||||
  br label %66
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:66                                      ; preds = %59, %57
 | 
					 | 
				
			||||||
  %67 = phi float [ %58, %57 ], [ %65, %59 ]
 | 
					 | 
				
			||||||
  %68 = fcmp fast ugt float %39, 0x3FA4B5DCC0000000
 | 
					 | 
				
			||||||
  br i1 %68, label %71, label %69
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:69                                      ; preds = %66
 | 
					 | 
				
			||||||
  %70 = fmul fast float %39, 0x3FB3D07220000000
 | 
					 | 
				
			||||||
  br label %78
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:71                                      ; preds = %66
 | 
					 | 
				
			||||||
  %72 = fadd fast float %39, 0x3FAC28F5C0000000
 | 
					 | 
				
			||||||
  %73 = call float @dx.op.unary.f32(i32 6, float %72)  ; FAbs(value)
 | 
					 | 
				
			||||||
  %74 = fmul fast float %73, 0x3FEE54EDE0000000
 | 
					 | 
				
			||||||
  %75 = call float @dx.op.unary.f32(i32 23, float %74)  ; Log(value)
 | 
					 | 
				
			||||||
  %76 = fmul fast float %75, 0x4003333340000000
 | 
					 | 
				
			||||||
  %77 = call float @dx.op.unary.f32(i32 21, float %76)  ; Exp(value)
 | 
					 | 
				
			||||||
  br label %78
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; <label>:78                                      ; preds = %71, %69, %0
 | 
					 | 
				
			||||||
  %79 = phi float [ %29, %0 ], [ %55, %71 ], [ %55, %69 ]
 | 
					 | 
				
			||||||
  %80 = phi float [ %34, %0 ], [ %67, %71 ], [ %67, %69 ]
 | 
					 | 
				
			||||||
  %81 = phi float [ %39, %0 ], [ %77, %71 ], [ %70, %69 ]
 | 
					 | 
				
			||||||
  %82 = extractvalue %dx.types.CBufRet.f32 %40, 1
 | 
					 | 
				
			||||||
  %83 = fmul fast float %79, %6
 | 
					 | 
				
			||||||
  %84 = fmul fast float %83, %82
 | 
					 | 
				
			||||||
  %85 = fmul fast float %80, %7
 | 
					 | 
				
			||||||
  %86 = fmul fast float %85, %82
 | 
					 | 
				
			||||||
  %87 = fmul fast float %81, %8
 | 
					 | 
				
			||||||
  %88 = fmul fast float %87, %82
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %84)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %86)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %88)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %9)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  ret void
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind
 | 
					 | 
				
			||||||
declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.ResRet.f32 @dx.op.sample.f32(i32, %dx.types.Handle, %dx.types.Handle, float, float, float, float, i32, i32, i32, float) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.dot3.f32(i32, float, float, float, float, float, float) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.unary.f32(i32, float) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
attributes #0 = { nounwind readnone }
 | 
					 | 
				
			||||||
attributes #1 = { nounwind }
 | 
					 | 
				
			||||||
attributes #2 = { nounwind readonly }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
!llvm.ident = !{!0}
 | 
					 | 
				
			||||||
!dx.version = !{!1}
 | 
					 | 
				
			||||||
!dx.valver = !{!2}
 | 
					 | 
				
			||||||
!dx.shaderModel = !{!3}
 | 
					 | 
				
			||||||
!dx.resources = !{!4}
 | 
					 | 
				
			||||||
!dx.viewIdState = !{!14}
 | 
					 | 
				
			||||||
!dx.entryPoints = !{!15}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
!0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"}
 | 
					 | 
				
			||||||
!1 = !{i32 1, i32 0}
 | 
					 | 
				
			||||||
!2 = !{i32 1, i32 6}
 | 
					 | 
				
			||||||
!3 = !{!"ps", i32 6, i32 0}
 | 
					 | 
				
			||||||
!4 = !{!5, null, !10, !12}
 | 
					 | 
				
			||||||
!5 = !{!6, !8, !9}
 | 
					 | 
				
			||||||
!6 = !{i32 0, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 0, i32 1, i32 2, i32 0, !7}
 | 
					 | 
				
			||||||
!7 = !{i32 0, i32 9}
 | 
					 | 
				
			||||||
!8 = !{i32 1, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 1, i32 1, i32 2, i32 0, !7}
 | 
					 | 
				
			||||||
!9 = !{i32 2, %"class.Texture2D<vector<float, 4> >"* undef, !"", i32 0, i32 2, i32 1, i32 2, i32 0, !7}
 | 
					 | 
				
			||||||
!10 = !{!11}
 | 
					 | 
				
			||||||
!11 = !{i32 0, %Constants* undef, !"", i32 0, i32 1, i32 1, i32 80, null}
 | 
					 | 
				
			||||||
!12 = !{!13}
 | 
					 | 
				
			||||||
!13 = !{i32 0, %struct.SamplerState* undef, !"", i32 0, i32 0, i32 1, i32 0, null}
 | 
					 | 
				
			||||||
!14 = !{[14 x i32] [i32 12, i32 4, i32 0, i32 0, i32 0, i32 0, i32 7, i32 7, i32 0, i32 0, i32 1, i32 2, i32 4, i32 8]}
 | 
					 | 
				
			||||||
!15 = !{void ()* @main, !"main", !16, !4, null}
 | 
					 | 
				
			||||||
!16 = !{!17, !24, null}
 | 
					 | 
				
			||||||
!17 = !{!18, !20, !22}
 | 
					 | 
				
			||||||
!18 = !{i32 0, !"SV_Position", i8 9, i8 3, !19, i8 4, i32 1, i8 4, i32 0, i8 0, null}
 | 
					 | 
				
			||||||
!19 = !{i32 0}
 | 
					 | 
				
			||||||
!20 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !19, i8 2, i32 1, i8 2, i32 1, i8 0, !21}
 | 
					 | 
				
			||||||
!21 = !{i32 3, i32 3}
 | 
					 | 
				
			||||||
!22 = !{i32 2, !"COLOR", i8 9, i8 0, !19, i8 2, i32 1, i8 4, i32 2, i8 0, !23}
 | 
					 | 
				
			||||||
!23 = !{i32 3, i32 15}
 | 
					 | 
				
			||||||
!24 = !{!25}
 | 
					 | 
				
			||||||
!25 = !{i32 0, !"SV_Target", i8 9, i8 16, !19, i8 0, i32 1, i8 4, i32 0, i8 0, !23}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const unsigned char g_main[] = {
 | 
					 | 
				
			||||||
  0x44, 0x58, 0x42, 0x43, 0xb2, 0x27, 0x53, 0x68, 0xbb, 0xc1, 0x48, 0xdf,
 | 
					 | 
				
			||||||
  0x97, 0xd5, 0xb8, 0xf6, 0xcd, 0x97, 0xb1, 0x37, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x0d, 0x16, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x50, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x15, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x61, 0x02, 0x00, 0x00, 0x49, 0x03, 0x00, 0x00, 0xdd, 0x0b, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0xf9, 0x0b, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
 | 
					 | 
				
			||||||
  0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x00,
 | 
					 | 
				
			||||||
  0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c,
 | 
					 | 
				
			||||||
  0x4f, 0x52, 0x00, 0x4f, 0x53, 0x47, 0x31, 0x32, 0x00, 0x00, 0x00, 0x01,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x03,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74,
 | 
					 | 
				
			||||||
  0x00, 0x50, 0x53, 0x56, 0x30, 0x44, 0x01, 0x00, 0x00, 0x30, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x00, 0x03, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x05, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43,
 | 
					 | 
				
			||||||
  0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x44, 0x03, 0x03, 0x04, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x42, 0x00, 0x03, 0x02, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x44,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x44, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x52, 0x54, 0x53,
 | 
					 | 
				
			||||||
  0x30, 0xe0, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0xc0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0x01, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0x53, 0x54, 0x41, 0x54, 0x8c, 0x08, 0x00, 0x00, 0x60, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x23, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x10, 0x00, 0x00, 0x00, 0x74, 0x08, 0x00, 0x00, 0x42, 0x43, 0xc0,
 | 
					 | 
				
			||||||
  0xde, 0x21, 0x0c, 0x00, 0x00, 0x1a, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20,
 | 
					 | 
				
			||||||
  0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23,
 | 
					 | 
				
			||||||
  0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84,
 | 
					 | 
				
			||||||
  0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x18, 0x45,
 | 
					 | 
				
			||||||
  0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18,
 | 
					 | 
				
			||||||
  0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88,
 | 
					 | 
				
			||||||
  0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x11, 0x23, 0xc4,
 | 
					 | 
				
			||||||
  0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x31, 0x46,
 | 
					 | 
				
			||||||
  0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0,
 | 
					 | 
				
			||||||
  0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x89, 0x20, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x32, 0x22, 0x88,
 | 
					 | 
				
			||||||
  0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4, 0x84, 0x04, 0x13, 0x23,
 | 
					 | 
				
			||||||
  0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c, 0x8c, 0x0b, 0x84, 0xc4,
 | 
					 | 
				
			||||||
  0x4c, 0x10, 0x8c, 0xc1, 0x08, 0x40, 0x09, 0x00, 0x0a, 0x66, 0x00, 0xe6,
 | 
					 | 
				
			||||||
  0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40, 0x10, 0x44, 0x41, 0x90,
 | 
					 | 
				
			||||||
  0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4, 0xa6, 0xe1, 0xf2, 0x27,
 | 
					 | 
				
			||||||
  0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x51,
 | 
					 | 
				
			||||||
  0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70, 0xf9, 0x13, 0xf6, 0x10,
 | 
					 | 
				
			||||||
  0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58, 0x0a, 0xa3, 0x10, 0x0c,
 | 
					 | 
				
			||||||
  0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d, 0x41, 0x06, 0x62, 0x18,
 | 
					 | 
				
			||||||
  0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c, 0x14, 0x1d, 0x35, 0x5c,
 | 
					 | 
				
			||||||
  0xfe, 0x84, 0x3d, 0x84, 0xe4, 0x73, 0x1b, 0x55, 0xac, 0xc4, 0xe4, 0x17,
 | 
					 | 
				
			||||||
  0xb7, 0x8d, 0x88, 0x61, 0x18, 0x86, 0x42, 0x4c, 0x04, 0x43, 0x10, 0x35,
 | 
					 | 
				
			||||||
  0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xb0, 0xe8, 0x1a, 0x08, 0x18,
 | 
					 | 
				
			||||||
  0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8, 0x21, 0x1c, 0xe6, 0x61,
 | 
					 | 
				
			||||||
  0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8, 0xa1, 0x1e, 0xe4, 0xa1,
 | 
					 | 
				
			||||||
  0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca, 0x61, 0x1c, 0xe8, 0xe1,
 | 
					 | 
				
			||||||
  0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde, 0x21, 0x1c, 0xe8, 0x81,
 | 
					 | 
				
			||||||
  0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc, 0x40, 0x0f, 0xf4, 0xa0,
 | 
					 | 
				
			||||||
  0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8, 0x21, 0x1f, 0xe0, 0xa1,
 | 
					 | 
				
			||||||
  0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0, 0x0e, 0xe1, 0x30, 0x0f,
 | 
					 | 
				
			||||||
  0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40, 0x0f, 0xf5, 0x20, 0x0f,
 | 
					 | 
				
			||||||
  0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50, 0x0e, 0xe3, 0x40, 0x0f,
 | 
					 | 
				
			||||||
  0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0, 0x0e, 0xe1, 0x40, 0x0f,
 | 
					 | 
				
			||||||
  0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0, 0x07, 0x48, 0xd0, 0x36,
 | 
					 | 
				
			||||||
  0xe2, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66, 0x92, 0x10, 0x32, 0x0c,
 | 
					 | 
				
			||||||
  0xc3, 0xa0, 0x69, 0x9a, 0x46, 0xde, 0x4d, 0xd2, 0x14, 0x51, 0xc2, 0xe4,
 | 
					 | 
				
			||||||
  0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0, 0x44, 0xa0, 0x80, 0x20,
 | 
					 | 
				
			||||||
  0x30, 0x1d, 0x08, 0x00, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60,
 | 
					 | 
				
			||||||
  0x87, 0x36, 0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf,
 | 
					 | 
				
			||||||
  0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a,
 | 
					 | 
				
			||||||
  0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71,
 | 
					 | 
				
			||||||
  0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73,
 | 
					 | 
				
			||||||
  0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72,
 | 
					 | 
				
			||||||
  0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
 | 
					 | 
				
			||||||
  0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6,
 | 
					 | 
				
			||||||
  0x10, 0x07, 0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73,
 | 
					 | 
				
			||||||
  0x20, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74,
 | 
					 | 
				
			||||||
  0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71,
 | 
					 | 
				
			||||||
  0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43,
 | 
					 | 
				
			||||||
  0x9e, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x86, 0x3c, 0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0c, 0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x90, 0x87, 0x02, 0x02, 0x60, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x21, 0xcf, 0x05, 0x04, 0xc0,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x16, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x18, 0x19, 0x11, 0x4c,
 | 
					 | 
				
			||||||
  0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04,
 | 
					 | 
				
			||||||
  0xa0, 0x18, 0x8a, 0xa0, 0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0xa1, 0x10,
 | 
					 | 
				
			||||||
  0x0a, 0xa2, 0x30, 0x0a, 0xa4, 0x80, 0x0a, 0xac, 0x00, 0x03, 0xca, 0xa3,
 | 
					 | 
				
			||||||
  0x94, 0x4a, 0x37, 0x80, 0x8a, 0x92, 0x28, 0x83, 0x42, 0x18, 0x01, 0x28,
 | 
					 | 
				
			||||||
  0x82, 0x02, 0x21, 0xab, 0x06, 0xa8, 0x9b, 0x01, 0x20, 0x6f, 0x06, 0x80,
 | 
					 | 
				
			||||||
  0xbe, 0x19, 0x00, 0x0a, 0x67, 0x00, 0x48, 0x1c, 0xcb, 0x61, 0x08, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x80, 0xe3, 0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x79, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0xd5, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
 | 
					 | 
				
			||||||
  0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
 | 
					 | 
				
			||||||
  0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
 | 
					 | 
				
			||||||
  0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
 | 
					 | 
				
			||||||
  0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
 | 
					 | 
				
			||||||
  0x04, 0x02, 0x99, 0x20, 0x10, 0xc9, 0x06, 0x61, 0x20, 0x36, 0x08, 0x04,
 | 
					 | 
				
			||||||
  0x41, 0x01, 0x6e, 0x6e, 0x82, 0x40, 0x28, 0x1b, 0x86, 0x03, 0x21, 0x26,
 | 
					 | 
				
			||||||
  0x08, 0x5d, 0x18, 0x70, 0xa1, 0x43, 0x2b, 0xa3, 0x2a, 0xc3, 0xa3, 0xab,
 | 
					 | 
				
			||||||
  0x93, 0x2b, 0xcb, 0x9a, 0x20, 0x10, 0xcb, 0x04, 0x81, 0x60, 0x36, 0x08,
 | 
					 | 
				
			||||||
  0x44, 0xb3, 0x21, 0x21, 0x94, 0x85, 0x20, 0x06, 0x86, 0x70, 0xb8, 0xd0,
 | 
					 | 
				
			||||||
  0xa1, 0x95, 0x51, 0x95, 0xe1, 0xd1, 0xd5, 0xc9, 0x95, 0x55, 0x6d, 0x48,
 | 
					 | 
				
			||||||
  0x06, 0x05, 0x22, 0x86, 0x81, 0x21, 0x1c, 0x2e, 0x74, 0x68, 0x65, 0x54,
 | 
					 | 
				
			||||||
  0x65, 0x78, 0x74, 0x75, 0x72, 0x65, 0x56, 0x1b, 0x12, 0x46, 0x91, 0x08,
 | 
					 | 
				
			||||||
  0x66, 0x60, 0x08, 0x67, 0xc3, 0xf0, 0x44, 0xd3, 0x04, 0xe1, 0x1b, 0x03,
 | 
					 | 
				
			||||||
  0x26, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x13, 0x04,
 | 
					 | 
				
			||||||
  0xa2, 0xd9, 0x80, 0x10, 0x95, 0x45, 0x0c, 0xc3, 0x05, 0x6c, 0x08, 0xb0,
 | 
					 | 
				
			||||||
  0x09, 0x42, 0x18, 0x90, 0x01, 0x15, 0x3a, 0xb4, 0xb2, 0xa9, 0xb0, 0x36,
 | 
					 | 
				
			||||||
  0x38, 0xb6, 0x32, 0xb9, 0x0d, 0x08, 0xa1, 0x6d, 0x04, 0x31, 0x10, 0xc0,
 | 
					 | 
				
			||||||
  0x86, 0x80, 0xdb, 0x40, 0x50, 0x40, 0xd6, 0x4d, 0x10, 0x3c, 0x31, 0x20,
 | 
					 | 
				
			||||||
  0x33, 0x37, 0x26, 0x75, 0x24, 0xf4, 0xf5, 0x56, 0x47, 0x07, 0x57, 0x47,
 | 
					 | 
				
			||||||
  0x37, 0x41, 0x20, 0x9c, 0x09, 0x02, 0xf1, 0x4c, 0x10, 0x2c, 0x30, 0xd8,
 | 
					 | 
				
			||||||
  0x80, 0x20, 0x60, 0x10, 0x06, 0x84, 0x18, 0x34, 0xcd, 0x18, 0x70, 0x19,
 | 
					 | 
				
			||||||
  0x7b, 0x63, 0x7b, 0x93, 0xfb, 0x9a, 0x1b, 0x0b, 0x63, 0x2b, 0x9b, 0x20,
 | 
					 | 
				
			||||||
  0x10, 0xd0, 0x06, 0x04, 0x29, 0x83, 0x30, 0x30, 0x03, 0x31, 0x68, 0x9a,
 | 
					 | 
				
			||||||
  0x31, 0xe0, 0x51, 0xe7, 0x56, 0x37, 0x57, 0x46, 0x16, 0x33, 0x41, 0x20,
 | 
					 | 
				
			||||||
  0xa2, 0x0d, 0x06, 0x82, 0x06, 0x61, 0x90, 0x06, 0x62, 0xd0, 0xf0, 0xa8,
 | 
					 | 
				
			||||||
  0x73, 0xab, 0x9b, 0x2b, 0x23, 0x93, 0x99, 0x20, 0x10, 0xd2, 0x06, 0x03,
 | 
					 | 
				
			||||||
  0x59, 0x83, 0x30, 0x60, 0x03, 0x31, 0x68, 0x78, 0x64, 0xbd, 0x99, 0x99,
 | 
					 | 
				
			||||||
  0xcd, 0x95, 0xd1, 0x4d, 0x10, 0x88, 0x69, 0x03, 0x82, 0xb8, 0x41, 0x18,
 | 
					 | 
				
			||||||
  0xbc, 0x81, 0x18, 0x34, 0xcd, 0x18, 0xd0, 0x90, 0x1a, 0x7b, 0x2b, 0x33,
 | 
					 | 
				
			||||||
  0x33, 0x9b, 0x20, 0x10, 0xd4, 0x06, 0x04, 0x89, 0x83, 0x30, 0x90, 0x03,
 | 
					 | 
				
			||||||
  0x31, 0x68, 0x9a, 0x31, 0xa0, 0x71, 0x34, 0xf6, 0x56, 0x66, 0x66, 0x36,
 | 
					 | 
				
			||||||
  0x41, 0x20, 0xaa, 0x0d, 0x08, 0x42, 0x07, 0x61, 0x50, 0x07, 0x62, 0xd0,
 | 
					 | 
				
			||||||
  0x34, 0x63, 0x40, 0x43, 0x68, 0xec, 0xad, 0xcc, 0xcc, 0x6c, 0x82, 0x40,
 | 
					 | 
				
			||||||
  0x58, 0x1b, 0x10, 0xe4, 0x0e, 0xc2, 0x00, 0x0f, 0xc4, 0xa0, 0x69, 0xc6,
 | 
					 | 
				
			||||||
  0x60, 0x43, 0x72, 0x91, 0xc1, 0x19, 0xa8, 0x41, 0x1b, 0xc0, 0xc1, 0x1c,
 | 
					 | 
				
			||||||
  0xd8, 0x41, 0x1e, 0x6c, 0x18, 0x88, 0x4f, 0x0f, 0x26, 0x08, 0x02, 0xb0,
 | 
					 | 
				
			||||||
  0x01, 0xd8, 0x30, 0x10, 0x7d, 0xd0, 0x07, 0x1b, 0x02, 0x3f, 0xd8, 0x30,
 | 
					 | 
				
			||||||
  0x0c, 0x7c, 0xf0, 0x07, 0x13, 0x04, 0x31, 0x28, 0x83, 0x0d, 0x41, 0x28,
 | 
					 | 
				
			||||||
  0x90, 0x68, 0x0b, 0x4b, 0x73, 0xe3, 0x32, 0x65, 0xf5, 0x05, 0xf5, 0x36,
 | 
					 | 
				
			||||||
  0x97, 0x46, 0x97, 0xf6, 0xe6, 0x36, 0x41, 0x28, 0xb4, 0x09, 0x42, 0xb1,
 | 
					 | 
				
			||||||
  0x6d, 0x08, 0x88, 0x09, 0x42, 0xc1, 0x4d, 0x10, 0x8a, 0x6e, 0xc3, 0x42,
 | 
					 | 
				
			||||||
  0x90, 0x42, 0x29, 0x98, 0xc2, 0x29, 0xa0, 0xc2, 0x80, 0x0a, 0x44, 0x2a,
 | 
					 | 
				
			||||||
  0x00, 0x44, 0xa8, 0x8a, 0xb0, 0x86, 0x9e, 0x9e, 0xa4, 0x88, 0x26, 0x08,
 | 
					 | 
				
			||||||
  0x85, 0xb7, 0x41, 0x08, 0x83, 0x30, 0xd8, 0xb0, 0x0c, 0xab, 0x50, 0x0a,
 | 
					 | 
				
			||||||
  0xa9, 0x70, 0x0a, 0xac, 0x30, 0xb0, 0xc2, 0x90, 0x0a, 0xad, 0xc0, 0x62,
 | 
					 | 
				
			||||||
  0xe8, 0x89, 0xe9, 0x49, 0x6a, 0x82, 0x40, 0x5c, 0x1b, 0x84, 0x30, 0x80,
 | 
					 | 
				
			||||||
  0x85, 0x0d, 0x0b, 0xf3, 0x0a, 0xa5, 0x90, 0x0a, 0xa7, 0xc0, 0x0a, 0x03,
 | 
					 | 
				
			||||||
  0x2a, 0x30, 0xa9, 0x10, 0x0b, 0x1b, 0x06, 0x55, 0x70, 0x05, 0x59, 0x60,
 | 
					 | 
				
			||||||
  0x32, 0x65, 0xf5, 0x45, 0x15, 0x26, 0x77, 0x56, 0x46, 0x37, 0x41, 0x28,
 | 
					 | 
				
			||||||
  0xbe, 0x0d, 0x0b, 0x41, 0x0b, 0xa5, 0x50, 0x0b, 0xa7, 0x90, 0x0a, 0x03,
 | 
					 | 
				
			||||||
  0x2a, 0x10, 0xa9, 0x10, 0x0b, 0x1b, 0x02, 0x5b, 0xd8, 0x30, 0xcc, 0xc2,
 | 
					 | 
				
			||||||
  0x2d, 0x00, 0x1b, 0x0a, 0x3e, 0x18, 0x05, 0x5c, 0xf0, 0x00, 0x22, 0x62,
 | 
					 | 
				
			||||||
  0x72, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x73, 0x34, 0xcc, 0xd8, 0xde, 0xc2,
 | 
					 | 
				
			||||||
  0xe8, 0xe6, 0x26, 0x08, 0x04, 0xc6, 0x22, 0xcd, 0x6d, 0x8e, 0x6e, 0x6e,
 | 
					 | 
				
			||||||
  0x82, 0x40, 0x64, 0x34, 0xe6, 0xd2, 0xce, 0xbe, 0xd8, 0xc8, 0x68, 0xcc,
 | 
					 | 
				
			||||||
  0xa5, 0x9d, 0x7d, 0xcd, 0xd1, 0x11, 0xa1, 0x2b, 0xc3, 0xfb, 0x72, 0x7b,
 | 
					 | 
				
			||||||
  0x93, 0x6b, 0xdb, 0xc0, 0xe8, 0x82, 0x19, 0xec, 0x02, 0x2f, 0xf4, 0x82,
 | 
					 | 
				
			||||||
  0x2f, 0xfc, 0x02, 0x02, 0x0e, 0x66, 0x10, 0x0e, 0x61, 0x50, 0x85, 0x8d,
 | 
					 | 
				
			||||||
  0xcd, 0xae, 0xcd, 0x25, 0x8d, 0xac, 0xcc, 0x8d, 0x6e, 0x4a, 0x10, 0x54,
 | 
					 | 
				
			||||||
  0x21, 0xc3, 0x73, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x9b, 0x12,
 | 
					 | 
				
			||||||
  0x10, 0x4d, 0xc8, 0xf0, 0x5c, 0xec, 0xc2, 0xd8, 0xec, 0xca, 0xe4, 0xa6,
 | 
					 | 
				
			||||||
  0x04, 0x45, 0x1d, 0x32, 0x3c, 0x97, 0x39, 0xb4, 0x30, 0xb2, 0x32, 0xb9,
 | 
					 | 
				
			||||||
  0xa6, 0x37, 0xb2, 0x32, 0xb6, 0x29, 0x01, 0x52, 0x86, 0x0c, 0xcf, 0x45,
 | 
					 | 
				
			||||||
  0xae, 0x6c, 0xee, 0xad, 0x4e, 0x6e, 0xac, 0x6c, 0x6e, 0x4a, 0xd0, 0x55,
 | 
					 | 
				
			||||||
  0x22, 0xc3, 0x73, 0xa1, 0xcb, 0x83, 0x2b, 0x0b, 0x72, 0x73, 0x7b, 0xa3,
 | 
					 | 
				
			||||||
  0x0b, 0xa3, 0x4b, 0x7b, 0x73, 0x9b, 0x9b, 0x22, 0xe8, 0xc1, 0x1f, 0xd4,
 | 
					 | 
				
			||||||
  0x21, 0xc3, 0x73, 0xb1, 0x4b, 0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2, 0x0b,
 | 
					 | 
				
			||||||
  0xa3, 0x2b, 0x9b, 0x12, 0x84, 0x42, 0x1d, 0x32, 0x3c, 0x97, 0x32, 0x37,
 | 
					 | 
				
			||||||
  0x3a, 0xb9, 0x3c, 0xa8, 0xb7, 0x34, 0x37, 0xba, 0xb9, 0x29, 0x01, 0x2e,
 | 
					 | 
				
			||||||
  0x74, 0x21, 0xc3, 0x73, 0x19, 0x7b, 0xab, 0x73, 0xa3, 0x2b, 0x93, 0x9b,
 | 
					 | 
				
			||||||
  0x9b, 0x12, 0x84, 0x03, 0x00, 0x79, 0x18, 0x00, 0x00, 0x51, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d,
 | 
					 | 
				
			||||||
  0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07,
 | 
					 | 
				
			||||||
  0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80,
 | 
					 | 
				
			||||||
  0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66,
 | 
					 | 
				
			||||||
  0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d,
 | 
					 | 
				
			||||||
  0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07,
 | 
					 | 
				
			||||||
  0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03,
 | 
					 | 
				
			||||||
  0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50,
 | 
					 | 
				
			||||||
  0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2,
 | 
					 | 
				
			||||||
  0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39,
 | 
					 | 
				
			||||||
  0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14,
 | 
					 | 
				
			||||||
  0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07,
 | 
					 | 
				
			||||||
  0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07,
 | 
					 | 
				
			||||||
  0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87,
 | 
					 | 
				
			||||||
  0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0,
 | 
					 | 
				
			||||||
  0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8,
 | 
					 | 
				
			||||||
  0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc,
 | 
					 | 
				
			||||||
  0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6,
 | 
					 | 
				
			||||||
  0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39,
 | 
					 | 
				
			||||||
  0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f,
 | 
					 | 
				
			||||||
  0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x0c,
 | 
					 | 
				
			||||||
  0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28, 0x87, 0x76, 0x80, 0x87,
 | 
					 | 
				
			||||||
  0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4, 0x20, 0x0e, 0xe7, 0xe0,
 | 
					 | 
				
			||||||
  0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1, 0x90, 0x0f, 0xef, 0x50,
 | 
					 | 
				
			||||||
  0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f, 0xdc, 0x40, 0x1c, 0xe4,
 | 
					 | 
				
			||||||
  0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c, 0xe4, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x71, 0x20, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x66, 0xb0, 0x0d,
 | 
					 | 
				
			||||||
  0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c,
 | 
					 | 
				
			||||||
  0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x07, 0xd2, 0x70, 0xf9,
 | 
					 | 
				
			||||||
  0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x18,
 | 
					 | 
				
			||||||
  0x81, 0x33, 0x5c, 0xbe, 0xf3, 0xf8, 0x83, 0x33, 0xdd, 0x7e, 0x71, 0xdb,
 | 
					 | 
				
			||||||
  0x16, 0x30, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0xe2, 0x00, 0x83, 0xd8, 0x3c,
 | 
					 | 
				
			||||||
  0xd4, 0xe4, 0x17, 0xb7, 0x6d, 0x03, 0xd0, 0x70, 0xf9, 0xce, 0xe3, 0x4b,
 | 
					 | 
				
			||||||
  0x00, 0xf3, 0x2c, 0x84, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b,
 | 
					 | 
				
			||||||
  0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc,
 | 
					 | 
				
			||||||
  0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f, 0x35, 0x40, 0x84, 0xf9,
 | 
					 | 
				
			||||||
  0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x48, 0x41, 0x53, 0x48, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x6d, 0xb8, 0x68, 0x7c, 0xf8, 0x2d, 0x7e, 0x20, 0xb4, 0x9d, 0x58,
 | 
					 | 
				
			||||||
  0x58, 0xe5, 0x41, 0xaf, 0x33, 0x44, 0x58, 0x49, 0x4c, 0x0c, 0x0a, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x60, 0x00, 0x00, 0x00, 0x83, 0x02, 0x00, 0x00, 0x44, 0x58, 0x49,
 | 
					 | 
				
			||||||
  0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xf4, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x7a, 0x02, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b,
 | 
					 | 
				
			||||||
  0x62, 0x80, 0x18, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xc4, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x62, 0x88, 0x48, 0x90, 0x14,
 | 
					 | 
				
			||||||
  0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e,
 | 
					 | 
				
			||||||
  0x90, 0x11, 0x23, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5,
 | 
					 | 
				
			||||||
  0x8a, 0x04, 0x31, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40, 0x02, 0xa8,
 | 
					 | 
				
			||||||
  0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d, 0x30, 0x86,
 | 
					 | 
				
			||||||
  0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20, 0x4c, 0x08,
 | 
					 | 
				
			||||||
  0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x54, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x32, 0x22, 0x88, 0x09, 0x20, 0x64, 0x85, 0x04, 0x13, 0x23, 0xa4,
 | 
					 | 
				
			||||||
  0x84, 0x04, 0x13, 0x23, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8c,
 | 
					 | 
				
			||||||
  0x8c, 0x0b, 0x84, 0xc4, 0x4c, 0x10, 0x90, 0xc1, 0x08, 0x40, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x0a, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6, 0x40,
 | 
					 | 
				
			||||||
  0x10, 0x44, 0x41, 0x90, 0x51, 0x0c, 0x80, 0x20, 0x88, 0x62, 0x20, 0xe4,
 | 
					 | 
				
			||||||
  0xa6, 0xe1, 0xf2, 0x27, 0xec, 0x21, 0x24, 0x7f, 0x25, 0xa4, 0x95, 0x98,
 | 
					 | 
				
			||||||
  0xfc, 0xe2, 0xb6, 0x51, 0x31, 0x0c, 0xc3, 0x40, 0x50, 0x71, 0xcf, 0x70,
 | 
					 | 
				
			||||||
  0xf9, 0x13, 0xf6, 0x10, 0x92, 0x1f, 0x02, 0xcd, 0xb0, 0x10, 0x28, 0x58,
 | 
					 | 
				
			||||||
  0x0a, 0xa3, 0x10, 0x0c, 0x33, 0x0c, 0xc3, 0x40, 0x10, 0xc4, 0x40, 0x4d,
 | 
					 | 
				
			||||||
  0x41, 0x06, 0x62, 0x18, 0x86, 0x61, 0x18, 0xe8, 0x29, 0xc3, 0x40, 0x0c,
 | 
					 | 
				
			||||||
  0x14, 0x1d, 0x35, 0x5c, 0xfe, 0x84, 0x3d, 0x84, 0xe4, 0x73, 0x1b, 0x55,
 | 
					 | 
				
			||||||
  0xac, 0xc4, 0xe4, 0x17, 0xb7, 0x8d, 0x88, 0x61, 0x18, 0x86, 0x42, 0x4c,
 | 
					 | 
				
			||||||
  0x04, 0x43, 0x10, 0x35, 0x47, 0x10, 0x14, 0x83, 0x21, 0x0a, 0x82, 0xb0,
 | 
					 | 
				
			||||||
  0xe8, 0x1a, 0x08, 0x18, 0x46, 0x20, 0x86, 0x99, 0xda, 0x60, 0x1c, 0xd8,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe6, 0x61, 0x1e, 0xdc, 0x80, 0x16, 0xca, 0x01, 0x1f, 0xe8,
 | 
					 | 
				
			||||||
  0xa1, 0x1e, 0xe4, 0xa1, 0x1c, 0xe4, 0x80, 0x14, 0xf8, 0xc0, 0x1e, 0xca,
 | 
					 | 
				
			||||||
  0x61, 0x1c, 0xe8, 0xe1, 0x1d, 0xe4, 0x81, 0x0f, 0xcc, 0x81, 0x1d, 0xde,
 | 
					 | 
				
			||||||
  0x21, 0x1c, 0xe8, 0x81, 0x0d, 0xc0, 0x80, 0x0e, 0xfc, 0x00, 0x0c, 0xfc,
 | 
					 | 
				
			||||||
  0x40, 0x0f, 0xf4, 0xa0, 0x1d, 0xd2, 0x01, 0x1e, 0xe6, 0xe1, 0x17, 0xe8,
 | 
					 | 
				
			||||||
  0x21, 0x1f, 0xe0, 0xa1, 0x1c, 0x50, 0x40, 0xcc, 0x24, 0x06, 0xe3, 0xc0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x30, 0x0f, 0xf3, 0xe0, 0x06, 0xb4, 0x50, 0x0e, 0xf8, 0x40,
 | 
					 | 
				
			||||||
  0x0f, 0xf5, 0x20, 0x0f, 0xe5, 0x20, 0x07, 0xa4, 0xc0, 0x07, 0xf6, 0x50,
 | 
					 | 
				
			||||||
  0x0e, 0xe3, 0x40, 0x0f, 0xef, 0x20, 0x0f, 0x7c, 0x60, 0x0e, 0xec, 0xf0,
 | 
					 | 
				
			||||||
  0x0e, 0xe1, 0x40, 0x0f, 0x6c, 0x00, 0x06, 0x74, 0xe0, 0x07, 0x60, 0xe0,
 | 
					 | 
				
			||||||
  0x07, 0x48, 0xd0, 0x36, 0xe2, 0x2e, 0xe1, 0x9c, 0x46, 0x9a, 0x80, 0x66,
 | 
					 | 
				
			||||||
  0x92, 0x10, 0x32, 0x0c, 0xc3, 0xa0, 0x69, 0x9a, 0x46, 0xde, 0x4d, 0xd2,
 | 
					 | 
				
			||||||
  0x14, 0x51, 0xc2, 0xe4, 0xb3, 0x00, 0xf3, 0x2c, 0x44, 0xc4, 0x4e, 0xc0,
 | 
					 | 
				
			||||||
  0x44, 0xa0, 0x80, 0x20, 0x30, 0x1d, 0x88, 0x29, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87,
 | 
					 | 
				
			||||||
  0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0,
 | 
					 | 
				
			||||||
  0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0,
 | 
					 | 
				
			||||||
  0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20,
 | 
					 | 
				
			||||||
  0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90,
 | 
					 | 
				
			||||||
  0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30,
 | 
					 | 
				
			||||||
  0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40,
 | 
					 | 
				
			||||||
  0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0,
 | 
					 | 
				
			||||||
  0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30,
 | 
					 | 
				
			||||||
  0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40,
 | 
					 | 
				
			||||||
  0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30,
 | 
					 | 
				
			||||||
  0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10,
 | 
					 | 
				
			||||||
  0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10,
 | 
					 | 
				
			||||||
  0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2,
 | 
					 | 
				
			||||||
  0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
 | 
					 | 
				
			||||||
  0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x60, 0xc8, 0x13, 0x01, 0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0xc0, 0x90, 0x87, 0x02, 0x02, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x80, 0x21, 0xcf, 0x05, 0x04, 0xc0, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x59, 0x20, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x32, 0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26,
 | 
					 | 
				
			||||||
  0x47, 0xc6, 0x04, 0x43, 0x22, 0x4a, 0x60, 0x04, 0xa0, 0x18, 0x8a, 0xa0,
 | 
					 | 
				
			||||||
  0x24, 0x0a, 0x34, 0xa0, 0x0c, 0xca, 0x83, 0x8a, 0x92, 0x28, 0x83, 0x42,
 | 
					 | 
				
			||||||
  0x18, 0x01, 0x28, 0x82, 0x02, 0xa1, 0x6e, 0x06, 0x80, 0xbe, 0x19, 0x00,
 | 
					 | 
				
			||||||
  0x0a, 0x67, 0x00, 0x48, 0x1c, 0xcb, 0x61, 0x08, 0x00, 0x00, 0x80, 0xe3,
 | 
					 | 
				
			||||||
  0x00, 0x80, 0x40, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x79, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x70, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46, 0x02, 0x13,
 | 
					 | 
				
			||||||
  0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b,
 | 
					 | 
				
			||||||
  0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b,
 | 
					 | 
				
			||||||
  0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9,
 | 
					 | 
				
			||||||
  0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b, 0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13,
 | 
					 | 
				
			||||||
  0x04, 0x02, 0x99, 0x20, 0x10, 0xc9, 0x06, 0x61, 0x20, 0x26, 0x08, 0x84,
 | 
					 | 
				
			||||||
  0xb2, 0x41, 0x18, 0x0c, 0x0a, 0x70, 0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26,
 | 
					 | 
				
			||||||
  0x08, 0x9d, 0x45, 0x60, 0x82, 0x40, 0x2c, 0x13, 0x04, 0x82, 0xd9, 0x20,
 | 
					 | 
				
			||||||
  0x10, 0xcd, 0x86, 0x84, 0x50, 0x16, 0x82, 0x18, 0x18, 0xc2, 0xd9, 0x90,
 | 
					 | 
				
			||||||
  0x0c, 0xca, 0x42, 0x0c, 0x03, 0x43, 0x38, 0x1b, 0x12, 0x46, 0x59, 0x08,
 | 
					 | 
				
			||||||
  0x66, 0x60, 0x08, 0x67, 0xc3, 0xf0, 0x40, 0xd1, 0x04, 0xe1, 0xbb, 0x26,
 | 
					 | 
				
			||||||
  0x08, 0x44, 0xb3, 0x01, 0x21, 0xa6, 0x85, 0x18, 0x06, 0x0a, 0xd8, 0x10,
 | 
					 | 
				
			||||||
  0x54, 0x13, 0x84, 0x30, 0xc0, 0x36, 0x20, 0xc4, 0xb5, 0x10, 0xc4, 0x40,
 | 
					 | 
				
			||||||
  0x00, 0x1b, 0x02, 0x6c, 0x03, 0x21, 0x01, 0x56, 0x36, 0x41, 0x10, 0x83,
 | 
					 | 
				
			||||||
  0x6c, 0x43, 0xb0, 0x4d, 0x10, 0x04, 0x80, 0x44, 0x5b, 0x58, 0x9a, 0x1b,
 | 
					 | 
				
			||||||
  0x97, 0x29, 0xab, 0x2f, 0xa8, 0xb7, 0xb9, 0x34, 0xba, 0xb4, 0x37, 0xb7,
 | 
					 | 
				
			||||||
  0x09, 0x42, 0x01, 0x4d, 0x10, 0x8a, 0x68, 0x43, 0x40, 0x4c, 0x10, 0x0a,
 | 
					 | 
				
			||||||
  0x69, 0x82, 0x50, 0x4c, 0x1b, 0x16, 0xe2, 0x03, 0x83, 0x30, 0x10, 0x83,
 | 
					 | 
				
			||||||
  0x31, 0x18, 0xc6, 0x80, 0x20, 0x03, 0x80, 0x08, 0x55, 0x11, 0xd6, 0xd0,
 | 
					 | 
				
			||||||
  0xd3, 0x93, 0x14, 0xd1, 0x04, 0xa1, 0xa0, 0x26, 0x08, 0x84, 0xb3, 0x41,
 | 
					 | 
				
			||||||
  0x40, 0x03, 0x34, 0xd8, 0xb0, 0x0c, 0x66, 0x00, 0x06, 0x64, 0x20, 0x06,
 | 
					 | 
				
			||||||
  0x67, 0x30, 0x9c, 0xc1, 0x40, 0x06, 0x69, 0xc0, 0x62, 0xe8, 0x89, 0xe9,
 | 
					 | 
				
			||||||
  0x49, 0x6a, 0x82, 0x40, 0x3c, 0x1b, 0x04, 0x34, 0x60, 0x83, 0x0d, 0x0b,
 | 
					 | 
				
			||||||
  0xb3, 0x06, 0x60, 0x40, 0x06, 0x62, 0x70, 0x06, 0xc3, 0x18, 0x30, 0x64,
 | 
					 | 
				
			||||||
  0xd0, 0x06, 0x1b, 0x86, 0x32, 0x50, 0x03, 0x37, 0x60, 0x32, 0x65, 0xf5,
 | 
					 | 
				
			||||||
  0x45, 0x15, 0x26, 0x77, 0x56, 0x46, 0x37, 0x41, 0x28, 0xaa, 0x0d, 0x0b,
 | 
					 | 
				
			||||||
  0x01, 0x07, 0x60, 0x10, 0x07, 0x62, 0x40, 0x06, 0xc3, 0x18, 0x10, 0x64,
 | 
					 | 
				
			||||||
  0xd0, 0x06, 0x1b, 0x02, 0x39, 0xd8, 0x30, 0xbc, 0xc1, 0x1c, 0x00, 0x1b,
 | 
					 | 
				
			||||||
  0x8a, 0xce, 0xa3, 0x03, 0x0d, 0xa8, 0xc2, 0xc6, 0x66, 0xd7, 0xe6, 0x92,
 | 
					 | 
				
			||||||
  0x46, 0x56, 0xe6, 0x46, 0x37, 0x25, 0x08, 0xaa, 0x90, 0xe1, 0xb9, 0xd8,
 | 
					 | 
				
			||||||
  0x95, 0xc9, 0xcd, 0xa5, 0xbd, 0xb9, 0x4d, 0x09, 0x88, 0x26, 0x64, 0x78,
 | 
					 | 
				
			||||||
  0x2e, 0x76, 0x61, 0x6c, 0x76, 0x65, 0x72, 0x53, 0x02, 0xa3, 0x0e, 0x19,
 | 
					 | 
				
			||||||
  0x9e, 0xcb, 0x1c, 0x5a, 0x18, 0x59, 0x99, 0x5c, 0xd3, 0x1b, 0x59, 0x19,
 | 
					 | 
				
			||||||
  0xdb, 0x94, 0x00, 0x29, 0x43, 0x86, 0xe7, 0x22, 0x57, 0x36, 0xf7, 0x56,
 | 
					 | 
				
			||||||
  0x27, 0x37, 0x56, 0x36, 0x37, 0x25, 0xc8, 0xea, 0x90, 0xe1, 0xb9, 0xd8,
 | 
					 | 
				
			||||||
  0xa5, 0x95, 0xdd, 0x25, 0x91, 0x4d, 0xd1, 0x85, 0xd1, 0x95, 0x4d, 0x09,
 | 
					 | 
				
			||||||
  0xb6, 0x3a, 0x64, 0x78, 0x2e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f,
 | 
					 | 
				
			||||||
  0x69, 0x6e, 0x74, 0x73, 0x53, 0x02, 0x3a, 0x00, 0x00, 0x79, 0x18, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x51, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c,
 | 
					 | 
				
			||||||
  0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80,
 | 
					 | 
				
			||||||
  0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed,
 | 
					 | 
				
			||||||
  0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d,
 | 
					 | 
				
			||||||
  0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83,
 | 
					 | 
				
			||||||
  0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78,
 | 
					 | 
				
			||||||
  0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70,
 | 
					 | 
				
			||||||
  0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc,
 | 
					 | 
				
			||||||
  0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3,
 | 
					 | 
				
			||||||
  0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c,
 | 
					 | 
				
			||||||
  0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83,
 | 
					 | 
				
			||||||
  0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03,
 | 
					 | 
				
			||||||
  0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68,
 | 
					 | 
				
			||||||
  0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60,
 | 
					 | 
				
			||||||
  0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80,
 | 
					 | 
				
			||||||
  0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98,
 | 
					 | 
				
			||||||
  0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec,
 | 
					 | 
				
			||||||
  0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c,
 | 
					 | 
				
			||||||
  0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d,
 | 
					 | 
				
			||||||
  0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43,
 | 
					 | 
				
			||||||
  0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03,
 | 
					 | 
				
			||||||
  0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03,
 | 
					 | 
				
			||||||
  0x3b, 0xb0, 0xc3, 0x0c, 0xc4, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x7a, 0x28,
 | 
					 | 
				
			||||||
  0x87, 0x76, 0x80, 0x87, 0x19, 0xd1, 0x43, 0x0e, 0xf8, 0xe0, 0x06, 0xe4,
 | 
					 | 
				
			||||||
  0x20, 0x0e, 0xe7, 0xe0, 0x06, 0xf6, 0x10, 0x0e, 0xf2, 0xc0, 0x0e, 0xe1,
 | 
					 | 
				
			||||||
  0x90, 0x0f, 0xef, 0x50, 0x0f, 0xf4, 0x30, 0x83, 0x81, 0xc8, 0x01, 0x1f,
 | 
					 | 
				
			||||||
  0xdc, 0x40, 0x1c, 0xe4, 0xa1, 0x1c, 0xc2, 0x61, 0x1d, 0xdc, 0x40, 0x1c,
 | 
					 | 
				
			||||||
  0xe4, 0x01, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x1e, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x66, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41,
 | 
					 | 
				
			||||||
  0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d,
 | 
					 | 
				
			||||||
  0x07, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08,
 | 
					 | 
				
			||||||
  0x34, 0xc3, 0x42, 0x18, 0x81, 0x33, 0x5c, 0xbe, 0xf3, 0xf8, 0x83, 0x33,
 | 
					 | 
				
			||||||
  0xdd, 0x7e, 0x71, 0xdb, 0x16, 0x30, 0x0d, 0x97, 0xef, 0x3c, 0xfe, 0xe2,
 | 
					 | 
				
			||||||
  0x00, 0x83, 0xd8, 0x3c, 0xd4, 0xe4, 0x17, 0xb7, 0x6d, 0x03, 0xd0, 0x70,
 | 
					 | 
				
			||||||
  0xf9, 0xce, 0xe3, 0x4b, 0x00, 0xf3, 0x2c, 0x84, 0x5f, 0xdc, 0xb6, 0x09,
 | 
					 | 
				
			||||||
  0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4,
 | 
					 | 
				
			||||||
  0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x15, 0x3c, 0xc3, 0xe5, 0x3b, 0x8f, 0x4f,
 | 
					 | 
				
			||||||
  0x35, 0x40, 0x84, 0xf9, 0xc5, 0x6d, 0x1b, 0x00, 0xc1, 0x00, 0x48, 0x03,
 | 
					 | 
				
			||||||
  0x00, 0x61, 0x20, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00, 0x13, 0x04, 0x4b,
 | 
					 | 
				
			||||||
  0x2c, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x64, 0x8d, 0x00,
 | 
					 | 
				
			||||||
  0x50, 0x51, 0x02, 0x44, 0x94, 0x4a, 0xb9, 0x94, 0x5b, 0xe1, 0x95, 0xc2,
 | 
					 | 
				
			||||||
  0x0c, 0x40, 0x21, 0x94, 0x5c, 0xd9, 0xd1, 0x30, 0x02, 0x30, 0x46, 0xa0,
 | 
					 | 
				
			||||||
  0xb3, 0xe6, 0x1c, 0x82, 0xc1, 0x18, 0xc1, 0xbb, 0xa7, 0xe5, 0xfd, 0x8d,
 | 
					 | 
				
			||||||
  0x11, 0xb8, 0x7d, 0x2c, 0xda, 0xde, 0x18, 0x41, 0xcc, 0x83, 0x7d, 0xee,
 | 
					 | 
				
			||||||
  0x8d, 0x11, 0x98, 0xf7, 0xba, 0xca, 0xde, 0x0c, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x95, 0x41, 0x92, 0x85,
 | 
					 | 
				
			||||||
  0x41, 0x18, 0x48, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70, 0x99, 0x81,
 | 
					 | 
				
			||||||
  0xa2, 0x95, 0x41, 0x19, 0x4c, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x70,
 | 
					 | 
				
			||||||
  0x9d, 0xc1, 0xb2, 0x95, 0x41, 0x19, 0x50, 0x23, 0x06, 0x09, 0x00, 0x82,
 | 
					 | 
				
			||||||
  0x60, 0x70, 0xa1, 0x01, 0xe3, 0x99, 0x81, 0x19, 0x54, 0x23, 0x06, 0x09,
 | 
					 | 
				
			||||||
  0x00, 0x82, 0x60, 0x70, 0xa5, 0x41, 0xc3, 0x9d, 0x01, 0x1a, 0x58, 0x23,
 | 
					 | 
				
			||||||
  0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc0, 0xc1, 0x63, 0x06, 0x68, 0xe0,
 | 
					 | 
				
			||||||
  0x41, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc4, 0x01, 0x74, 0x06,
 | 
					 | 
				
			||||||
  0x69, 0x70, 0x45, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0xc8, 0x41,
 | 
					 | 
				
			||||||
  0x84, 0x06, 0x6a, 0xf0, 0x49, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60,
 | 
					 | 
				
			||||||
  0xcc, 0x81, 0x94, 0x06, 0x6b, 0x30, 0x06, 0xd3, 0x88, 0x41, 0x02, 0x80,
 | 
					 | 
				
			||||||
  0x20, 0x18, 0x18, 0x74, 0x30, 0xb5, 0x01, 0x1b, 0x88, 0x01, 0x35, 0x62,
 | 
					 | 
				
			||||||
  0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x1d, 0x50, 0x6e, 0xd0, 0x06, 0x5b,
 | 
					 | 
				
			||||||
  0x35, 0x62, 0xf0, 0x00, 0x20, 0x08, 0x06, 0x0d, 0x1d, 0x60, 0x09, 0x22,
 | 
					 | 
				
			||||||
  0x04, 0x0c, 0xe3, 0x06, 0x6e, 0x60, 0x31, 0xa3, 0x09, 0x01, 0x30, 0x62,
 | 
					 | 
				
			||||||
  0xf0, 0x00, 0x20, 0x08, 0x06, 0x8d, 0x1d, 0x68, 0x8c, 0x42, 0x0c, 0x8e,
 | 
					 | 
				
			||||||
  0x03, 0x07, 0x70, 0x80, 0x39, 0xa3, 0x09, 0x01, 0x30, 0x62, 0xf0, 0x00,
 | 
					 | 
				
			||||||
  0x20, 0x08, 0x06, 0x0d, 0x1e, 0x70, 0x0f, 0x63, 0x14, 0x10, 0x24, 0x07,
 | 
					 | 
				
			||||||
  0x72, 0xa0, 0x41, 0xa3, 0x09, 0x01, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08,
 | 
					 | 
				
			||||||
  0x06, 0xd4, 0x1d, 0x64, 0x4d, 0x1d, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82,
 | 
					 | 
				
			||||||
  0x10, 0x8c, 0x26, 0x0c, 0x82, 0x0d, 0x09, 0x7c, 0x6c, 0x40, 0xe0, 0x63,
 | 
					 | 
				
			||||||
  0xc3, 0x01, 0x9f, 0x11, 0x83, 0x03, 0x00, 0x41, 0x30, 0xa0, 0xfc, 0x00,
 | 
					 | 
				
			||||||
  0x0c, 0xa8, 0x3c, 0x18, 0x4d, 0x08, 0x80, 0xd1, 0x04, 0x21, 0x18, 0x4d,
 | 
					 | 
				
			||||||
  0x18, 0x84, 0x11, 0x83, 0x05, 0x00, 0x41, 0x30, 0x78, 0x48, 0x41, 0x0d,
 | 
					 | 
				
			||||||
  0x0e, 0xa3, 0x18, 0x84, 0x60, 0xc4, 0xe0, 0x00, 0x40, 0x10, 0x0c, 0xa8,
 | 
					 | 
				
			||||||
  0x51, 0x28, 0x83, 0x6c, 0x0f, 0x46, 0x13, 0x02, 0x60, 0x34, 0x41, 0x08,
 | 
					 | 
				
			||||||
  0x46, 0x13, 0x06, 0x61, 0xc4, 0x60, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x54,
 | 
					 | 
				
			||||||
  0x78, 0x03, 0x66, 0x51, 0x06, 0x21, 0x18, 0x31, 0x38, 0x00, 0x10, 0x04,
 | 
					 | 
				
			||||||
  0x03, 0x0a, 0x15, 0xd4, 0xc0, 0x63, 0x83, 0xd1, 0x84, 0x00, 0x18, 0x4d,
 | 
					 | 
				
			||||||
  0x10, 0x82, 0xd1, 0x84, 0x41, 0x18, 0x31, 0x58, 0x00, 0x10, 0x04, 0x83,
 | 
					 | 
				
			||||||
  0xc7, 0x15, 0xe8, 0x20, 0x82, 0x9e, 0x41, 0x08, 0x46, 0x0c, 0x0e, 0x00,
 | 
					 | 
				
			||||||
  0x04, 0xc1, 0x80, 0x6a, 0x85, 0x37, 0x18, 0x03, 0x55, 0x18, 0x4d, 0x08,
 | 
					 | 
				
			||||||
  0x80, 0xe1, 0x88, 0x00, 0x0e, 0x9c, 0x6f, 0x96, 0x21, 0x50, 0x82, 0xe1,
 | 
					 | 
				
			||||||
  0x08, 0x87, 0x0d, 0x94, 0x6f, 0x96, 0x61, 0x10, 0x02, 0x7b, 0xdc, 0x40,
 | 
					 | 
				
			||||||
  0x3e, 0xb3, 0x04, 0x84, 0x41, 0x70, 0x00, 0x9f, 0x11, 0x03, 0x03, 0x00,
 | 
					 | 
				
			||||||
  0x41, 0x30, 0x88, 0x68, 0xe1, 0x15, 0x02, 0x0b, 0xe6, 0x40, 0x3e, 0x23,
 | 
					 | 
				
			||||||
  0x06, 0x06, 0x00, 0x82, 0x60, 0x10, 0xd9, 0x82, 0x1f, 0x04, 0x16, 0xd8,
 | 
					 | 
				
			||||||
  0x81, 0x7c, 0x46, 0x0c, 0x0c, 0x00, 0x04, 0xc1, 0x20, 0xc2, 0x85, 0x50,
 | 
					 | 
				
			||||||
  0x08, 0x66, 0x09, 0x88, 0x81, 0x8a, 0xc1, 0x11, 0x84, 0x61, 0x38, 0x42,
 | 
					 | 
				
			||||||
  0xaa, 0x03, 0xe5, 0x9b, 0x65, 0x30, 0x8a, 0xc0, 0xa6, 0x3b, 0x90, 0xcf,
 | 
					 | 
				
			||||||
  0x2c, 0xc1, 0x61, 0x54, 0x1e, 0xc0, 0x67, 0xc4, 0xc0, 0x00, 0x40, 0x10,
 | 
					 | 
				
			||||||
  0x0c, 0xa2, 0x5e, 0xc0, 0x85, 0xc0, 0x02, 0x3e, 0x90, 0xcf, 0x88, 0x81,
 | 
					 | 
				
			||||||
  0x01, 0x80, 0x20, 0x18, 0x44, 0xbf, 0x70, 0x0a, 0x81, 0x05, 0x7f, 0x20,
 | 
					 | 
				
			||||||
  0x9f, 0x11, 0x03, 0x03, 0x00, 0x41, 0x30, 0x88, 0xc2, 0x41, 0x15, 0x82,
 | 
					 | 
				
			||||||
  0x59, 0x82, 0x63, 0xa0, 0x62, 0x70, 0x0a, 0xc1, 0x18, 0x8e, 0xb0, 0xfc,
 | 
					 | 
				
			||||||
  0x40, 0xf9, 0x66, 0x19, 0x12, 0x24, 0xb0, 0x0b, 0x14, 0xe4, 0x33, 0x4b,
 | 
					 | 
				
			||||||
  0xa0, 0x18, 0x26, 0x0a, 0xf0, 0x19, 0x31, 0x30, 0x00, 0x10, 0x04, 0x83,
 | 
					 | 
				
			||||||
  0xc8, 0x1c, 0xc2, 0x21, 0xb0, 0xa0, 0x14, 0xe4, 0x33, 0x62, 0x60, 0x00,
 | 
					 | 
				
			||||||
  0x20, 0x08, 0x06, 0x11, 0x3a, 0xc0, 0x42, 0x60, 0x01, 0x2a, 0xc8, 0x67,
 | 
					 | 
				
			||||||
  0xc4, 0xc0, 0x00, 0x40, 0x10, 0x0c, 0x22, 0x75, 0x98, 0x85, 0x60, 0x96,
 | 
					 | 
				
			||||||
  0x40, 0x19, 0xe8, 0x18, 0x60, 0x01, 0x20, 0x83, 0x84, 0x0c, 0x90, 0x81,
 | 
					 | 
				
			||||||
  0x8e, 0x01, 0x15, 0x00, 0x2a, 0xa1, 0x90, 0x81, 0x8e, 0x01, 0x14, 0x00,
 | 
					 | 
				
			||||||
  0x23, 0x91, 0x90, 0xd1, 0x04, 0x30, 0x08, 0x8c, 0x18, 0x05, 0xf9, 0x58,
 | 
					 | 
				
			||||||
  0x20, 0xc8, 0xc7, 0x0a, 0x52, 0x90, 0x8f, 0x05, 0x84, 0x7c, 0xcc, 0x28,
 | 
					 | 
				
			||||||
  0x05, 0xf9, 0x58, 0x60, 0xc8, 0x67, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c,
 | 
					 | 
				
			||||||
  0x10, 0x7c, 0xd0, 0x85, 0x78, 0x88, 0x87, 0x73, 0x28, 0x46, 0x0c, 0x12,
 | 
					 | 
				
			||||||
  0x00, 0x04, 0xc1, 0x00, 0xc1, 0x07, 0x5d, 0x88, 0x87, 0x78, 0xf8, 0x85,
 | 
					 | 
				
			||||||
  0x61, 0xc4, 0x20, 0x01, 0x40, 0x10, 0x0c, 0x10, 0x7c, 0xd0, 0x85, 0x78,
 | 
					 | 
				
			||||||
  0x88, 0x07, 0x73, 0x08, 0x46, 0x0c, 0x12, 0x00, 0x04, 0xc1, 0x00, 0xc1,
 | 
					 | 
				
			||||||
  0x07, 0x5d, 0x88, 0x87, 0x78, 0x48, 0x07, 0x53, 0x40, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,34 +0,0 @@
 | 
				
			|||||||
Texture2D theTextureY : register(t0);
 | 
					 | 
				
			||||||
Texture2D theTextureU : register(t1);
 | 
					 | 
				
			||||||
Texture2D theTextureV : register(t2);
 | 
					 | 
				
			||||||
SamplerState theSampler : register(s0);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "D3D12_PixelShader_Common.incl"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define YUVRS \
 | 
					 | 
				
			||||||
    "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | 
					 | 
				
			||||||
    "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
					 | 
				
			||||||
    "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
					 | 
				
			||||||
    "            DENY_HULL_SHADER_ROOT_ACCESS )," \
 | 
					 | 
				
			||||||
    "RootConstants(num32BitConstants=20, b1),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( SRV(t2), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[RootSignature(YUVRS)]
 | 
					 | 
				
			||||||
float4 main(PixelShaderInput input) : SV_TARGET
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    float3 yuv;
 | 
					 | 
				
			||||||
    yuv.x = theTextureY.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
    yuv.y = theTextureU.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
    yuv.z = theTextureV.Sample(theSampler, input.tex).r;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 rgb;
 | 
					 | 
				
			||||||
    yuv += Yoffset.xyz;
 | 
					 | 
				
			||||||
    rgb.r = dot(yuv, Rcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.g = dot(yuv, Gcoeff.xyz);
 | 
					 | 
				
			||||||
    rgb.b = dot(yuv, Bcoeff.xyz);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return GetOutputColorFromSRGB(rgb) * input.color;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
Disassembly failed
 | 
					Disassembly failed
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const unsigned char g_YUVRS[] = {
 | 
					const unsigned char g_AdvancedRS[] = {
 | 
				
			||||||
  0x44, 0x58, 0x42, 0x43, 0xc2, 0xcd, 0x2f, 0xaf, 0x3b, 0x72, 0x07, 0x2a,
 | 
					  0x44, 0x58, 0x42, 0x43, 0xc2, 0xcd, 0x2f, 0xaf, 0x3b, 0x72, 0x07, 0x2a,
 | 
				
			||||||
  0xa9, 0x73, 0x1b, 0xab, 0x8e, 0x46, 0xf7, 0x46, 0x01, 0x00, 0x00, 0x00,
 | 
					  0xa9, 0x73, 0x1b, 0xab, 0x8e, 0x46, 0xf7, 0x46, 0x01, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x24, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
 | 
					  0x24, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
 | 
				
			||||||
@@ -1,27 +0,0 @@
 | 
				
			|||||||
#if 0
 | 
					 | 
				
			||||||
Disassembly failed
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const unsigned char g_NVRS[] = {
 | 
					 | 
				
			||||||
  0x44, 0x58, 0x42, 0x43, 0xfd, 0x56, 0xee, 0x54, 0x9c, 0x1e, 0xc4, 0x3b,
 | 
					 | 
				
			||||||
  0xc6, 0x37, 0x26, 0x3f, 0x01, 0x62, 0x06, 0x1c, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0xf8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x52, 0x54, 0x53, 0x30, 0xcc, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x05, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0xcc, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x05, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x05, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x05, 0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0x01, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -38,7 +38,7 @@ struct VertexShaderOutput
 | 
				
			|||||||
    "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					    "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
				
			||||||
    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
					    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define YUVRS \
 | 
					#define AdvancedRS \
 | 
				
			||||||
    "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | 
					    "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | 
				
			||||||
    "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
					    "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
				
			||||||
    "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
					    "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
				
			||||||
@@ -50,17 +50,6 @@ struct VertexShaderOutput
 | 
				
			|||||||
    "DescriptorTable ( SRV(t2), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					    "DescriptorTable ( SRV(t2), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
				
			||||||
    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
					    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define NVRS \
 | 
					 | 
				
			||||||
    "RootFlags ( ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT |" \
 | 
					 | 
				
			||||||
    "            DENY_DOMAIN_SHADER_ROOT_ACCESS |" \
 | 
					 | 
				
			||||||
    "            DENY_GEOMETRY_SHADER_ROOT_ACCESS |" \
 | 
					 | 
				
			||||||
    "            DENY_HULL_SHADER_ROOT_ACCESS )," \
 | 
					 | 
				
			||||||
    "RootConstants(num32BitConstants=32, b0),"\
 | 
					 | 
				
			||||||
    "RootConstants(num32BitConstants=20, b1),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( SRV(t0), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( SRV(t1), visibility = SHADER_VISIBILITY_PIXEL ),"\
 | 
					 | 
				
			||||||
    "DescriptorTable ( Sampler(s0), visibility = SHADER_VISIBILITY_PIXEL )"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[RootSignature(ColorRS)]
 | 
					[RootSignature(ColorRS)]
 | 
				
			||||||
VertexShaderOutput mainColor(VertexShaderInput input)
 | 
					VertexShaderOutput mainColor(VertexShaderInput input)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -85,14 +74,8 @@ VertexShaderOutput mainTexture(VertexShaderInput input)
 | 
				
			|||||||
    return mainColor(input);
 | 
					    return mainColor(input);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[RootSignature(YUVRS)]
 | 
					[RootSignature(AdvancedRS)]
 | 
				
			||||||
VertexShaderOutput mainYUV(VertexShaderInput input)
 | 
					VertexShaderOutput mainAdvanced(VertexShaderInput input)
 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    return mainColor(input);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
[RootSignature(NVRS)]
 | 
					 | 
				
			||||||
VertexShaderOutput mainNV(VertexShaderInput input)
 | 
					 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return mainColor(input);
 | 
					    return mainColor(input);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
; TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
					; TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
				
			||||||
; COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
					; COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; shader hash: a80c812db8f3c804d5484e45d632860b
 | 
					; shader hash: c170d994513745a8e268b8d54da903ed
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
; Pipeline Runtime Information: 
 | 
					; Pipeline Runtime Information: 
 | 
				
			||||||
;
 | 
					;
 | 
				
			||||||
@@ -87,7 +87,7 @@ target triple = "dxil-ms-dx"
 | 
				
			|||||||
%dx.types.CBufRet.f32 = type { float, float, float, float }
 | 
					%dx.types.CBufRet.f32 = type { float, float, float, float }
 | 
				
			||||||
%hostlayout.VertexShaderConstants = type { [4 x <4 x float>], [4 x <4 x float>] }
 | 
					%hostlayout.VertexShaderConstants = type { [4 x <4 x float>], [4 x <4 x float>] }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define void @mainYUV() {
 | 
					define void @mainAdvanced() {
 | 
				
			||||||
  %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					  %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
				
			||||||
  %2 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					  %2 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
				
			||||||
  %3 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					  %3 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
				
			||||||
@@ -218,7 +218,7 @@ attributes #2 = { nounwind readonly }
 | 
				
			|||||||
!5 = !{!6}
 | 
					!5 = !{!6}
 | 
				
			||||||
!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 128, null}
 | 
					!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 128, null}
 | 
				
			||||||
!7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
 | 
					!7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
 | 
				
			||||||
!8 = !{void ()* @mainYUV, !"mainYUV", !9, !4, null}
 | 
					!8 = !{void ()* @mainAdvanced, !"mainAdvanced", !9, !4, null}
 | 
				
			||||||
!9 = !{!10, !18, null}
 | 
					!9 = !{!10, !18, null}
 | 
				
			||||||
!10 = !{!11, !14, !16}
 | 
					!10 = !{!11, !14, !16}
 | 
				
			||||||
!11 = !{i32 0, !"POSITION", i8 9, i8 0, !12, i8 0, i32 1, i8 3, i32 0, i8 0, !13}
 | 
					!11 = !{i32 0, !"POSITION", i8 9, i8 0, !12, i8 0, i32 1, i8 3, i32 0, i8 0, !13}
 | 
				
			||||||
@@ -235,13 +235,13 @@ attributes #2 = { nounwind readonly }
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const unsigned char g_mainYUV[] = {
 | 
					const unsigned char g_mainAdvanced[] = {
 | 
				
			||||||
  0x44, 0x58, 0x42, 0x43, 0xbb, 0xef, 0x2b, 0x63, 0x10, 0x5a, 0xb4, 0x09,
 | 
					  0x44, 0x58, 0x42, 0x43, 0x2a, 0x90, 0x76, 0x57, 0x08, 0xab, 0xff, 0xa1,
 | 
				
			||||||
  0xc0, 0x20, 0xa8, 0xff, 0x4d, 0xb1, 0xab, 0xe7, 0x01, 0x00, 0x00, 0x00,
 | 
					  0x21, 0xd0, 0xb4, 0x0c, 0x31, 0xf8, 0x05, 0x5d, 0x01, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x4f, 0x13, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
 | 
					  0x63, 0x13, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00,
 | 
					  0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00,
 | 
				
			||||||
  0x87, 0x02, 0x00, 0x00, 0x87, 0x03, 0x00, 0x00, 0x33, 0x0a, 0x00, 0x00,
 | 
					  0x87, 0x02, 0x00, 0x00, 0x87, 0x03, 0x00, 0x00, 0x3f, 0x0a, 0x00, 0x00,
 | 
				
			||||||
  0x4f, 0x0a, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
 | 
					  0x5b, 0x0a, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
 | 
				
			||||||
  0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
					  0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
@@ -311,10 +311,10 @@ const unsigned char g_mainYUV[] = {
 | 
				
			|||||||
  0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe0,
 | 
					  0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0xe0,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
 | 
				
			||||||
  0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0xa4, 0x06, 0x00, 0x00, 0x60,
 | 
					  0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0xb0, 0x06, 0x00, 0x00, 0x60,
 | 
				
			||||||
  0x00, 0x01, 0x00, 0xa9, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00,
 | 
					  0x00, 0x01, 0x00, 0xac, 0x01, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00,
 | 
				
			||||||
  0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x8c, 0x06, 0x00, 0x00, 0x42,
 | 
					  0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x98, 0x06, 0x00, 0x00, 0x42,
 | 
				
			||||||
  0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x0b,
 | 
					  0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0xa3, 0x01, 0x00, 0x00, 0x0b,
 | 
				
			||||||
  0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07,
 | 
					  0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07,
 | 
				
			||||||
  0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92,
 | 
					  0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92,
 | 
				
			||||||
  0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80,
 | 
					  0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80,
 | 
				
			||||||
@@ -366,7 +366,7 @@ const unsigned char g_mainYUV[] = {
 | 
				
			|||||||
  0xca, 0xa0, 0x08, 0x0a, 0x81, 0x62, 0x0d, 0xd0, 0x9d, 0x01, 0x20, 0x3c,
 | 
					  0xca, 0xa0, 0x08, 0x0a, 0x81, 0x62, 0x0d, 0xd0, 0x9d, 0x01, 0x20, 0x3c,
 | 
				
			||||||
  0x03, 0x40, 0x79, 0x2c, 0x87, 0x61, 0x9e, 0xe7, 0x01, 0x20, 0x30, 0x00,
 | 
					  0x03, 0x40, 0x79, 0x2c, 0x87, 0x61, 0x9e, 0xe7, 0x01, 0x20, 0x30, 0x00,
 | 
				
			||||||
  0x00, 0x10, 0x01, 0x21, 0x10, 0x0c, 0x40, 0x50, 0x00, 0x00, 0x00, 0x79,
 | 
					  0x00, 0x10, 0x01, 0x21, 0x10, 0x0c, 0x40, 0x50, 0x00, 0x00, 0x00, 0x79,
 | 
				
			||||||
  0x18, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46,
 | 
					  0x18, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x1a, 0x03, 0x4c, 0x90, 0x46,
 | 
				
			||||||
  0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b,
 | 
					  0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73, 0x3b, 0x03, 0xb1, 0x2b,
 | 
				
			||||||
  0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1,
 | 
					  0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71, 0xb9, 0x01, 0x41, 0xa1,
 | 
				
			||||||
  0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa,
 | 
					  0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a, 0x0a, 0x9a, 0x2a, 0xfa,
 | 
				
			||||||
@@ -385,81 +385,82 @@ const unsigned char g_mainYUV[] = {
 | 
				
			|||||||
  0x81, 0x78, 0x36, 0x28, 0x88, 0x26, 0x51, 0xd5, 0x66, 0x5d, 0x17, 0xb6,
 | 
					  0x81, 0x78, 0x36, 0x28, 0x88, 0x26, 0x51, 0xd5, 0x66, 0x5d, 0x17, 0xb6,
 | 
				
			||||||
  0x61, 0x60, 0x32, 0x6e, 0xc3, 0x40, 0x40, 0xdd, 0x04, 0x41, 0x00, 0x36,
 | 
					  0x61, 0x60, 0x32, 0x6e, 0xc3, 0x40, 0x40, 0xdd, 0x04, 0x41, 0x00, 0x36,
 | 
				
			||||||
  0x00, 0x1b, 0x06, 0x02, 0x0c, 0xc0, 0x60, 0x43, 0x10, 0x06, 0x1b, 0x86,
 | 
					  0x00, 0x1b, 0x06, 0x02, 0x0c, 0xc0, 0x60, 0x43, 0x10, 0x06, 0x1b, 0x86,
 | 
				
			||||||
  0xe1, 0x13, 0x83, 0x09, 0x42, 0xc6, 0x6d, 0x08, 0xc8, 0x80, 0x47, 0x5b,
 | 
					  0xe1, 0x13, 0x83, 0x09, 0x42, 0xc6, 0x6d, 0x08, 0xc8, 0x80, 0x4c, 0x5b,
 | 
				
			||||||
  0x58, 0x9a, 0x5b, 0x56, 0x95, 0x15, 0x11, 0xa8, 0xa7, 0xa9, 0x24, 0xaa,
 | 
					  0x58, 0x9a, 0x5b, 0x10, 0x99, 0x5d, 0x98, 0xdb, 0x58, 0x19, 0x19, 0x11,
 | 
				
			||||||
  0xa4, 0x27, 0xa7, 0x09, 0x42, 0x41, 0x4d, 0x10, 0x8a, 0x6a, 0x43, 0x40,
 | 
					  0xa8, 0xa7, 0xa9, 0x24, 0xaa, 0xa4, 0x27, 0xa7, 0x09, 0x42, 0x41, 0x4d,
 | 
				
			||||||
  0x4c, 0x10, 0x0a, 0x6b, 0x83, 0x50, 0x59, 0x1b, 0x16, 0xe2, 0x0c, 0xd0,
 | 
					  0x10, 0x8a, 0x6a, 0x43, 0x40, 0x4c, 0x10, 0x0a, 0x6b, 0x83, 0x50, 0x59,
 | 
				
			||||||
  0x20, 0x0d, 0xd4, 0x20, 0x0d, 0x86, 0x35, 0x20, 0xd2, 0x80, 0x0d, 0x88,
 | 
					  0x1b, 0x16, 0xe2, 0x0c, 0xd0, 0x20, 0x0d, 0xd4, 0x20, 0x0d, 0x86, 0x35,
 | 
				
			||||||
  0x50, 0x15, 0x61, 0x0d, 0x3d, 0x3d, 0x49, 0x11, 0x4d, 0x10, 0x8a, 0x6b,
 | 
					  0x20, 0xd2, 0x80, 0x0d, 0x88, 0x50, 0x15, 0x61, 0x0d, 0x3d, 0x3d, 0x49,
 | 
				
			||||||
  0x83, 0x50, 0x55, 0x1b, 0x96, 0xc1, 0x0d, 0xd0, 0x20, 0x0d, 0xd4, 0x20,
 | 
					  0x11, 0x4d, 0x10, 0x8a, 0x6b, 0x83, 0x50, 0x55, 0x1b, 0x96, 0xc1, 0x0d,
 | 
				
			||||||
  0x0d, 0x86, 0x37, 0x18, 0xd2, 0x00, 0x0e, 0x58, 0x0c, 0x3d, 0x31, 0x3d,
 | 
					  0xd0, 0x20, 0x0d, 0xd4, 0x20, 0x0d, 0x86, 0x37, 0x18, 0xd2, 0x00, 0x0e,
 | 
				
			||||||
  0x49, 0x4d, 0x10, 0x0a, 0x6c, 0x82, 0x40, 0x40, 0x1b, 0x84, 0x8a, 0x0e,
 | 
					  0x58, 0x0c, 0x3d, 0x31, 0x3d, 0x49, 0x4d, 0x10, 0x0a, 0x6c, 0x82, 0x40,
 | 
				
			||||||
  0x36, 0x2c, 0x92, 0x1c, 0xa0, 0x41, 0x1a, 0xa8, 0x41, 0x1a, 0x0c, 0x73,
 | 
					  0x40, 0x1b, 0x84, 0x8a, 0x0e, 0x36, 0x2c, 0x92, 0x1c, 0xa0, 0x41, 0x1a,
 | 
				
			||||||
  0x20, 0xa5, 0x41, 0x1d, 0x6c, 0x18, 0xda, 0x20, 0x0e, 0xec, 0x80, 0xcb,
 | 
					  0xa8, 0x41, 0x1a, 0x0c, 0x73, 0x20, 0xa5, 0x41, 0x1d, 0x6c, 0x18, 0xda,
 | 
				
			||||||
  0x94, 0xd5, 0x17, 0xd4, 0xdb, 0x5c, 0x1a, 0x5d, 0xda, 0x9b, 0xdb, 0x86,
 | 
					  0x20, 0x0e, 0xec, 0x80, 0xcb, 0x94, 0xd5, 0x17, 0xd4, 0xdb, 0x5c, 0x1a,
 | 
				
			||||||
  0x85, 0xc0, 0x03, 0x34, 0x58, 0x03, 0x35, 0x98, 0x83, 0x61, 0x0e, 0x88,
 | 
					  0x5d, 0xda, 0x9b, 0xdb, 0x86, 0x85, 0xc0, 0x03, 0x34, 0x58, 0x03, 0x35,
 | 
				
			||||||
  0x34, 0xa8, 0x83, 0x0d, 0xcb, 0xe0, 0x06, 0x68, 0x90, 0x06, 0x6a, 0xf0,
 | 
					  0x98, 0x83, 0x61, 0x0e, 0x88, 0x34, 0xa8, 0x83, 0x0d, 0xcb, 0xe0, 0x06,
 | 
				
			||||||
  0x06, 0xc3, 0x1b, 0x0c, 0x69, 0x00, 0x07, 0x1b, 0x16, 0x49, 0x0e, 0xd0,
 | 
					  0x68, 0x90, 0x06, 0x6a, 0xf0, 0x06, 0xc3, 0x1b, 0x0c, 0x69, 0x00, 0x07,
 | 
				
			||||||
  0x20, 0x0d, 0xd4, 0xe0, 0x0d, 0x86, 0x39, 0x90, 0xd2, 0xa0, 0x0e, 0x36,
 | 
					  0x1b, 0x16, 0x49, 0x0e, 0xd0, 0x20, 0x0d, 0xd4, 0xe0, 0x0d, 0x86, 0x39,
 | 
				
			||||||
  0x0c, 0x79, 0xa0, 0x07, 0x7b, 0xb0, 0x61, 0xb8, 0x03, 0x3e, 0x00, 0x36,
 | 
					  0x90, 0xd2, 0xa0, 0x0e, 0x36, 0x0c, 0x79, 0xa0, 0x07, 0x7b, 0xb0, 0x61,
 | 
				
			||||||
  0x14, 0x9f, 0x19, 0xf4, 0xc1, 0x03, 0xd0, 0x30, 0x63, 0x7b, 0x0b, 0xa3,
 | 
					  0xb8, 0x03, 0x3e, 0x00, 0x36, 0x14, 0x9f, 0x19, 0xf4, 0xc1, 0x03, 0xd0,
 | 
				
			||||||
  0x9b, 0x9b, 0x20, 0x10, 0x11, 0x8b, 0x34, 0xb7, 0x39, 0xba, 0xb9, 0x09,
 | 
					  0x30, 0x63, 0x7b, 0x0b, 0xa3, 0x9b, 0x9b, 0x20, 0x10, 0x11, 0x8b, 0x34,
 | 
				
			||||||
  0x02, 0x21, 0xd1, 0x98, 0x4b, 0x3b, 0xfb, 0x62, 0x23, 0xa3, 0x31, 0x97,
 | 
					  0xb7, 0x39, 0xba, 0xb9, 0x09, 0x02, 0x21, 0xd1, 0x98, 0x4b, 0x3b, 0xfb,
 | 
				
			||||||
  0x76, 0xf6, 0x35, 0x47, 0x37, 0x41, 0x20, 0xa6, 0x0d, 0xc8, 0x1f, 0x80,
 | 
					  0x62, 0x23, 0xa3, 0x31, 0x97, 0x76, 0xf6, 0x35, 0x47, 0x37, 0x41, 0x20,
 | 
				
			||||||
  0x42, 0x28, 0x88, 0xc2, 0x28, 0x5c, 0xa4, 0x50, 0x0a, 0x55, 0xd8, 0xd8,
 | 
					  0xa6, 0x0d, 0xc8, 0x1f, 0x80, 0x42, 0x28, 0x88, 0xc2, 0x28, 0x5c, 0xa4,
 | 
				
			||||||
  0xec, 0xda, 0x5c, 0xd2, 0xc8, 0xca, 0xdc, 0xe8, 0xa6, 0x04, 0x41, 0x15,
 | 
					  0x50, 0x0a, 0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2, 0xc8, 0xca, 0xdc,
 | 
				
			||||||
  0x32, 0x3c, 0x17, 0xbb, 0x32, 0xb9, 0xb9, 0xb4, 0x37, 0xb7, 0x29, 0x01,
 | 
					  0xe8, 0xa6, 0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb, 0x32, 0xb9, 0xb9,
 | 
				
			||||||
  0xd1, 0x84, 0x0c, 0xcf, 0xc5, 0x2e, 0x8c, 0xcd, 0xae, 0x4c, 0x6e, 0x4a,
 | 
					  0xb4, 0x37, 0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf, 0xc5, 0x2e, 0x8c,
 | 
				
			||||||
  0x50, 0xd4, 0x21, 0xc3, 0x73, 0x99, 0x43, 0x0b, 0x23, 0x2b, 0x93, 0x6b,
 | 
					  0xcd, 0xae, 0x4c, 0x6e, 0x4a, 0x50, 0xd4, 0x21, 0xc3, 0x73, 0x99, 0x43,
 | 
				
			||||||
  0x7a, 0x23, 0x2b, 0x63, 0x9b, 0x12, 0x20, 0x65, 0xc8, 0xf0, 0x5c, 0xe4,
 | 
					  0x0b, 0x23, 0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63, 0x9b, 0x12, 0x20,
 | 
				
			||||||
  0xca, 0xe6, 0xde, 0xea, 0xe4, 0xc6, 0xca, 0xe6, 0xa6, 0x04, 0x4e, 0x25,
 | 
					  0x65, 0xc8, 0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea, 0xe4, 0xc6, 0xca,
 | 
				
			||||||
  0x32, 0x3c, 0x17, 0xba, 0x3c, 0xb8, 0xb2, 0x20, 0x37, 0xb7, 0x37, 0xba,
 | 
					  0xe6, 0xa6, 0x04, 0x4e, 0x25, 0x32, 0x3c, 0x17, 0xba, 0x3c, 0xb8, 0xb2,
 | 
				
			||||||
  0x30, 0xba, 0xb4, 0x37, 0xb7, 0xb9, 0x29, 0x42, 0x27, 0x06, 0x75, 0xc8,
 | 
					  0x20, 0x37, 0xb7, 0x37, 0xba, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0xb9, 0x29,
 | 
				
			||||||
  0xf0, 0x5c, 0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6, 0xe8, 0xc2, 0xe8,
 | 
					  0x42, 0x27, 0x06, 0x75, 0xc8, 0xf0, 0x5c, 0xec, 0xd2, 0xca, 0xee, 0x92,
 | 
				
			||||||
  0xca, 0xa6, 0x04, 0x64, 0x50, 0x87, 0x0c, 0xcf, 0xa5, 0xcc, 0x8d, 0x4e,
 | 
					  0xc8, 0xa6, 0xe8, 0xc2, 0xe8, 0xca, 0xa6, 0x04, 0x64, 0x50, 0x87, 0x0c,
 | 
				
			||||||
  0x2e, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a, 0xd0, 0x07, 0x5d,
 | 
					  0xcf, 0xa5, 0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e,
 | 
				
			||||||
  0xc8, 0xf0, 0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0xca, 0xe4, 0xe6, 0xa6,
 | 
					  0x6e, 0x4a, 0xd0, 0x07, 0x5d, 0xc8, 0xf0, 0x5c, 0xc6, 0xde, 0xea, 0xdc,
 | 
				
			||||||
  0x04, 0xa5, 0x00, 0x79, 0x18, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x33,
 | 
					  0xe8, 0xca, 0xe4, 0xe6, 0xa6, 0x04, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x79,
 | 
				
			||||||
  0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43,
 | 
					  0x18, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4,
 | 
				
			||||||
  0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98,
 | 
					  0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c,
 | 
				
			||||||
  0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33,
 | 
					  0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00,
 | 
				
			||||||
  0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05,
 | 
					  0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2,
 | 
				
			||||||
  0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43,
 | 
					  0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38,
 | 
				
			||||||
  0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08,
 | 
					  0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d,
 | 
				
			||||||
  0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78,
 | 
					  0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87,
 | 
				
			||||||
  0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1,
 | 
					  0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87,
 | 
				
			||||||
  0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33,
 | 
					  0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30,
 | 
				
			||||||
  0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e,
 | 
					  0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde,
 | 
				
			||||||
  0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03,
 | 
					  0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b,
 | 
				
			||||||
  0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60,
 | 
					  0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c,
 | 
				
			||||||
  0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80,
 | 
					  0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07,
 | 
				
			||||||
  0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8,
 | 
					  0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87,
 | 
				
			||||||
  0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18,
 | 
					  0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87,
 | 
				
			||||||
  0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee,
 | 
					  0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87,
 | 
				
			||||||
  0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c,
 | 
					  0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0,
 | 
				
			||||||
  0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c,
 | 
					  0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc,
 | 
				
			||||||
  0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43,
 | 
					  0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4,
 | 
				
			||||||
  0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3,
 | 
					  0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39,
 | 
				
			||||||
  0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83,
 | 
					  0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38,
 | 
				
			||||||
  0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21,
 | 
					  0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b,
 | 
				
			||||||
  0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08,
 | 
					  0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70, 0x03,
 | 
				
			||||||
  0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x00,
 | 
					  0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60, 0x87,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x36,
 | 
					  0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x71,
 | 
				
			||||||
  0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5,
 | 
					  0x20, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97, 0xef,
 | 
				
			||||||
  0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2,
 | 
					  0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61,
 | 
				
			||||||
  0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3,
 | 
					  0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3,
 | 
				
			||||||
  0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62,
 | 
					  0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34,
 | 
				
			||||||
  0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f,
 | 
					  0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f,
 | 
				
			||||||
  0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6,
 | 
					  0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44,
 | 
				
			||||||
  0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00, 0x11,
 | 
					  0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3, 0xe5,
 | 
				
			||||||
  0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x07, 0x03, 0x20, 0x8d, 0xec, 0xbe, 0x00,
 | 
					  0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7, 0x6d,
 | 
				
			||||||
 | 
					  0x00, 0x0c, 0x03, 0x20, 0x8d, 0x36, 0x54, 0x40, 0x23, 0x10, 0x03, 0x00,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x0c, 0x81, 0x2d, 0xb8,
 | 
					  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0x70, 0xd9, 0x94, 0x51,
 | 
				
			||||||
  0xf3, 0xc8, 0x04, 0xd5, 0x48, 0x4e, 0x45, 0xd6, 0x32, 0x86, 0x0b, 0x44,
 | 
					  0x37, 0x45, 0xa8, 0xe2, 0x68, 0xb8, 0xd5, 0x4d, 0xa9, 0x03, 0xed, 0x44,
 | 
				
			||||||
  0x58, 0x49, 0x4c, 0xf8, 0x08, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x3e,
 | 
					  0x58, 0x49, 0x4c, 0x00, 0x09, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x40,
 | 
				
			||||||
  0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10,
 | 
					  0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0xe0, 0x08, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21,
 | 
					  0x00, 0x00, 0x00, 0xe8, 0x08, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21,
 | 
				
			||||||
  0x0c, 0x00, 0x00, 0x35, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02,
 | 
					  0x0c, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41,
 | 
					  0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41,
 | 
				
			||||||
  0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25,
 | 
					  0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25,
 | 
				
			||||||
  0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42,
 | 
					  0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42,
 | 
				
			||||||
@@ -509,7 +510,7 @@ const unsigned char g_mainYUV[] = {
 | 
				
			|||||||
  0xe5, 0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0, 0x08,
 | 
					  0xe5, 0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0, 0x08,
 | 
				
			||||||
  0x0a, 0x81, 0xf0, 0x0c, 0x00, 0xe5, 0xb1, 0x1c, 0x86, 0x79, 0x9e, 0x07,
 | 
					  0x0a, 0x81, 0xf0, 0x0c, 0x00, 0xe5, 0xb1, 0x1c, 0x86, 0x79, 0x9e, 0x07,
 | 
				
			||||||
  0x80, 0xc0, 0x00, 0x00, 0x40, 0x04, 0x84, 0x40, 0x30, 0x00, 0x41, 0x01,
 | 
					  0x80, 0xc0, 0x00, 0x00, 0x40, 0x04, 0x84, 0x40, 0x30, 0x00, 0x41, 0x01,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x1a,
 | 
					  0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x1a,
 | 
				
			||||||
  0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73,
 | 
					  0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73,
 | 
				
			||||||
  0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71,
 | 
					  0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71,
 | 
				
			||||||
  0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a,
 | 
					  0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a,
 | 
				
			||||||
@@ -519,133 +520,134 @@ const unsigned char g_mainYUV[] = {
 | 
				
			|||||||
  0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26, 0x08, 0xd8, 0x44, 0x60, 0x82, 0x40,
 | 
					  0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26, 0x08, 0xd8, 0x44, 0x60, 0x82, 0x40,
 | 
				
			||||||
  0x24, 0x1b, 0x10, 0x42, 0x59, 0x08, 0x62, 0x60, 0x80, 0x0d, 0x41, 0xb3,
 | 
					  0x24, 0x1b, 0x10, 0x42, 0x59, 0x08, 0x62, 0x60, 0x80, 0x0d, 0x41, 0xb3,
 | 
				
			||||||
  0x81, 0x00, 0x00, 0x07, 0x98, 0x20, 0x64, 0xd4, 0x86, 0x00, 0x9a, 0x20,
 | 
					  0x81, 0x00, 0x00, 0x07, 0x98, 0x20, 0x64, 0xd4, 0x86, 0x00, 0x9a, 0x20,
 | 
				
			||||||
  0x08, 0x00, 0x8f, 0xb6, 0xb0, 0x34, 0xb7, 0xac, 0x2a, 0x2b, 0x22, 0x50,
 | 
					  0x08, 0x00, 0x99, 0xb6, 0xb0, 0x34, 0xb7, 0x20, 0x32, 0xbb, 0x30, 0xb7,
 | 
				
			||||||
  0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x13, 0x84, 0xc2, 0x99, 0x20,
 | 
					  0xb1, 0x32, 0x32, 0x22, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e,
 | 
				
			||||||
  0x14, 0xcf, 0x86, 0x80, 0x98, 0x20, 0x14, 0xd0, 0x04, 0x81, 0x50, 0x26,
 | 
					  0x13, 0x84, 0xc2, 0x99, 0x20, 0x14, 0xcf, 0x86, 0x80, 0x98, 0x20, 0x14,
 | 
				
			||||||
  0x08, 0xc4, 0xb2, 0x41, 0xc8, 0xb4, 0x0d, 0x0b, 0x41, 0x55, 0xd6, 0x65,
 | 
					  0xd0, 0x04, 0x81, 0x50, 0x26, 0x08, 0xc4, 0xb2, 0x41, 0xc8, 0xb4, 0x0d,
 | 
				
			||||||
  0x0d, 0x18, 0x61, 0x6d, 0x44, 0xa8, 0x8a, 0xb0, 0x86, 0x9e, 0x9e, 0xa4,
 | 
					  0x0b, 0x41, 0x55, 0xd6, 0x65, 0x0d, 0x18, 0x61, 0x6d, 0x44, 0xa8, 0x8a,
 | 
				
			||||||
  0x88, 0x26, 0x08, 0x45, 0xb4, 0x41, 0xc8, 0xb2, 0x0d, 0xcb, 0xd0, 0x55,
 | 
					  0xb0, 0x86, 0x9e, 0x9e, 0xa4, 0x88, 0x26, 0x08, 0x45, 0xb4, 0x41, 0xc8,
 | 
				
			||||||
  0xd6, 0x65, 0x0d, 0xde, 0x60, 0x7d, 0x13, 0x04, 0x82, 0x61, 0x31, 0xf4,
 | 
					  0xb2, 0x0d, 0xcb, 0xd0, 0x55, 0xd6, 0x65, 0x0d, 0xde, 0x60, 0x7d, 0x13,
 | 
				
			||||||
  0xc4, 0xf4, 0x24, 0x35, 0x41, 0x28, 0xa4, 0x09, 0x02, 0xd1, 0x6c, 0x10,
 | 
					  0x04, 0x82, 0x61, 0x31, 0xf4, 0xc4, 0xf4, 0x24, 0x35, 0x41, 0x28, 0xa4,
 | 
				
			||||||
  0x32, 0x32, 0xd8, 0xb0, 0x84, 0x81, 0x18, 0x54, 0xd6, 0x65, 0x0d, 0x63,
 | 
					  0x09, 0x02, 0xd1, 0x6c, 0x10, 0x32, 0x32, 0xd8, 0xb0, 0x84, 0x81, 0x18,
 | 
				
			||||||
  0x10, 0x06, 0x56, 0x19, 0x6c, 0x18, 0x38, 0x30, 0x30, 0x03, 0x2e, 0x53,
 | 
					  0x54, 0xd6, 0x65, 0x0d, 0x63, 0x10, 0x06, 0x56, 0x19, 0x6c, 0x18, 0x38,
 | 
				
			||||||
  0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1b, 0x16,
 | 
					  0x30, 0x30, 0x03, 0x2e, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74,
 | 
				
			||||||
  0x02, 0x0d, 0x2a, 0xec, 0x1a, 0x83, 0x61, 0x0c, 0x08, 0xab, 0x0c, 0x36,
 | 
					  0x69, 0x6f, 0x6e, 0x1b, 0x16, 0x02, 0x0d, 0x2a, 0xec, 0x1a, 0x83, 0x61,
 | 
				
			||||||
  0x2c, 0x43, 0x57, 0x59, 0x97, 0x37, 0x78, 0x83, 0xf5, 0x6d, 0x58, 0xc2,
 | 
					  0x0c, 0x08, 0xab, 0x0c, 0x36, 0x2c, 0x43, 0x57, 0x59, 0x97, 0x37, 0x78,
 | 
				
			||||||
  0x40, 0x0c, 0x2a, 0xeb, 0xf2, 0x86, 0x31, 0x08, 0x03, 0xab, 0x0c, 0x36,
 | 
					  0x83, 0xf5, 0x6d, 0x58, 0xc2, 0x40, 0x0c, 0x2a, 0xeb, 0xf2, 0x86, 0x31,
 | 
				
			||||||
  0x0c, 0x69, 0xa0, 0x06, 0x6b, 0xb0, 0x61, 0x38, 0x03, 0x36, 0x00, 0x36,
 | 
					  0x08, 0x03, 0xab, 0x0c, 0x36, 0x0c, 0x69, 0xa0, 0x06, 0x6b, 0xb0, 0x61,
 | 
				
			||||||
  0x14, 0xd2, 0xd4, 0x06, 0x0f, 0x50, 0x85, 0x8d, 0xcd, 0xae, 0xcd, 0x25,
 | 
					  0x38, 0x03, 0x36, 0x00, 0x36, 0x14, 0xd2, 0xd4, 0x06, 0x0f, 0x50, 0x85,
 | 
				
			||||||
  0x8d, 0xac, 0xcc, 0x8d, 0x6e, 0x4a, 0x10, 0x54, 0x21, 0xc3, 0x73, 0xb1,
 | 
					  0x8d, 0xcd, 0xae, 0xcd, 0x25, 0x8d, 0xac, 0xcc, 0x8d, 0x6e, 0x4a, 0x10,
 | 
				
			||||||
  0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x9b, 0x12, 0x10, 0x4d, 0xc8, 0xf0,
 | 
					  0x54, 0x21, 0xc3, 0x73, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x9b,
 | 
				
			||||||
  0x5c, 0xec, 0xc2, 0xd8, 0xec, 0xca, 0xe4, 0xa6, 0x04, 0x46, 0x1d, 0x32,
 | 
					  0x12, 0x10, 0x4d, 0xc8, 0xf0, 0x5c, 0xec, 0xc2, 0xd8, 0xec, 0xca, 0xe4,
 | 
				
			||||||
  0x3c, 0x97, 0x39, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa6, 0x37, 0xb2, 0x32,
 | 
					  0xa6, 0x04, 0x46, 0x1d, 0x32, 0x3c, 0x97, 0x39, 0xb4, 0x30, 0xb2, 0x32,
 | 
				
			||||||
  0xb6, 0x29, 0x01, 0x52, 0x86, 0x0c, 0xcf, 0x45, 0xae, 0x6c, 0xee, 0xad,
 | 
					  0xb9, 0xa6, 0x37, 0xb2, 0x32, 0xb6, 0x29, 0x01, 0x52, 0x86, 0x0c, 0xcf,
 | 
				
			||||||
  0x4e, 0x6e, 0xac, 0x6c, 0x6e, 0x4a, 0xe0, 0xd4, 0x21, 0xc3, 0x73, 0xb1,
 | 
					  0x45, 0xae, 0x6c, 0xee, 0xad, 0x4e, 0x6e, 0xac, 0x6c, 0x6e, 0x4a, 0xe0,
 | 
				
			||||||
  0x4b, 0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2, 0x0b, 0xa3, 0x2b, 0x9b, 0x12,
 | 
					  0xd4, 0x21, 0xc3, 0x73, 0xb1, 0x4b, 0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2,
 | 
				
			||||||
  0x40, 0x75, 0xc8, 0xf0, 0x5c, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0xa0, 0xde,
 | 
					  0x0b, 0xa3, 0x2b, 0x9b, 0x12, 0x40, 0x75, 0xc8, 0xf0, 0x5c, 0xca, 0xdc,
 | 
				
			||||||
  0xd2, 0xdc, 0xe8, 0xe6, 0xa6, 0x04, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x79,
 | 
					  0xe8, 0xe4, 0xf2, 0xa0, 0xde, 0xd2, 0xdc, 0xe8, 0xe6, 0xa6, 0x04, 0x6d,
 | 
				
			||||||
  0x18, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4,
 | 
					  0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x33,
 | 
				
			||||||
  0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c,
 | 
					  0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, 0x43,
 | 
				
			||||||
  0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00,
 | 
					  0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79, 0x78, 0x07, 0x73, 0x98,
 | 
				
			||||||
  0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2,
 | 
					  0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e, 0xf4, 0x80, 0x0e, 0x33,
 | 
				
			||||||
  0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38,
 | 
					  0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1, 0x1c, 0x66, 0x30, 0x05,
 | 
				
			||||||
  0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d,
 | 
					  0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc, 0x03, 0x3d, 0xc8, 0x43,
 | 
				
			||||||
  0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87,
 | 
					  0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74, 0x70, 0x07, 0x7b, 0x08,
 | 
				
			||||||
  0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87,
 | 
					  0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a, 0x70, 0x03, 0x76, 0x78,
 | 
				
			||||||
  0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30,
 | 
					  0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e, 0xec, 0x90, 0x0e, 0xe1,
 | 
				
			||||||
  0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde,
 | 
					  0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e, 0xf0, 0x50, 0x0e, 0x33,
 | 
				
			||||||
  0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b,
 | 
					  0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21, 0x1d, 0xc2, 0x61, 0x1e,
 | 
				
			||||||
  0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c,
 | 
					  0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0, 0x43, 0x39, 0xb4, 0x03,
 | 
				
			||||||
  0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07,
 | 
					  0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc, 0xf0, 0x14, 0x76, 0x60,
 | 
				
			||||||
  0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87,
 | 
					  0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72, 0x68, 0x07, 0x37, 0x80,
 | 
				
			||||||
  0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87,
 | 
					  0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76, 0x28, 0x07, 0x76, 0xf8,
 | 
				
			||||||
  0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87,
 | 
					  0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f, 0x08, 0x87, 0x71, 0x18,
 | 
				
			||||||
  0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0,
 | 
					  0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c, 0xee, 0xf0, 0x0e, 0xee,
 | 
				
			||||||
  0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc,
 | 
					  0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03, 0x62, 0xc8, 0xa1, 0x1c,
 | 
				
			||||||
  0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4,
 | 
					  0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xdc, 0x61, 0x1c,
 | 
				
			||||||
  0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39,
 | 
					  0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61, 0x06, 0xd6, 0x90, 0x43,
 | 
				
			||||||
  0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38,
 | 
					  0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8, 0x43, 0x39, 0xb8, 0xc3,
 | 
				
			||||||
  0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b,
 | 
					  0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94, 0xc3, 0x2f, 0xbc, 0x83,
 | 
				
			||||||
  0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70, 0x03,
 | 
					  0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0, 0xc3, 0x8c, 0xc8, 0x21,
 | 
				
			||||||
  0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60, 0x87,
 | 
					  0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73, 0x70, 0x03, 0x7b, 0x08,
 | 
				
			||||||
  0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x71,
 | 
					  0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77, 0xa8, 0x07, 0x7a, 0x00,
 | 
				
			||||||
  0x20, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97, 0xef,
 | 
					  0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x36,
 | 
				
			||||||
  0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61,
 | 
					  0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50, 0x45, 0x41, 0x44, 0xa5,
 | 
				
			||||||
  0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3,
 | 
					  0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17, 0xb7, 0x6d, 0x05, 0xd2,
 | 
				
			||||||
  0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34,
 | 
					  0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c, 0x44, 0x08, 0x34, 0xc3,
 | 
				
			||||||
  0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f,
 | 
					  0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8, 0x8b, 0x03, 0x0c, 0x62,
 | 
				
			||||||
  0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44,
 | 
					  0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54, 0xc3, 0xe5, 0x3b, 0x8f,
 | 
				
			||||||
  0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3, 0xe5,
 | 
					  0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50, 0x93, 0x5f, 0xdc, 0xb6,
 | 
				
			||||||
  0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7, 0x6d,
 | 
					  0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11, 0xd1, 0x84, 0x00, 0x11,
 | 
				
			||||||
  0x00, 0x07, 0x03, 0x20, 0x8d, 0xec, 0xbe, 0x00, 0x00, 0x00, 0x00, 0x61,
 | 
					  0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x0c, 0x03, 0x20, 0x8d, 0x36, 0x54, 0x40,
 | 
				
			||||||
  0x20, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10,
 | 
					  0x23, 0x10, 0x03, 0x00, 0x00, 0x00, 0x00, 0x61, 0x20, 0x00, 0x00, 0xcf,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x44, 0x8a, 0xab, 0x14, 0x0a,
 | 
					  0x00, 0x00, 0x00, 0x13, 0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x05,
 | 
				
			||||||
  0x61, 0x06, 0xa0, 0xec, 0x4a, 0x8e, 0x4a, 0x09, 0x50, 0x1c, 0x01, 0x00,
 | 
					  0x00, 0x00, 0x00, 0x44, 0x8a, 0xab, 0x14, 0x0a, 0x61, 0x06, 0xa0, 0xec,
 | 
				
			||||||
  0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x20, 0x61, 0x03,
 | 
					  0x4a, 0x8e, 0x4a, 0x09, 0x50, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23,
 | 
				
			||||||
  0x63, 0x59, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0xdd, 0x21,
 | 
					  0x06, 0x09, 0x00, 0x82, 0x60, 0x20, 0x61, 0x03, 0x63, 0x59, 0xc1, 0x88,
 | 
				
			||||||
  0x5d, 0x8f, 0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x86, 0x87, 0x4c,
 | 
					  0x41, 0x02, 0x80, 0x20, 0x18, 0x18, 0xdd, 0x21, 0x5d, 0x8f, 0x31, 0x62,
 | 
				
			||||||
  0x18, 0x71, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x81, 0xf1, 0x25, 0x54,
 | 
					  0x90, 0x00, 0x20, 0x08, 0x06, 0x86, 0x87, 0x4c, 0x18, 0x71, 0x8c, 0x18,
 | 
				
			||||||
  0xf6, 0x20, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x80, 0x81, 0x52,
 | 
					  0x24, 0x00, 0x08, 0x82, 0x81, 0xf1, 0x25, 0x54, 0xf6, 0x20, 0x23, 0x06,
 | 
				
			||||||
  0x69, 0x51, 0x32, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x18, 0x2c,
 | 
					  0x09, 0x00, 0x82, 0x60, 0x60, 0x80, 0x81, 0x52, 0x69, 0x51, 0x32, 0x62,
 | 
				
			||||||
  0xdc, 0x36, 0x29, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x88, 0x01,
 | 
					  0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x18, 0x2c, 0xdc, 0x36, 0x29, 0x23,
 | 
				
			||||||
  0xd3, 0x71, 0xc8, 0x32, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xc6, 0x18,
 | 
					  0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x88, 0x01, 0xd3, 0x71, 0xc8, 0x32,
 | 
				
			||||||
  0x34, 0x5d, 0x57, 0x31, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x90,
 | 
					  0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0xc6, 0x18, 0x34, 0x5d, 0x57, 0x31,
 | 
				
			||||||
  0x81, 0xe3, 0x79, 0x4a, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46,
 | 
					  0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x60, 0x90, 0x81, 0xe3, 0x79, 0x4a,
 | 
				
			||||||
  0x19, 0x3c, 0xdf, 0x57, 0x39, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0xd0,
 | 
					  0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x46, 0x19, 0x3c, 0xdf, 0x57,
 | 
				
			||||||
  0x90, 0x81, 0xa3, 0x80, 0xc1, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1,
 | 
					  0x39, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0xd0, 0x90, 0x81, 0xa3, 0x80,
 | 
				
			||||||
  0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20,
 | 
					  0xc1, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c,
 | 
				
			||||||
  0x18, 0x34, 0x69, 0x30, 0x3d, 0x66, 0x30, 0x9a, 0x10, 0x00, 0xa3, 0x09,
 | 
					  0x26, 0x10, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x69, 0x30,
 | 
				
			||||||
 | 
					  0x3d, 0x66, 0x30, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30,
 | 
				
			||||||
 | 
					  0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x8d,
 | 
				
			||||||
 | 
					  0x1b, 0x60, 0x54, 0x19, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c,
 | 
				
			||||||
 | 
					  0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82,
 | 
				
			||||||
 | 
					  0x41, 0x33, 0x07, 0x5d, 0xc6, 0x06, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20,
 | 
				
			||||||
 | 
					  0x04, 0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c, 0x36, 0x5d, 0xf2, 0x19,
 | 
				
			||||||
 | 
					  0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x07, 0x0f, 0xce, 0xe0, 0x7a, 0x82,
 | 
				
			||||||
 | 
					  0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0xf2, 0x00, 0x0d, 0xae, 0x25,
 | 
				
			||||||
 | 
					  0xb0, 0xe0, 0x80, 0x8e, 0x59, 0x9b, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04,
 | 
				
			||||||
 | 
					  0xc1, 0xe0, 0xe1, 0x83, 0x35, 0xd8, 0xa4, 0x60, 0xc4, 0x00, 0x01, 0x40,
 | 
				
			||||||
 | 
					  0x10, 0x0c, 0x9e, 0x3e, 0x60, 0x83, 0xcd, 0x09, 0x2c, 0x50, 0xa0, 0x63,
 | 
				
			||||||
 | 
					  0xd9, 0x27, 0x9f, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x40, 0xe1,
 | 
				
			||||||
 | 
					  0x0d, 0xbe, 0x2a, 0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x27, 0x14,
 | 
				
			||||||
 | 
					  0xe0, 0xe0, 0x8b, 0x02, 0x0b, 0x1a, 0xe8, 0x18, 0x37, 0x06, 0xf2, 0x19,
 | 
				
			||||||
 | 
					  0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x14, 0xe6, 0x60, 0x0c, 0xb0,
 | 
				
			||||||
 | 
					  0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x52, 0xa0, 0x83, 0x31,
 | 
				
			||||||
 | 
					  0xa0, 0x02, 0x0b, 0x20, 0xe8, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41,
 | 
				
			||||||
 | 
					  0x83, 0x0a, 0x72, 0xe0, 0x06, 0x74, 0x30, 0x9a, 0x10, 0x00, 0xa3, 0x09,
 | 
				
			||||||
  0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70, 0x00,
 | 
					  0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70, 0x00,
 | 
				
			||||||
  0x20, 0x08, 0x06, 0x8d, 0x1b, 0x60, 0x54, 0x19, 0x8c, 0x26, 0x04, 0xc0,
 | 
					  0x20, 0x08, 0x06, 0x4d, 0x2b, 0xdc, 0xc1, 0x1c, 0xe8, 0xc1, 0x68, 0x42,
 | 
				
			||||||
  0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0x8c, 0x18,
 | 
					  0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3,
 | 
				
			||||||
  0x1c, 0x00, 0x08, 0x82, 0x41, 0x33, 0x07, 0x5d, 0xc6, 0x06, 0xa3, 0x09,
 | 
					  0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0xb2, 0xc0, 0x07, 0x78, 0xd0,
 | 
				
			||||||
  0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c,
 | 
					  0x0a, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83, 0x30,
 | 
				
			||||||
  0x36, 0x5d, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x07, 0x0f,
 | 
					  0x9a, 0x40, 0x0c, 0x23, 0x06, 0x07, 0x00, 0x82, 0x60, 0xd0, 0xdc, 0x42,
 | 
				
			||||||
  0xce, 0xe0, 0x7a, 0x82, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0xf2,
 | 
					  0x28, 0xf4, 0xc1, 0x2b, 0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c,
 | 
				
			||||||
  0x00, 0x0d, 0xae, 0x25, 0xb0, 0xe0, 0x80, 0x8e, 0x59, 0x9b, 0x7c, 0x46,
 | 
					  0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0xd8, 0x14, 0x06, 0xf2, 0x19, 0x31,
 | 
				
			||||||
  0x0c, 0x10, 0x00, 0x04, 0xc1, 0xe0, 0xe1, 0x83, 0x35, 0xd8, 0xa4, 0x60,
 | 
					  0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x17, 0x56, 0xc1, 0x7b, 0x82, 0x11,
 | 
				
			||||||
  0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x3e, 0x60, 0x83, 0xcd, 0x09,
 | 
					  0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x7a, 0x81, 0x15, 0xb6, 0x25, 0x18,
 | 
				
			||||||
  0x2c, 0x50, 0xa0, 0x63, 0xd9, 0x27, 0x9f, 0x11, 0x03, 0x04, 0x00, 0x41,
 | 
					  0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0xc7, 0x17, 0x5a, 0x01, 0x3b, 0x02,
 | 
				
			||||||
  0x30, 0x78, 0x40, 0xe1, 0x0d, 0xbe, 0x2a, 0x18, 0x31, 0x40, 0x00, 0x10,
 | 
					  0xb3, 0xca, 0x40, 0x3e, 0x23, 0x06, 0x08, 0x00, 0x82, 0x60, 0xf0, 0x80,
 | 
				
			||||||
  0x04, 0x83, 0x27, 0x14, 0xe0, 0xe0, 0x8b, 0x02, 0x0b, 0x1a, 0xe8, 0x18,
 | 
					  0xc3, 0x2b, 0x88, 0x81, 0x14, 0x8c, 0x18, 0x20, 0x00, 0x08, 0x82, 0xc1,
 | 
				
			||||||
  0x37, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x14,
 | 
					  0x13, 0x0e, 0xb0, 0xf0, 0x39, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18,
 | 
				
			||||||
  0xe6, 0x60, 0x0c, 0xb0, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e,
 | 
					  0x3c, 0xe2, 0x10, 0x0b, 0x9c, 0x12, 0x58, 0x96, 0x06, 0xf2, 0x19, 0x31,
 | 
				
			||||||
  0x52, 0xa0, 0x83, 0x31, 0xa0, 0x02, 0x0b, 0x20, 0xe8, 0x8c, 0x18, 0x1c,
 | 
					  0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x1c, 0x66, 0xc1, 0x0c, 0xaa, 0x60,
 | 
				
			||||||
  0x00, 0x08, 0x82, 0x41, 0x83, 0x0a, 0x72, 0xe0, 0x06, 0x74, 0x30, 0x9a,
 | 
					  0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x72, 0xa0, 0x85, 0x31, 0x88,
 | 
				
			||||||
  0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4,
 | 
					  0x82, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0xcc, 0xa1, 0x16, 0xc0,
 | 
				
			||||||
  0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x4d, 0x2b, 0xdc, 0xc1, 0x1c,
 | 
					  0xa0, 0x09, 0x8c, 0x6b, 0x03, 0xf9, 0x8c, 0x18, 0x20, 0x00, 0x08, 0x82,
 | 
				
			||||||
  0xe8, 0xc1, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20,
 | 
					  0xc1, 0x83, 0x0e, 0xb7, 0xa0, 0x06, 0x58, 0x30, 0x62, 0x80, 0x00, 0x20,
 | 
				
			||||||
  0x8c, 0x26, 0x10, 0xc3, 0x88, 0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0xb2,
 | 
					  0x08, 0x06, 0x4f, 0x3a, 0xe0, 0xc2, 0x19, 0x50, 0xc1, 0x88, 0x01, 0x02,
 | 
				
			||||||
  0xc0, 0x07, 0x78, 0xd0, 0x0a, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04,
 | 
					  0x80, 0x20, 0x18, 0x3c, 0xea, 0x90, 0x0b, 0x64, 0x00, 0x05, 0x23, 0x06,
 | 
				
			||||||
  0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c, 0x23, 0x06, 0x07, 0x00, 0x82,
 | 
					  0x09, 0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0xa0, 0x03, 0x3a, 0x80,
 | 
				
			||||||
  0x60, 0xd0, 0xdc, 0x42, 0x28, 0xf4, 0xc1, 0x2b, 0x8c, 0x26, 0x04, 0xc0,
 | 
					  0x43, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4, 0x02,
 | 
				
			||||||
  0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x68, 0x02, 0x31, 0xd8, 0x14,
 | 
					  0x3a, 0xa0, 0x03, 0x2d, 0x24, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80,
 | 
				
			||||||
  0x06, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x17, 0x56,
 | 
					  0xb4, 0x43, 0x2e, 0xa0, 0x03, 0x3a, 0xf8, 0x42, 0x31, 0x62, 0x90, 0x00,
 | 
				
			||||||
  0xc1, 0x7b, 0x82, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x7a, 0x81,
 | 
					  0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4, 0x02, 0x3a, 0xa0, 0xc3, 0x2f, 0x04,
 | 
				
			||||||
  0x15, 0xb6, 0x25, 0x18, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0xc7, 0x17,
 | 
					  0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0xa4, 0x03,
 | 
				
			||||||
  0x5a, 0x01, 0x3b, 0x02, 0xb3, 0xca, 0x40, 0x3e, 0x23, 0x06, 0x08, 0x00,
 | 
					  0x3a, 0x80, 0x43, 0x2b, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0xd2,
 | 
				
			||||||
  0x82, 0x60, 0xf0, 0x80, 0xc3, 0x2b, 0x88, 0x81, 0x14, 0x8c, 0x18, 0x20,
 | 
					  0x0e, 0xb9, 0x90, 0x0e, 0xe8, 0x40, 0x0b, 0xac, 0x30, 0x62, 0x90, 0x00,
 | 
				
			||||||
  0x00, 0x08, 0x82, 0xc1, 0x13, 0x0e, 0xb0, 0xf0, 0x39, 0xc1, 0x88, 0x01,
 | 
					  0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4, 0xc2, 0x38, 0xa0, 0x03, 0x38, 0xc4,
 | 
				
			||||||
  0x02, 0x80, 0x20, 0x18, 0x3c, 0xe2, 0x10, 0x0b, 0x9c, 0x12, 0x58, 0x96,
 | 
					  0xc2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20, 0xed, 0x90, 0x0b, 0xe3,
 | 
				
			||||||
  0x06, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x87, 0x1c, 0x66,
 | 
					  0x80, 0x0e, 0xb4, 0x00, 0x0b, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80,
 | 
				
			||||||
  0xc1, 0x0c, 0xaa, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x72,
 | 
					  0xb4, 0x43, 0x2e, 0x8c, 0x03, 0x3a, 0xf8, 0xc2, 0x2b, 0x8c, 0x18, 0x24,
 | 
				
			||||||
  0xa0, 0x85, 0x31, 0x88, 0x82, 0x11, 0x03, 0x04, 0x00, 0x41, 0x30, 0x78,
 | 
					  0x00, 0x08, 0x82, 0x01, 0xd2, 0x0e, 0xb9, 0x30, 0x0e, 0xe8, 0xf0, 0x0b,
 | 
				
			||||||
  0xcc, 0xa1, 0x16, 0xc0, 0xa0, 0x09, 0x8c, 0x6b, 0x03, 0xf9, 0x8c, 0x18,
 | 
					  0xae, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
				
			||||||
  0x20, 0x00, 0x08, 0x82, 0xc1, 0x83, 0x0e, 0xb7, 0xa0, 0x06, 0x58, 0x30,
 | 
					 | 
				
			||||||
  0x62, 0x80, 0x00, 0x20, 0x08, 0x06, 0x4f, 0x3a, 0xe0, 0xc2, 0x19, 0x50,
 | 
					 | 
				
			||||||
  0xc1, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18, 0x3c, 0xea, 0x90, 0x0b, 0x64,
 | 
					 | 
				
			||||||
  0x00, 0x05, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e,
 | 
					 | 
				
			||||||
  0xa0, 0x03, 0x3a, 0x80, 0x43, 0x33, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06,
 | 
					 | 
				
			||||||
  0x48, 0x3b, 0xe4, 0x02, 0x3a, 0xa0, 0x03, 0x2d, 0x24, 0x23, 0x06, 0x09,
 | 
					 | 
				
			||||||
  0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0xa0, 0x03, 0x3a, 0xf8, 0x42,
 | 
					 | 
				
			||||||
  0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4, 0x02, 0x3a,
 | 
					 | 
				
			||||||
  0xa0, 0xc3, 0x2f, 0x04, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb4,
 | 
					 | 
				
			||||||
  0x43, 0x2e, 0xa4, 0x03, 0x3a, 0x80, 0x43, 0x2b, 0x8c, 0x18, 0x24, 0x00,
 | 
					 | 
				
			||||||
  0x08, 0x82, 0x01, 0xd2, 0x0e, 0xb9, 0x90, 0x0e, 0xe8, 0x40, 0x0b, 0xac,
 | 
					 | 
				
			||||||
  0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4, 0xc2, 0x38,
 | 
					 | 
				
			||||||
  0xa0, 0x03, 0x38, 0xc4, 0xc2, 0x88, 0x41, 0x02, 0x80, 0x20, 0x18, 0x20,
 | 
					 | 
				
			||||||
  0xed, 0x90, 0x0b, 0xe3, 0x80, 0x0e, 0xb4, 0x00, 0x0b, 0x23, 0x06, 0x09,
 | 
					 | 
				
			||||||
  0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0x8c, 0x03, 0x3a, 0xf8, 0xc2,
 | 
					 | 
				
			||||||
  0x2b, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0xd2, 0x0e, 0xb9, 0x30,
 | 
					 | 
				
			||||||
  0x0e, 0xe8, 0xf0, 0x0b, 0xae, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@@ -1,647 +0,0 @@
 | 
				
			|||||||
#if 0
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Input signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
; POSITION                 0   xyz         0     NONE   float   xyz 
 | 
					 | 
				
			||||||
; TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
					 | 
				
			||||||
; COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Output signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index   Mask Register SysValue  Format   Used
 | 
					 | 
				
			||||||
; -------------------- ----- ------ -------- -------- ------- ------
 | 
					 | 
				
			||||||
; SV_Position              0   xyzw        0      POS   float   xyzw
 | 
					 | 
				
			||||||
; TEXCOORD                 0   xy          1     NONE   float   xy  
 | 
					 | 
				
			||||||
; COLOR                    0   xyzw        2     NONE   float   xyzw
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; shader hash: 00fd3548b5a69174601c07641d4ae187
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Pipeline Runtime Information: 
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Vertex Shader
 | 
					 | 
				
			||||||
; OutputPositionPresent=1
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Input signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index             InterpMode DynIdx
 | 
					 | 
				
			||||||
; -------------------- ----- ---------------------- ------
 | 
					 | 
				
			||||||
; POSITION                 0                              
 | 
					 | 
				
			||||||
; TEXCOORD                 0                              
 | 
					 | 
				
			||||||
; COLOR                    0                              
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Output signature:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                 Index             InterpMode DynIdx
 | 
					 | 
				
			||||||
; -------------------- ----- ---------------------- ------
 | 
					 | 
				
			||||||
; SV_Position              0          noperspective       
 | 
					 | 
				
			||||||
; TEXCOORD                 0                 linear       
 | 
					 | 
				
			||||||
; COLOR                    0                 linear       
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Buffer Definitions:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; cbuffer VertexShaderConstants
 | 
					 | 
				
			||||||
; {
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;   struct hostlayout.VertexShaderConstants
 | 
					 | 
				
			||||||
;   {
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;       row_major float4x4 model;                     ; Offset:    0
 | 
					 | 
				
			||||||
;       row_major float4x4 projectionAndView;         ; Offset:   64
 | 
					 | 
				
			||||||
;   
 | 
					 | 
				
			||||||
;   } VertexShaderConstants;                          ; Offset:    0 Size:   128
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; }
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Resource Bindings:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Name                                 Type  Format         Dim      ID      HLSL Bind  Count
 | 
					 | 
				
			||||||
; ------------------------------ ---------- ------- ----------- ------- -------------- ------
 | 
					 | 
				
			||||||
; VertexShaderConstants             cbuffer      NA          NA     CB0            cb0     1
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; ViewId state:
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
; Number of inputs: 12, outputs: 12
 | 
					 | 
				
			||||||
; Outputs dependent on ViewId: {  }
 | 
					 | 
				
			||||||
; Inputs contributing to computation of Outputs:
 | 
					 | 
				
			||||||
;   output 0 depends on inputs: { 0, 1, 2 }
 | 
					 | 
				
			||||||
;   output 1 depends on inputs: { 0, 1, 2 }
 | 
					 | 
				
			||||||
;   output 2 depends on inputs: { 0, 1, 2 }
 | 
					 | 
				
			||||||
;   output 3 depends on inputs: { 0, 1, 2 }
 | 
					 | 
				
			||||||
;   output 4 depends on inputs: { 4 }
 | 
					 | 
				
			||||||
;   output 5 depends on inputs: { 5 }
 | 
					 | 
				
			||||||
;   output 8 depends on inputs: { 8 }
 | 
					 | 
				
			||||||
;   output 9 depends on inputs: { 9 }
 | 
					 | 
				
			||||||
;   output 10 depends on inputs: { 10 }
 | 
					 | 
				
			||||||
;   output 11 depends on inputs: { 11 }
 | 
					 | 
				
			||||||
;
 | 
					 | 
				
			||||||
target datalayout = "e-m:e-p:32:32-i1:32-i8:32-i16:32-i32:32-i64:64-f16:32-f32:32-f64:64-n8:16:32:64"
 | 
					 | 
				
			||||||
target triple = "dxil-ms-dx"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
%dx.types.Handle = type { i8* }
 | 
					 | 
				
			||||||
%dx.types.CBufRet.f32 = type { float, float, float, float }
 | 
					 | 
				
			||||||
%hostlayout.VertexShaderConstants = type { [4 x <4 x float>], [4 x <4 x float>] }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
define void @mainNV() {
 | 
					 | 
				
			||||||
  %1 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false)  ; CreateHandle(resourceClass,rangeId,index,nonUniformIndex)
 | 
					 | 
				
			||||||
  %2 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %3 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %4 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 2, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %5 = call float @dx.op.loadInput.f32(i32 4, i32 2, i32 0, i8 3, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %6 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %7 = call float @dx.op.loadInput.f32(i32 4, i32 1, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %8 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %9 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %10 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 2, i32 undef)  ; LoadInput(inputSigId,rowIndex,colIndex,gsVertexAxis)
 | 
					 | 
				
			||||||
  %11 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 0)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %12 = extractvalue %dx.types.CBufRet.f32 %11, 0
 | 
					 | 
				
			||||||
  %13 = extractvalue %dx.types.CBufRet.f32 %11, 1
 | 
					 | 
				
			||||||
  %14 = extractvalue %dx.types.CBufRet.f32 %11, 2
 | 
					 | 
				
			||||||
  %15 = extractvalue %dx.types.CBufRet.f32 %11, 3
 | 
					 | 
				
			||||||
  %16 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 1)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %17 = extractvalue %dx.types.CBufRet.f32 %16, 0
 | 
					 | 
				
			||||||
  %18 = extractvalue %dx.types.CBufRet.f32 %16, 1
 | 
					 | 
				
			||||||
  %19 = extractvalue %dx.types.CBufRet.f32 %16, 2
 | 
					 | 
				
			||||||
  %20 = extractvalue %dx.types.CBufRet.f32 %16, 3
 | 
					 | 
				
			||||||
  %21 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 2)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %22 = extractvalue %dx.types.CBufRet.f32 %21, 0
 | 
					 | 
				
			||||||
  %23 = extractvalue %dx.types.CBufRet.f32 %21, 1
 | 
					 | 
				
			||||||
  %24 = extractvalue %dx.types.CBufRet.f32 %21, 2
 | 
					 | 
				
			||||||
  %25 = extractvalue %dx.types.CBufRet.f32 %21, 3
 | 
					 | 
				
			||||||
  %26 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 3)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %27 = extractvalue %dx.types.CBufRet.f32 %26, 0
 | 
					 | 
				
			||||||
  %28 = extractvalue %dx.types.CBufRet.f32 %26, 1
 | 
					 | 
				
			||||||
  %29 = extractvalue %dx.types.CBufRet.f32 %26, 2
 | 
					 | 
				
			||||||
  %30 = extractvalue %dx.types.CBufRet.f32 %26, 3
 | 
					 | 
				
			||||||
  %31 = fmul fast float %12, %8
 | 
					 | 
				
			||||||
  %32 = call float @dx.op.tertiary.f32(i32 46, float %9, float %17, float %31)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %33 = call float @dx.op.tertiary.f32(i32 46, float %10, float %22, float %32)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %34 = fadd fast float %33, %27
 | 
					 | 
				
			||||||
  %35 = fmul fast float %13, %8
 | 
					 | 
				
			||||||
  %36 = call float @dx.op.tertiary.f32(i32 46, float %9, float %18, float %35)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %37 = call float @dx.op.tertiary.f32(i32 46, float %10, float %23, float %36)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %38 = fadd fast float %37, %28
 | 
					 | 
				
			||||||
  %39 = fmul fast float %14, %8
 | 
					 | 
				
			||||||
  %40 = call float @dx.op.tertiary.f32(i32 46, float %9, float %19, float %39)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %41 = call float @dx.op.tertiary.f32(i32 46, float %10, float %24, float %40)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %42 = fadd fast float %41, %29
 | 
					 | 
				
			||||||
  %43 = fmul fast float %15, %8
 | 
					 | 
				
			||||||
  %44 = call float @dx.op.tertiary.f32(i32 46, float %9, float %20, float %43)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %45 = call float @dx.op.tertiary.f32(i32 46, float %10, float %25, float %44)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %46 = fadd fast float %45, %30
 | 
					 | 
				
			||||||
  %47 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 4)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %48 = extractvalue %dx.types.CBufRet.f32 %47, 0
 | 
					 | 
				
			||||||
  %49 = extractvalue %dx.types.CBufRet.f32 %47, 1
 | 
					 | 
				
			||||||
  %50 = extractvalue %dx.types.CBufRet.f32 %47, 2
 | 
					 | 
				
			||||||
  %51 = extractvalue %dx.types.CBufRet.f32 %47, 3
 | 
					 | 
				
			||||||
  %52 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 5)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %53 = extractvalue %dx.types.CBufRet.f32 %52, 0
 | 
					 | 
				
			||||||
  %54 = extractvalue %dx.types.CBufRet.f32 %52, 1
 | 
					 | 
				
			||||||
  %55 = extractvalue %dx.types.CBufRet.f32 %52, 2
 | 
					 | 
				
			||||||
  %56 = extractvalue %dx.types.CBufRet.f32 %52, 3
 | 
					 | 
				
			||||||
  %57 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 6)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %58 = extractvalue %dx.types.CBufRet.f32 %57, 0
 | 
					 | 
				
			||||||
  %59 = extractvalue %dx.types.CBufRet.f32 %57, 1
 | 
					 | 
				
			||||||
  %60 = extractvalue %dx.types.CBufRet.f32 %57, 2
 | 
					 | 
				
			||||||
  %61 = extractvalue %dx.types.CBufRet.f32 %57, 3
 | 
					 | 
				
			||||||
  %62 = call %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32 59, %dx.types.Handle %1, i32 7)  ; CBufferLoadLegacy(handle,regIndex)
 | 
					 | 
				
			||||||
  %63 = extractvalue %dx.types.CBufRet.f32 %62, 0
 | 
					 | 
				
			||||||
  %64 = extractvalue %dx.types.CBufRet.f32 %62, 1
 | 
					 | 
				
			||||||
  %65 = extractvalue %dx.types.CBufRet.f32 %62, 2
 | 
					 | 
				
			||||||
  %66 = extractvalue %dx.types.CBufRet.f32 %62, 3
 | 
					 | 
				
			||||||
  %67 = fmul fast float %48, %34
 | 
					 | 
				
			||||||
  %68 = call float @dx.op.tertiary.f32(i32 46, float %38, float %53, float %67)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %69 = call float @dx.op.tertiary.f32(i32 46, float %42, float %58, float %68)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %70 = call float @dx.op.tertiary.f32(i32 46, float %46, float %63, float %69)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %71 = fmul fast float %49, %34
 | 
					 | 
				
			||||||
  %72 = call float @dx.op.tertiary.f32(i32 46, float %38, float %54, float %71)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %73 = call float @dx.op.tertiary.f32(i32 46, float %42, float %59, float %72)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %74 = call float @dx.op.tertiary.f32(i32 46, float %46, float %64, float %73)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %75 = fmul fast float %50, %34
 | 
					 | 
				
			||||||
  %76 = call float @dx.op.tertiary.f32(i32 46, float %38, float %55, float %75)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %77 = call float @dx.op.tertiary.f32(i32 46, float %42, float %60, float %76)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %78 = call float @dx.op.tertiary.f32(i32 46, float %46, float %65, float %77)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %79 = fmul fast float %51, %34
 | 
					 | 
				
			||||||
  %80 = call float @dx.op.tertiary.f32(i32 46, float %38, float %56, float %79)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %81 = call float @dx.op.tertiary.f32(i32 46, float %42, float %61, float %80)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  %82 = call float @dx.op.tertiary.f32(i32 46, float %46, float %66, float %81)  ; FMad(a,b,c)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %70)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %74)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %78)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %82)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 0, float %6)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 1, float %7)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 0, float %2)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 1, float %3)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 2, float %4)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  call void @dx.op.storeOutput.f32(i32 5, i32 2, i32 0, i8 3, float %5)  ; StoreOutput(outputSigId,rowIndex,colIndex,value)
 | 
					 | 
				
			||||||
  ret void
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind
 | 
					 | 
				
			||||||
declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.CBufRet.f32 @dx.op.cbufferLoadLegacy.f32(i32, %dx.types.Handle, i32) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readnone
 | 
					 | 
				
			||||||
declare float @dx.op.tertiary.f32(i32, float, float, float) #0
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
; Function Attrs: nounwind readonly
 | 
					 | 
				
			||||||
declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
attributes #0 = { nounwind readnone }
 | 
					 | 
				
			||||||
attributes #1 = { nounwind }
 | 
					 | 
				
			||||||
attributes #2 = { nounwind readonly }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
!llvm.ident = !{!0}
 | 
					 | 
				
			||||||
!dx.version = !{!1}
 | 
					 | 
				
			||||||
!dx.valver = !{!2}
 | 
					 | 
				
			||||||
!dx.shaderModel = !{!3}
 | 
					 | 
				
			||||||
!dx.resources = !{!4}
 | 
					 | 
				
			||||||
!dx.viewIdState = !{!7}
 | 
					 | 
				
			||||||
!dx.entryPoints = !{!8}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
!0 = !{!"clang version 3.7 (tags/RELEASE_370/final)"}
 | 
					 | 
				
			||||||
!1 = !{i32 1, i32 0}
 | 
					 | 
				
			||||||
!2 = !{i32 1, i32 6}
 | 
					 | 
				
			||||||
!3 = !{!"vs", i32 6, i32 0}
 | 
					 | 
				
			||||||
!4 = !{null, null, !5, null}
 | 
					 | 
				
			||||||
!5 = !{!6}
 | 
					 | 
				
			||||||
!6 = !{i32 0, %hostlayout.VertexShaderConstants* undef, !"", i32 0, i32 0, i32 1, i32 128, null}
 | 
					 | 
				
			||||||
!7 = !{[14 x i32] [i32 12, i32 12, i32 15, i32 15, i32 15, i32 0, i32 16, i32 32, i32 0, i32 0, i32 256, i32 512, i32 1024, i32 2048]}
 | 
					 | 
				
			||||||
!8 = !{void ()* @mainNV, !"mainNV", !9, !4, null}
 | 
					 | 
				
			||||||
!9 = !{!10, !18, null}
 | 
					 | 
				
			||||||
!10 = !{!11, !14, !16}
 | 
					 | 
				
			||||||
!11 = !{i32 0, !"POSITION", i8 9, i8 0, !12, i8 0, i32 1, i8 3, i32 0, i8 0, !13}
 | 
					 | 
				
			||||||
!12 = !{i32 0}
 | 
					 | 
				
			||||||
!13 = !{i32 3, i32 7}
 | 
					 | 
				
			||||||
!14 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !12, i8 0, i32 1, i8 2, i32 1, i8 0, !15}
 | 
					 | 
				
			||||||
!15 = !{i32 3, i32 3}
 | 
					 | 
				
			||||||
!16 = !{i32 2, !"COLOR", i8 9, i8 0, !12, i8 0, i32 1, i8 4, i32 2, i8 0, !17}
 | 
					 | 
				
			||||||
!17 = !{i32 3, i32 15}
 | 
					 | 
				
			||||||
!18 = !{!19, !20, !21}
 | 
					 | 
				
			||||||
!19 = !{i32 0, !"SV_Position", i8 9, i8 3, !12, i8 4, i32 1, i8 4, i32 0, i8 0, !17}
 | 
					 | 
				
			||||||
!20 = !{i32 1, !"TEXCOORD", i8 9, i8 0, !12, i8 2, i32 1, i8 2, i32 1, i8 0, !15}
 | 
					 | 
				
			||||||
!21 = !{i32 2, !"COLOR", i8 9, i8 0, !12, i8 2, i32 1, i8 4, i32 2, i8 0, !17}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const unsigned char g_mainNV[] = {
 | 
					 | 
				
			||||||
  0x44, 0x58, 0x42, 0x43, 0x19, 0x1b, 0x50, 0x7a, 0xe4, 0x25, 0xcb, 0x64,
 | 
					 | 
				
			||||||
  0x07, 0x40, 0xcd, 0x31, 0x3a, 0x23, 0xa6, 0x35, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x17, 0x13, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x50, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x63, 0x01, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x87, 0x02, 0x00, 0x00, 0x5b, 0x03, 0x00, 0x00, 0x03, 0x0a, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x1f, 0x0a, 0x00, 0x00, 0x53, 0x46, 0x49, 0x30, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x53, 0x47, 0x31,
 | 
					 | 
				
			||||||
  0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x02, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58,
 | 
					 | 
				
			||||||
  0x43, 0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00,
 | 
					 | 
				
			||||||
  0x4f, 0x53, 0x47, 0x31, 0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x03, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x7d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x53, 0x56, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74,
 | 
					 | 
				
			||||||
  0x69, 0x6f, 0x6e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52, 0x44,
 | 
					 | 
				
			||||||
  0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x50, 0x53, 0x56, 0x30, 0x1c,
 | 
					 | 
				
			||||||
  0x01, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x03,
 | 
					 | 
				
			||||||
  0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x18,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x50, 0x4f, 0x53, 0x49,
 | 
					 | 
				
			||||||
  0x54, 0x49, 0x4f, 0x4e, 0x00, 0x54, 0x45, 0x58, 0x43, 0x4f, 0x4f, 0x52,
 | 
					 | 
				
			||||||
  0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x54, 0x45, 0x58, 0x43,
 | 
					 | 
				
			||||||
  0x4f, 0x4f, 0x52, 0x44, 0x00, 0x43, 0x4f, 0x4c, 0x4f, 0x52, 0x00, 0x01,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x43, 0x00, 0x03,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
 | 
					 | 
				
			||||||
  0x01, 0x42, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x01, 0x02, 0x44, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x44, 0x03, 0x03,
 | 
					 | 
				
			||||||
  0x04, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
 | 
					 | 
				
			||||||
  0x01, 0x42, 0x00, 0x03, 0x02, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x01, 0x02, 0x44, 0x00, 0x03, 0x02, 0x00, 0x00, 0x0f,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x52,
 | 
					 | 
				
			||||||
  0x54, 0x53, 0x30, 0xcc, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x05,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0xac, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x74,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x53, 0x54, 0x41, 0x54, 0xa0,
 | 
					 | 
				
			||||||
  0x06, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0xa8, 0x01, 0x00, 0x00, 0x44,
 | 
					 | 
				
			||||||
  0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x88,
 | 
					 | 
				
			||||||
  0x06, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21, 0x0c, 0x00, 0x00, 0x9f,
 | 
					 | 
				
			||||||
  0x01, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06,
 | 
					 | 
				
			||||||
  0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25, 0x05, 0x08, 0x19, 0x1e,
 | 
					 | 
				
			||||||
  0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42, 0x92, 0x0b, 0x42, 0xa4,
 | 
					 | 
				
			||||||
  0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a, 0x32, 0x52, 0x88, 0x48,
 | 
					 | 
				
			||||||
  0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00, 0x19, 0x32, 0x42, 0xe4,
 | 
					 | 
				
			||||||
  0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50, 0x41, 0x51, 0x81, 0x8c, 0xe1,
 | 
					 | 
				
			||||||
  0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06, 0x51, 0x18, 0x00, 0x00, 0x08,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x40,
 | 
					 | 
				
			||||||
  0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x6d,
 | 
					 | 
				
			||||||
  0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x09, 0xa8, 0x00, 0x49,
 | 
					 | 
				
			||||||
  0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13, 0x82, 0x60, 0x42, 0x20,
 | 
					 | 
				
			||||||
  0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89, 0x20, 0x00, 0x00, 0x26,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20, 0x64, 0x85, 0x04, 0x93,
 | 
					 | 
				
			||||||
  0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3, 0x84, 0xa1, 0x90, 0x14, 0x12,
 | 
					 | 
				
			||||||
  0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10, 0x68, 0x23, 0x00, 0x25,
 | 
					 | 
				
			||||||
  0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60, 0x8e, 0x00, 0x29, 0xc6,
 | 
					 | 
				
			||||||
  0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80, 0x10, 0x52, 0x06, 0xa1, 0xa3,
 | 
					 | 
				
			||||||
  0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e, 0xa3, 0x8a, 0x95, 0x98,
 | 
					 | 
				
			||||||
  0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18, 0x54, 0xee, 0x19, 0x2e, 0x7f,
 | 
					 | 
				
			||||||
  0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16, 0x02, 0x05, 0xab, 0x10,
 | 
					 | 
				
			||||||
  0x8a, 0x30, 0x42, 0xad, 0x14, 0x83, 0x8c, 0x31, 0xe8, 0xcd, 0x11, 0x04,
 | 
					 | 
				
			||||||
  0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e, 0x04, 0x0c, 0x23, 0x10, 0x43,
 | 
					 | 
				
			||||||
  0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6, 0x05, 0xc0, 0x1c, 0x6a, 0xf2,
 | 
					 | 
				
			||||||
  0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80, 0x81, 0x88, 0x38, 0xa7, 0x91,
 | 
					 | 
				
			||||||
  0x26, 0xa0, 0x99, 0x24, 0x24, 0x58, 0x4b, 0x37, 0x1d, 0x08, 0x00, 0x13,
 | 
					 | 
				
			||||||
  0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36, 0x68, 0x87, 0x79, 0x68,
 | 
					 | 
				
			||||||
  0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e, 0x6d, 0xd0, 0x0e, 0x7a,
 | 
					 | 
				
			||||||
  0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73,
 | 
					 | 
				
			||||||
  0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d,
 | 
					 | 
				
			||||||
  0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71,
 | 
					 | 
				
			||||||
  0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe9, 0x30, 0x07, 0x72,
 | 
					 | 
				
			||||||
  0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x76, 0x40, 0x07, 0x7a,
 | 
					 | 
				
			||||||
  0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07, 0x76, 0xa0, 0x07, 0x73,
 | 
					 | 
				
			||||||
  0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07, 0x7a, 0x30, 0x07, 0x72,
 | 
					 | 
				
			||||||
  0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x6d,
 | 
					 | 
				
			||||||
  0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72,
 | 
					 | 
				
			||||||
  0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00, 0x08, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c, 0x06, 0x10, 0x00, 0x01,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x79, 0x10, 0x20, 0x00,
 | 
					 | 
				
			||||||
  0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf2, 0x34, 0x40,
 | 
					 | 
				
			||||||
  0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe4, 0x79,
 | 
					 | 
				
			||||||
  0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xc8,
 | 
					 | 
				
			||||||
  0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
 | 
					 | 
				
			||||||
  0x16, 0x08, 0x00, 0x14, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x14, 0x19,
 | 
					 | 
				
			||||||
  0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6, 0x04, 0x43, 0x22, 0x25,
 | 
					 | 
				
			||||||
  0x30, 0x02, 0x50, 0x0c, 0x05, 0x28, 0x50, 0x04, 0x85, 0x50, 0x06, 0xe5,
 | 
					 | 
				
			||||||
  0x50, 0x12, 0x05, 0x18, 0x50, 0x1e, 0x85, 0x51, 0xba, 0x01, 0x45, 0x41,
 | 
					 | 
				
			||||||
  0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0, 0x08, 0x0a, 0x81, 0x62, 0x0d, 0xd0,
 | 
					 | 
				
			||||||
  0x9d, 0x01, 0x20, 0x3c, 0x03, 0x40, 0x79, 0x2c, 0x87, 0x61, 0x9e, 0xe7,
 | 
					 | 
				
			||||||
  0x01, 0x20, 0x30, 0x00, 0x00, 0x10, 0x01, 0x21, 0x10, 0x0c, 0x40, 0x50,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x1a,
 | 
					 | 
				
			||||||
  0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73,
 | 
					 | 
				
			||||||
  0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71,
 | 
					 | 
				
			||||||
  0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a,
 | 
					 | 
				
			||||||
  0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b,
 | 
					 | 
				
			||||||
  0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0xc2, 0x98, 0x20, 0x10, 0xc7,
 | 
					 | 
				
			||||||
  0x06, 0x61, 0x20, 0x36, 0x08, 0x04, 0x41, 0xc1, 0x6e, 0x6e, 0x82, 0x40,
 | 
					 | 
				
			||||||
  0x20, 0x1b, 0x86, 0x03, 0x21, 0x26, 0x08, 0xd8, 0xc6, 0xca, 0xaa, 0x4c,
 | 
					 | 
				
			||||||
  0x8e, 0xae, 0x0c, 0x6f, 0x0a, 0x2d, 0x8c, 0xac, 0x4c, 0x6e, 0xe8, 0xcd,
 | 
					 | 
				
			||||||
  0x6d, 0x8e, 0x2e, 0xcc, 0x8d, 0x6e, 0x6e, 0x82, 0x40, 0x24, 0x1b, 0x10,
 | 
					 | 
				
			||||||
  0x42, 0x59, 0x08, 0x62, 0x60, 0x80, 0x0d, 0x41, 0xb3, 0x81, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x07, 0x98, 0x20, 0x5c, 0x1a, 0x8b, 0xb6, 0x37, 0xb2, 0x32, 0xb6, 0x09,
 | 
					 | 
				
			||||||
  0x02, 0xa1, 0x4c, 0x10, 0x88, 0x65, 0xc3, 0x30, 0x4d, 0xc3, 0x04, 0x81,
 | 
					 | 
				
			||||||
  0x60, 0x26, 0x08, 0x44, 0x33, 0x41, 0x20, 0x9c, 0x09, 0x42, 0x94, 0x6d,
 | 
					 | 
				
			||||||
  0x50, 0x90, 0x48, 0xa2, 0x2a, 0xc2, 0xba, 0x2e, 0x8c, 0x11, 0x9c, 0xdc,
 | 
					 | 
				
			||||||
  0x9b, 0x5a, 0xd9, 0x18, 0x5d, 0xda, 0x9b, 0x5b, 0x90, 0x1b, 0x99, 0x55,
 | 
					 | 
				
			||||||
  0x5a, 0xd9, 0xdd, 0x04, 0x81, 0x78, 0x36, 0x28, 0x88, 0x26, 0x51, 0xd5,
 | 
					 | 
				
			||||||
  0x66, 0x5d, 0x17, 0xb6, 0x61, 0x60, 0x32, 0x6e, 0xc3, 0x40, 0x40, 0xdd,
 | 
					 | 
				
			||||||
  0x04, 0x41, 0x00, 0x36, 0x00, 0x1b, 0x06, 0x02, 0x0c, 0xc0, 0x60, 0x43,
 | 
					 | 
				
			||||||
  0x10, 0x06, 0x1b, 0x86, 0xe1, 0x13, 0x83, 0x09, 0x42, 0xc6, 0x6d, 0x08,
 | 
					 | 
				
			||||||
  0xc8, 0x80, 0x46, 0x5b, 0x58, 0x9a, 0x9b, 0x93, 0x15, 0x11, 0xa8, 0xa7,
 | 
					 | 
				
			||||||
  0xa9, 0x24, 0xaa, 0xa4, 0x27, 0xa7, 0x09, 0x42, 0x41, 0x4d, 0x10, 0x8a,
 | 
					 | 
				
			||||||
  0x6a, 0x43, 0x40, 0x4c, 0x10, 0x0a, 0x6b, 0x83, 0x50, 0x59, 0x1b, 0x16,
 | 
					 | 
				
			||||||
  0xe2, 0x0c, 0xd0, 0x20, 0x0d, 0xd4, 0x20, 0x0d, 0x86, 0x35, 0x20, 0xd2,
 | 
					 | 
				
			||||||
  0x80, 0x0d, 0x88, 0x50, 0x15, 0x61, 0x0d, 0x3d, 0x3d, 0x49, 0x11, 0x4d,
 | 
					 | 
				
			||||||
  0x10, 0x8a, 0x6b, 0x83, 0x50, 0x55, 0x1b, 0x96, 0xc1, 0x0d, 0xd0, 0x20,
 | 
					 | 
				
			||||||
  0x0d, 0xd4, 0x20, 0x0d, 0x86, 0x37, 0x18, 0xd2, 0x00, 0x0e, 0x58, 0x0c,
 | 
					 | 
				
			||||||
  0x3d, 0x31, 0x3d, 0x49, 0x4d, 0x10, 0x0a, 0x6c, 0x82, 0x40, 0x40, 0x1b,
 | 
					 | 
				
			||||||
  0x84, 0x8a, 0x0e, 0x36, 0x2c, 0x92, 0x1c, 0xa0, 0x41, 0x1a, 0xa8, 0x41,
 | 
					 | 
				
			||||||
  0x1a, 0x0c, 0x73, 0x20, 0xa5, 0x41, 0x1d, 0x6c, 0x18, 0xda, 0x20, 0x0e,
 | 
					 | 
				
			||||||
  0xec, 0x80, 0xcb, 0x94, 0xd5, 0x17, 0xd4, 0xdb, 0x5c, 0x1a, 0x5d, 0xda,
 | 
					 | 
				
			||||||
  0x9b, 0xdb, 0x86, 0x85, 0xc0, 0x03, 0x34, 0x58, 0x03, 0x35, 0x98, 0x83,
 | 
					 | 
				
			||||||
  0x61, 0x0e, 0x88, 0x34, 0xa8, 0x83, 0x0d, 0xcb, 0xe0, 0x06, 0x68, 0x90,
 | 
					 | 
				
			||||||
  0x06, 0x6a, 0xf0, 0x06, 0xc3, 0x1b, 0x0c, 0x69, 0x00, 0x07, 0x1b, 0x16,
 | 
					 | 
				
			||||||
  0x49, 0x0e, 0xd0, 0x20, 0x0d, 0xd4, 0xe0, 0x0d, 0x86, 0x39, 0x90, 0xd2,
 | 
					 | 
				
			||||||
  0xa0, 0x0e, 0x36, 0x0c, 0x79, 0xa0, 0x07, 0x7b, 0xb0, 0x61, 0xb8, 0x03,
 | 
					 | 
				
			||||||
  0x3e, 0x00, 0x36, 0x14, 0x9f, 0x19, 0xf4, 0xc1, 0x03, 0xd0, 0x30, 0x63,
 | 
					 | 
				
			||||||
  0x7b, 0x0b, 0xa3, 0x9b, 0x9b, 0x20, 0x10, 0x11, 0x8b, 0x34, 0xb7, 0x39,
 | 
					 | 
				
			||||||
  0xba, 0xb9, 0x09, 0x02, 0x21, 0xd1, 0x98, 0x4b, 0x3b, 0xfb, 0x62, 0x23,
 | 
					 | 
				
			||||||
  0xa3, 0x31, 0x97, 0x76, 0xf6, 0x35, 0x47, 0x37, 0x41, 0x20, 0xa6, 0x0d,
 | 
					 | 
				
			||||||
  0xc8, 0x1f, 0x80, 0x42, 0x28, 0x88, 0xc2, 0x28, 0x5c, 0xa4, 0x50, 0x0a,
 | 
					 | 
				
			||||||
  0x55, 0xd8, 0xd8, 0xec, 0xda, 0x5c, 0xd2, 0xc8, 0xca, 0xdc, 0xe8, 0xa6,
 | 
					 | 
				
			||||||
  0x04, 0x41, 0x15, 0x32, 0x3c, 0x17, 0xbb, 0x32, 0xb9, 0xb9, 0xb4, 0x37,
 | 
					 | 
				
			||||||
  0xb7, 0x29, 0x01, 0xd1, 0x84, 0x0c, 0xcf, 0xc5, 0x2e, 0x8c, 0xcd, 0xae,
 | 
					 | 
				
			||||||
  0x4c, 0x6e, 0x4a, 0x50, 0xd4, 0x21, 0xc3, 0x73, 0x99, 0x43, 0x0b, 0x23,
 | 
					 | 
				
			||||||
  0x2b, 0x93, 0x6b, 0x7a, 0x23, 0x2b, 0x63, 0x9b, 0x12, 0x20, 0x65, 0xc8,
 | 
					 | 
				
			||||||
  0xf0, 0x5c, 0xe4, 0xca, 0xe6, 0xde, 0xea, 0xe4, 0xc6, 0xca, 0xe6, 0xa6,
 | 
					 | 
				
			||||||
  0x04, 0x4e, 0x25, 0x32, 0x3c, 0x17, 0xba, 0x3c, 0xb8, 0xb2, 0x20, 0x37,
 | 
					 | 
				
			||||||
  0xb7, 0x37, 0xba, 0x30, 0xba, 0xb4, 0x37, 0xb7, 0xb9, 0x29, 0x42, 0x27,
 | 
					 | 
				
			||||||
  0x06, 0x75, 0xc8, 0xf0, 0x5c, 0xec, 0xd2, 0xca, 0xee, 0x92, 0xc8, 0xa6,
 | 
					 | 
				
			||||||
  0xe8, 0xc2, 0xe8, 0xca, 0xa6, 0x04, 0x64, 0x50, 0x87, 0x0c, 0xcf, 0xa5,
 | 
					 | 
				
			||||||
  0xcc, 0x8d, 0x4e, 0x2e, 0x0f, 0xea, 0x2d, 0xcd, 0x8d, 0x6e, 0x6e, 0x4a,
 | 
					 | 
				
			||||||
  0xd0, 0x07, 0x5d, 0xc8, 0xf0, 0x5c, 0xc6, 0xde, 0xea, 0xdc, 0xe8, 0xca,
 | 
					 | 
				
			||||||
  0xe4, 0xe6, 0xa6, 0x04, 0xa5, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x49,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14,
 | 
					 | 
				
			||||||
  0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79,
 | 
					 | 
				
			||||||
  0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e,
 | 
					 | 
				
			||||||
  0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1,
 | 
					 | 
				
			||||||
  0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc,
 | 
					 | 
				
			||||||
  0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74,
 | 
					 | 
				
			||||||
  0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a,
 | 
					 | 
				
			||||||
  0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e,
 | 
					 | 
				
			||||||
  0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e,
 | 
					 | 
				
			||||||
  0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21,
 | 
					 | 
				
			||||||
  0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0,
 | 
					 | 
				
			||||||
  0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc,
 | 
					 | 
				
			||||||
  0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72,
 | 
					 | 
				
			||||||
  0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76,
 | 
					 | 
				
			||||||
  0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f,
 | 
					 | 
				
			||||||
  0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c,
 | 
					 | 
				
			||||||
  0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03,
 | 
					 | 
				
			||||||
  0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1,
 | 
					 | 
				
			||||||
  0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61,
 | 
					 | 
				
			||||||
  0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8,
 | 
					 | 
				
			||||||
  0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94,
 | 
					 | 
				
			||||||
  0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0,
 | 
					 | 
				
			||||||
  0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73,
 | 
					 | 
				
			||||||
  0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77,
 | 
					 | 
				
			||||||
  0xa8, 0x07, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x18,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50,
 | 
					 | 
				
			||||||
  0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17,
 | 
					 | 
				
			||||||
  0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c,
 | 
					 | 
				
			||||||
  0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8,
 | 
					 | 
				
			||||||
  0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54,
 | 
					 | 
				
			||||||
  0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50,
 | 
					 | 
				
			||||||
  0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11,
 | 
					 | 
				
			||||||
  0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x06, 0x03, 0x20,
 | 
					 | 
				
			||||||
  0xcd, 0xf9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x48, 0x41, 0x53, 0x48, 0x14,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0x35, 0x48, 0xb5,
 | 
					 | 
				
			||||||
  0xa6, 0x91, 0x74, 0x60, 0x1c, 0x07, 0x64, 0x1d, 0x4a, 0xe1, 0x87, 0x44,
 | 
					 | 
				
			||||||
  0x58, 0x49, 0x4c, 0xf0, 0x08, 0x00, 0x00, 0x60, 0x00, 0x01, 0x00, 0x3c,
 | 
					 | 
				
			||||||
  0x02, 0x00, 0x00, 0x44, 0x58, 0x49, 0x4c, 0x00, 0x01, 0x00, 0x00, 0x10,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0xd8, 0x08, 0x00, 0x00, 0x42, 0x43, 0xc0, 0xde, 0x21,
 | 
					 | 
				
			||||||
  0x0c, 0x00, 0x00, 0x33, 0x02, 0x00, 0x00, 0x0b, 0x82, 0x20, 0x00, 0x02,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41,
 | 
					 | 
				
			||||||
  0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, 0x92, 0x01, 0x84, 0x0c, 0x25,
 | 
					 | 
				
			||||||
  0x05, 0x08, 0x19, 0x1e, 0x04, 0x8b, 0x62, 0x80, 0x14, 0x45, 0x02, 0x42,
 | 
					 | 
				
			||||||
  0x92, 0x0b, 0x42, 0xa4, 0x10, 0x32, 0x14, 0x38, 0x08, 0x18, 0x4b, 0x0a,
 | 
					 | 
				
			||||||
  0x32, 0x52, 0x88, 0x48, 0x90, 0x14, 0x20, 0x43, 0x46, 0x88, 0xa5, 0x00,
 | 
					 | 
				
			||||||
  0x19, 0x32, 0x42, 0xe4, 0x48, 0x0e, 0x90, 0x91, 0x22, 0xc4, 0x50, 0x41,
 | 
					 | 
				
			||||||
  0x51, 0x81, 0x8c, 0xe1, 0x83, 0xe5, 0x8a, 0x04, 0x29, 0x46, 0x06, 0x51,
 | 
					 | 
				
			||||||
  0x18, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1b, 0x8c, 0xe0, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0xff, 0x07, 0x40, 0x02, 0xa8, 0x0d, 0x84, 0xf0, 0xff, 0xff, 0xff,
 | 
					 | 
				
			||||||
  0xff, 0x03, 0x20, 0x6d, 0x30, 0x86, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00,
 | 
					 | 
				
			||||||
  0x09, 0xa8, 0x00, 0x49, 0x18, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x13,
 | 
					 | 
				
			||||||
  0x82, 0x60, 0x42, 0x20, 0x4c, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x89,
 | 
					 | 
				
			||||||
  0x20, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x32, 0x22, 0x48, 0x09, 0x20,
 | 
					 | 
				
			||||||
  0x64, 0x85, 0x04, 0x93, 0x22, 0xa4, 0x84, 0x04, 0x93, 0x22, 0xe3, 0x84,
 | 
					 | 
				
			||||||
  0xa1, 0x90, 0x14, 0x12, 0x4c, 0x8a, 0x8c, 0x0b, 0x84, 0xa4, 0x4c, 0x10,
 | 
					 | 
				
			||||||
  0x68, 0x23, 0x00, 0x25, 0x00, 0x14, 0x66, 0x00, 0xe6, 0x08, 0xc0, 0x60,
 | 
					 | 
				
			||||||
  0x8e, 0x00, 0x29, 0xc6, 0x20, 0x84, 0x14, 0x42, 0xa6, 0x18, 0x80, 0x10,
 | 
					 | 
				
			||||||
  0x52, 0x06, 0xa1, 0xa3, 0x86, 0xcb, 0x9f, 0xb0, 0x87, 0x90, 0x7c, 0x6e,
 | 
					 | 
				
			||||||
  0xa3, 0x8a, 0x95, 0x98, 0xfc, 0xe2, 0xb6, 0x11, 0x31, 0xc6, 0x18, 0x54,
 | 
					 | 
				
			||||||
  0xee, 0x19, 0x2e, 0x7f, 0xc2, 0x1e, 0x42, 0xf2, 0x43, 0xa0, 0x19, 0x16,
 | 
					 | 
				
			||||||
  0x02, 0x05, 0xab, 0x10, 0x8a, 0x30, 0x42, 0xad, 0x14, 0x83, 0x8c, 0x31,
 | 
					 | 
				
			||||||
  0xe8, 0xcd, 0x11, 0x04, 0xc5, 0x60, 0xa4, 0x10, 0x12, 0x49, 0x0e, 0x04,
 | 
					 | 
				
			||||||
  0x0c, 0x23, 0x10, 0x43, 0x12, 0xd4, 0x03, 0x83, 0xc3, 0x91, 0xa6, 0x05,
 | 
					 | 
				
			||||||
  0xc0, 0x1c, 0x6a, 0xf2, 0x5f, 0x22, 0x9a, 0x88, 0x8b, 0x3d, 0x80, 0x81,
 | 
					 | 
				
			||||||
  0x88, 0x38, 0xa7, 0x91, 0x26, 0xa0, 0x99, 0x24, 0x24, 0x58, 0x4b, 0x37,
 | 
					 | 
				
			||||||
  0x1d, 0x08, 0x00, 0x13, 0x14, 0x72, 0xc0, 0x87, 0x74, 0x60, 0x87, 0x36,
 | 
					 | 
				
			||||||
  0x68, 0x87, 0x79, 0x68, 0x03, 0x72, 0xc0, 0x87, 0x0d, 0xaf, 0x50, 0x0e,
 | 
					 | 
				
			||||||
  0x6d, 0xd0, 0x0e, 0x7a, 0x50, 0x0e, 0x6d, 0x00, 0x0f, 0x7a, 0x30, 0x07,
 | 
					 | 
				
			||||||
  0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x71, 0xa0, 0x07,
 | 
					 | 
				
			||||||
  0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e, 0x78, 0xa0, 0x07, 0x73, 0x20, 0x07,
 | 
					 | 
				
			||||||
  0x6d, 0x90, 0x0e, 0x71, 0x60, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06,
 | 
					 | 
				
			||||||
  0xe9, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x90, 0x0e,
 | 
					 | 
				
			||||||
  0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, 0x74, 0xd0, 0x06, 0xe6, 0x10, 0x07,
 | 
					 | 
				
			||||||
  0x76, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x60, 0x0e, 0x73, 0x20, 0x07,
 | 
					 | 
				
			||||||
  0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xe6, 0x60, 0x07, 0x74, 0xa0, 0x07,
 | 
					 | 
				
			||||||
  0x76, 0x40, 0x07, 0x6d, 0xe0, 0x0e, 0x78, 0xa0, 0x07, 0x71, 0x60, 0x07,
 | 
					 | 
				
			||||||
  0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x76, 0x40, 0x07, 0x43, 0x9e, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x3c,
 | 
					 | 
				
			||||||
  0x06, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c,
 | 
					 | 
				
			||||||
  0x79, 0x10, 0x20, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x18, 0xf2, 0x34, 0x40, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x30, 0xe4, 0x79, 0x80, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x60, 0xc8, 0x23, 0x01, 0x01, 0x30, 0x00, 0x00, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x40, 0x16, 0x08, 0x00, 0x10, 0x00, 0x00, 0x00, 0x32,
 | 
					 | 
				
			||||||
  0x1e, 0x98, 0x14, 0x19, 0x11, 0x4c, 0x90, 0x8c, 0x09, 0x26, 0x47, 0xc6,
 | 
					 | 
				
			||||||
  0x04, 0x43, 0x22, 0x25, 0x30, 0x02, 0x50, 0x0c, 0x05, 0x28, 0x50, 0x06,
 | 
					 | 
				
			||||||
  0xe5, 0x50, 0x04, 0xe5, 0x41, 0xa5, 0x24, 0x46, 0x00, 0xca, 0xa0, 0x08,
 | 
					 | 
				
			||||||
  0x0a, 0x81, 0xf0, 0x0c, 0x00, 0xe5, 0xb1, 0x1c, 0x86, 0x79, 0x9e, 0x07,
 | 
					 | 
				
			||||||
  0x80, 0xc0, 0x00, 0x00, 0x40, 0x04, 0x84, 0x40, 0x30, 0x00, 0x41, 0x01,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x79, 0x18, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x1a,
 | 
					 | 
				
			||||||
  0x03, 0x4c, 0x90, 0x46, 0x02, 0x13, 0x44, 0x35, 0x18, 0x63, 0x0b, 0x73,
 | 
					 | 
				
			||||||
  0x3b, 0x03, 0xb1, 0x2b, 0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x03, 0x99, 0x71,
 | 
					 | 
				
			||||||
  0xb9, 0x01, 0x41, 0xa1, 0x0b, 0x3b, 0x9b, 0x7b, 0x91, 0x2a, 0x62, 0x2a,
 | 
					 | 
				
			||||||
  0x0a, 0x9a, 0x2a, 0xfa, 0x9a, 0xb9, 0x81, 0x79, 0x31, 0x4b, 0x73, 0x0b,
 | 
					 | 
				
			||||||
  0x63, 0x4b, 0xd9, 0x10, 0x04, 0x13, 0x04, 0xc2, 0x98, 0x20, 0x10, 0xc7,
 | 
					 | 
				
			||||||
  0x06, 0x61, 0x20, 0x26, 0x08, 0x04, 0xb2, 0x41, 0x18, 0x0c, 0x0a, 0x76,
 | 
					 | 
				
			||||||
  0x73, 0x1b, 0x06, 0xc4, 0x20, 0x26, 0x08, 0xd8, 0x44, 0x60, 0x82, 0x40,
 | 
					 | 
				
			||||||
  0x24, 0x1b, 0x10, 0x42, 0x59, 0x08, 0x62, 0x60, 0x80, 0x0d, 0x41, 0xb3,
 | 
					 | 
				
			||||||
  0x81, 0x00, 0x00, 0x07, 0x98, 0x20, 0x64, 0xd4, 0x86, 0x00, 0x9a, 0x20,
 | 
					 | 
				
			||||||
  0x08, 0x00, 0x8d, 0xb6, 0xb0, 0x34, 0x37, 0x27, 0x2b, 0x22, 0x50, 0x4f,
 | 
					 | 
				
			||||||
  0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x13, 0x84, 0xc2, 0x99, 0x20, 0x14,
 | 
					 | 
				
			||||||
  0xcf, 0x86, 0x80, 0x98, 0x20, 0x14, 0xd0, 0x04, 0x81, 0x50, 0x26, 0x08,
 | 
					 | 
				
			||||||
  0xc4, 0xb2, 0x41, 0xc8, 0xb4, 0x0d, 0x0b, 0x41, 0x55, 0xd6, 0x65, 0x0d,
 | 
					 | 
				
			||||||
  0x18, 0x61, 0x6d, 0x44, 0xa8, 0x8a, 0xb0, 0x86, 0x9e, 0x9e, 0xa4, 0x88,
 | 
					 | 
				
			||||||
  0x26, 0x08, 0x45, 0xb4, 0x41, 0xc8, 0xb2, 0x0d, 0xcb, 0xd0, 0x55, 0xd6,
 | 
					 | 
				
			||||||
  0x65, 0x0d, 0xde, 0x60, 0x7d, 0x13, 0x04, 0x82, 0x61, 0x31, 0xf4, 0xc4,
 | 
					 | 
				
			||||||
  0xf4, 0x24, 0x35, 0x41, 0x28, 0xa4, 0x09, 0x02, 0xd1, 0x6c, 0x10, 0x32,
 | 
					 | 
				
			||||||
  0x32, 0xd8, 0xb0, 0x84, 0x81, 0x18, 0x54, 0xd6, 0x65, 0x0d, 0x63, 0x10,
 | 
					 | 
				
			||||||
  0x06, 0x56, 0x19, 0x6c, 0x18, 0x38, 0x30, 0x30, 0x03, 0x2e, 0x53, 0x56,
 | 
					 | 
				
			||||||
  0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x1b, 0x16, 0x02,
 | 
					 | 
				
			||||||
  0x0d, 0x2a, 0xec, 0x1a, 0x83, 0x61, 0x0c, 0x08, 0xab, 0x0c, 0x36, 0x2c,
 | 
					 | 
				
			||||||
  0x43, 0x57, 0x59, 0x97, 0x37, 0x78, 0x83, 0xf5, 0x6d, 0x58, 0xc2, 0x40,
 | 
					 | 
				
			||||||
  0x0c, 0x2a, 0xeb, 0xf2, 0x86, 0x31, 0x08, 0x03, 0xab, 0x0c, 0x36, 0x0c,
 | 
					 | 
				
			||||||
  0x69, 0xa0, 0x06, 0x6b, 0xb0, 0x61, 0x38, 0x03, 0x36, 0x00, 0x36, 0x14,
 | 
					 | 
				
			||||||
  0xd2, 0xd4, 0x06, 0x0f, 0x50, 0x85, 0x8d, 0xcd, 0xae, 0xcd, 0x25, 0x8d,
 | 
					 | 
				
			||||||
  0xac, 0xcc, 0x8d, 0x6e, 0x4a, 0x10, 0x54, 0x21, 0xc3, 0x73, 0xb1, 0x2b,
 | 
					 | 
				
			||||||
  0x93, 0x9b, 0x4b, 0x7b, 0x73, 0x9b, 0x12, 0x10, 0x4d, 0xc8, 0xf0, 0x5c,
 | 
					 | 
				
			||||||
  0xec, 0xc2, 0xd8, 0xec, 0xca, 0xe4, 0xa6, 0x04, 0x46, 0x1d, 0x32, 0x3c,
 | 
					 | 
				
			||||||
  0x97, 0x39, 0xb4, 0x30, 0xb2, 0x32, 0xb9, 0xa6, 0x37, 0xb2, 0x32, 0xb6,
 | 
					 | 
				
			||||||
  0x29, 0x01, 0x52, 0x86, 0x0c, 0xcf, 0x45, 0xae, 0x6c, 0xee, 0xad, 0x4e,
 | 
					 | 
				
			||||||
  0x6e, 0xac, 0x6c, 0x6e, 0x4a, 0xe0, 0xd4, 0x21, 0xc3, 0x73, 0xb1, 0x4b,
 | 
					 | 
				
			||||||
  0x2b, 0xbb, 0x4b, 0x22, 0x9b, 0xa2, 0x0b, 0xa3, 0x2b, 0x9b, 0x12, 0x40,
 | 
					 | 
				
			||||||
  0x75, 0xc8, 0xf0, 0x5c, 0xca, 0xdc, 0xe8, 0xe4, 0xf2, 0xa0, 0xde, 0xd2,
 | 
					 | 
				
			||||||
  0xdc, 0xe8, 0xe6, 0xa6, 0x04, 0x6d, 0x00, 0x79, 0x18, 0x00, 0x00, 0x49,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14,
 | 
					 | 
				
			||||||
  0x01, 0x3d, 0x88, 0x43, 0x38, 0x84, 0xc3, 0x8c, 0x42, 0x80, 0x07, 0x79,
 | 
					 | 
				
			||||||
  0x78, 0x07, 0x73, 0x98, 0x71, 0x0c, 0xe6, 0x00, 0x0f, 0xed, 0x10, 0x0e,
 | 
					 | 
				
			||||||
  0xf4, 0x80, 0x0e, 0x33, 0x0c, 0x42, 0x1e, 0xc2, 0xc1, 0x1d, 0xce, 0xa1,
 | 
					 | 
				
			||||||
  0x1c, 0x66, 0x30, 0x05, 0x3d, 0x88, 0x43, 0x38, 0x84, 0x83, 0x1b, 0xcc,
 | 
					 | 
				
			||||||
  0x03, 0x3d, 0xc8, 0x43, 0x3d, 0x8c, 0x03, 0x3d, 0xcc, 0x78, 0x8c, 0x74,
 | 
					 | 
				
			||||||
  0x70, 0x07, 0x7b, 0x08, 0x07, 0x79, 0x48, 0x87, 0x70, 0x70, 0x07, 0x7a,
 | 
					 | 
				
			||||||
  0x70, 0x03, 0x76, 0x78, 0x87, 0x70, 0x20, 0x87, 0x19, 0xcc, 0x11, 0x0e,
 | 
					 | 
				
			||||||
  0xec, 0x90, 0x0e, 0xe1, 0x30, 0x0f, 0x6e, 0x30, 0x0f, 0xe3, 0xf0, 0x0e,
 | 
					 | 
				
			||||||
  0xf0, 0x50, 0x0e, 0x33, 0x10, 0xc4, 0x1d, 0xde, 0x21, 0x1c, 0xd8, 0x21,
 | 
					 | 
				
			||||||
  0x1d, 0xc2, 0x61, 0x1e, 0x66, 0x30, 0x89, 0x3b, 0xbc, 0x83, 0x3b, 0xd0,
 | 
					 | 
				
			||||||
  0x43, 0x39, 0xb4, 0x03, 0x3c, 0xbc, 0x83, 0x3c, 0x84, 0x03, 0x3b, 0xcc,
 | 
					 | 
				
			||||||
  0xf0, 0x14, 0x76, 0x60, 0x07, 0x7b, 0x68, 0x07, 0x37, 0x68, 0x87, 0x72,
 | 
					 | 
				
			||||||
  0x68, 0x07, 0x37, 0x80, 0x87, 0x70, 0x90, 0x87, 0x70, 0x60, 0x07, 0x76,
 | 
					 | 
				
			||||||
  0x28, 0x07, 0x76, 0xf8, 0x05, 0x76, 0x78, 0x87, 0x77, 0x80, 0x87, 0x5f,
 | 
					 | 
				
			||||||
  0x08, 0x87, 0x71, 0x18, 0x87, 0x72, 0x98, 0x87, 0x79, 0x98, 0x81, 0x2c,
 | 
					 | 
				
			||||||
  0xee, 0xf0, 0x0e, 0xee, 0xe0, 0x0e, 0xf5, 0xc0, 0x0e, 0xec, 0x30, 0x03,
 | 
					 | 
				
			||||||
  0x62, 0xc8, 0xa1, 0x1c, 0xe4, 0xa1, 0x1c, 0xcc, 0xa1, 0x1c, 0xe4, 0xa1,
 | 
					 | 
				
			||||||
  0x1c, 0xdc, 0x61, 0x1c, 0xca, 0x21, 0x1c, 0xc4, 0x81, 0x1d, 0xca, 0x61,
 | 
					 | 
				
			||||||
  0x06, 0xd6, 0x90, 0x43, 0x39, 0xc8, 0x43, 0x39, 0x98, 0x43, 0x39, 0xc8,
 | 
					 | 
				
			||||||
  0x43, 0x39, 0xb8, 0xc3, 0x38, 0x94, 0x43, 0x38, 0x88, 0x03, 0x3b, 0x94,
 | 
					 | 
				
			||||||
  0xc3, 0x2f, 0xbc, 0x83, 0x3c, 0xfc, 0x82, 0x3b, 0xd4, 0x03, 0x3b, 0xb0,
 | 
					 | 
				
			||||||
  0xc3, 0x8c, 0xc8, 0x21, 0x07, 0x7c, 0x70, 0x03, 0x72, 0x10, 0x87, 0x73,
 | 
					 | 
				
			||||||
  0x70, 0x03, 0x7b, 0x08, 0x07, 0x79, 0x60, 0x87, 0x70, 0xc8, 0x87, 0x77,
 | 
					 | 
				
			||||||
  0xa8, 0x07, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x71, 0x20, 0x00, 0x00, 0x18,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00, 0x36, 0xb0, 0x0d, 0x97, 0xef, 0x3c, 0xbe, 0x10, 0x50,
 | 
					 | 
				
			||||||
  0x45, 0x41, 0x44, 0xa5, 0x03, 0x0c, 0x25, 0x61, 0x00, 0x02, 0xe6, 0x17,
 | 
					 | 
				
			||||||
  0xb7, 0x6d, 0x05, 0xd2, 0x70, 0xf9, 0xce, 0xe3, 0x0b, 0x11, 0x01, 0x4c,
 | 
					 | 
				
			||||||
  0x44, 0x08, 0x34, 0xc3, 0x42, 0x58, 0xc0, 0x34, 0x5c, 0xbe, 0xf3, 0xf8,
 | 
					 | 
				
			||||||
  0x8b, 0x03, 0x0c, 0x62, 0xf3, 0x50, 0x93, 0x5f, 0xdc, 0xb6, 0x09, 0x54,
 | 
					 | 
				
			||||||
  0xc3, 0xe5, 0x3b, 0x8f, 0x2f, 0x4d, 0x4e, 0x44, 0xa0, 0xd4, 0xf4, 0x50,
 | 
					 | 
				
			||||||
  0x93, 0x5f, 0xdc, 0xb6, 0x11, 0x48, 0xc3, 0xe5, 0x3b, 0x8f, 0x3f, 0x11,
 | 
					 | 
				
			||||||
  0xd1, 0x84, 0x00, 0x11, 0xe6, 0x17, 0xb7, 0x6d, 0x00, 0x06, 0x03, 0x20,
 | 
					 | 
				
			||||||
  0xcd, 0xf9, 0x02, 0x61, 0x20, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0x13,
 | 
					 | 
				
			||||||
  0x04, 0x41, 0x2c, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x44,
 | 
					 | 
				
			||||||
  0x8a, 0xab, 0x14, 0x0a, 0x61, 0x06, 0xa0, 0xec, 0x4a, 0x8e, 0x4a, 0x09,
 | 
					 | 
				
			||||||
  0x50, 0x1c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23, 0x06, 0x09, 0x00, 0x82,
 | 
					 | 
				
			||||||
  0x60, 0x20, 0x61, 0x03, 0x63, 0x59, 0xc1, 0x88, 0x41, 0x02, 0x80, 0x20,
 | 
					 | 
				
			||||||
  0x18, 0x18, 0xdd, 0x21, 0x5d, 0x8f, 0x31, 0x62, 0x90, 0x00, 0x20, 0x08,
 | 
					 | 
				
			||||||
  0x06, 0x86, 0x87, 0x4c, 0x18, 0x71, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82,
 | 
					 | 
				
			||||||
  0x81, 0xf1, 0x25, 0x54, 0xf6, 0x20, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60,
 | 
					 | 
				
			||||||
  0x60, 0x80, 0x81, 0x52, 0x69, 0x51, 0x32, 0x62, 0x90, 0x00, 0x20, 0x08,
 | 
					 | 
				
			||||||
  0x06, 0x46, 0x18, 0x2c, 0xdc, 0x36, 0x29, 0x23, 0x06, 0x09, 0x00, 0x82,
 | 
					 | 
				
			||||||
  0x60, 0x60, 0x88, 0x01, 0xd3, 0x71, 0xc8, 0x32, 0x62, 0x90, 0x00, 0x20,
 | 
					 | 
				
			||||||
  0x08, 0x06, 0xc6, 0x18, 0x34, 0x5d, 0x57, 0x31, 0x23, 0x06, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x82, 0x60, 0x60, 0x90, 0x81, 0xe3, 0x79, 0x4a, 0x33, 0x62, 0x90, 0x00,
 | 
					 | 
				
			||||||
  0x20, 0x08, 0x06, 0x46, 0x19, 0x3c, 0xdf, 0x57, 0x39, 0x23, 0x06, 0x07,
 | 
					 | 
				
			||||||
  0x00, 0x82, 0x60, 0xd0, 0x90, 0x81, 0xa3, 0x80, 0xc1, 0x68, 0x42, 0x00,
 | 
					 | 
				
			||||||
  0x8c, 0x26, 0x08, 0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3, 0x88,
 | 
					 | 
				
			||||||
  0xc1, 0x01, 0x80, 0x20, 0x18, 0x34, 0x69, 0x30, 0x3d, 0x66, 0x30, 0x9a,
 | 
					 | 
				
			||||||
  0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30, 0x08, 0xa3, 0x09, 0xc4,
 | 
					 | 
				
			||||||
  0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x8d, 0x1b, 0x60, 0x54, 0x19,
 | 
					 | 
				
			||||||
  0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x68,
 | 
					 | 
				
			||||||
  0x02, 0x31, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x33, 0x07, 0x5d,
 | 
					 | 
				
			||||||
  0xc6, 0x06, 0xa3, 0x09, 0x01, 0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83,
 | 
					 | 
				
			||||||
  0x30, 0x9a, 0x40, 0x0c, 0x36, 0x5d, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10,
 | 
					 | 
				
			||||||
  0x04, 0x83, 0x07, 0x0f, 0xce, 0xe0, 0x7a, 0x82, 0x11, 0x03, 0x04, 0x00,
 | 
					 | 
				
			||||||
  0x41, 0x30, 0x78, 0xf2, 0x00, 0x0d, 0xae, 0x25, 0xb0, 0xe0, 0x80, 0x8e,
 | 
					 | 
				
			||||||
  0x59, 0x9b, 0x7c, 0x46, 0x0c, 0x10, 0x00, 0x04, 0xc1, 0xe0, 0xe1, 0x83,
 | 
					 | 
				
			||||||
  0x35, 0xd8, 0xa4, 0x60, 0xc4, 0x00, 0x01, 0x40, 0x10, 0x0c, 0x9e, 0x3e,
 | 
					 | 
				
			||||||
  0x60, 0x83, 0xcd, 0x09, 0x2c, 0x50, 0xa0, 0x63, 0xd9, 0x27, 0x9f, 0x11,
 | 
					 | 
				
			||||||
  0x03, 0x04, 0x00, 0x41, 0x30, 0x78, 0x40, 0xe1, 0x0d, 0xbe, 0x2a, 0x18,
 | 
					 | 
				
			||||||
  0x31, 0x40, 0x00, 0x10, 0x04, 0x83, 0x27, 0x14, 0xe0, 0xe0, 0x8b, 0x02,
 | 
					 | 
				
			||||||
  0x0b, 0x1a, 0xe8, 0x18, 0x37, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10,
 | 
					 | 
				
			||||||
  0x04, 0x83, 0x87, 0x14, 0xe6, 0x60, 0x0c, 0xb0, 0x60, 0xc4, 0x00, 0x01,
 | 
					 | 
				
			||||||
  0x40, 0x10, 0x0c, 0x9e, 0x52, 0xa0, 0x83, 0x31, 0xa0, 0x02, 0x0b, 0x20,
 | 
					 | 
				
			||||||
  0xe8, 0x8c, 0x18, 0x1c, 0x00, 0x08, 0x82, 0x41, 0x83, 0x0a, 0x72, 0xe0,
 | 
					 | 
				
			||||||
  0x06, 0x74, 0x30, 0x9a, 0x10, 0x00, 0xa3, 0x09, 0x42, 0x30, 0x9a, 0x30,
 | 
					 | 
				
			||||||
  0x08, 0xa3, 0x09, 0xc4, 0x30, 0x62, 0x70, 0x00, 0x20, 0x08, 0x06, 0x4d,
 | 
					 | 
				
			||||||
  0x2b, 0xdc, 0xc1, 0x1c, 0xe8, 0xc1, 0x68, 0x42, 0x00, 0x8c, 0x26, 0x08,
 | 
					 | 
				
			||||||
  0xc1, 0x68, 0xc2, 0x20, 0x8c, 0x26, 0x10, 0xc3, 0x88, 0xc1, 0x01, 0x80,
 | 
					 | 
				
			||||||
  0x20, 0x18, 0x34, 0xb2, 0xc0, 0x07, 0x78, 0xd0, 0x0a, 0xa3, 0x09, 0x01,
 | 
					 | 
				
			||||||
  0x30, 0x9a, 0x20, 0x04, 0xa3, 0x09, 0x83, 0x30, 0x9a, 0x40, 0x0c, 0x23,
 | 
					 | 
				
			||||||
  0x06, 0x07, 0x00, 0x82, 0x60, 0xd0, 0xdc, 0x42, 0x28, 0xf4, 0xc1, 0x2b,
 | 
					 | 
				
			||||||
  0x8c, 0x26, 0x04, 0xc0, 0x68, 0x82, 0x10, 0x8c, 0x26, 0x0c, 0xc2, 0x68,
 | 
					 | 
				
			||||||
  0x02, 0x31, 0xd8, 0x14, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04,
 | 
					 | 
				
			||||||
  0x83, 0x87, 0x17, 0x56, 0xc1, 0x7b, 0x82, 0x11, 0x03, 0x04, 0x00, 0x41,
 | 
					 | 
				
			||||||
  0x30, 0x78, 0x7a, 0x81, 0x15, 0xb6, 0x25, 0x18, 0x31, 0x40, 0x00, 0x10,
 | 
					 | 
				
			||||||
  0x04, 0x83, 0xc7, 0x17, 0x5a, 0x01, 0x3b, 0x02, 0xb3, 0xca, 0x40, 0x3e,
 | 
					 | 
				
			||||||
  0x23, 0x06, 0x08, 0x00, 0x82, 0x60, 0xf0, 0x80, 0xc3, 0x2b, 0x88, 0x81,
 | 
					 | 
				
			||||||
  0x14, 0x8c, 0x18, 0x20, 0x00, 0x08, 0x82, 0xc1, 0x13, 0x0e, 0xb0, 0xf0,
 | 
					 | 
				
			||||||
  0x39, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18, 0x3c, 0xe2, 0x10, 0x0b,
 | 
					 | 
				
			||||||
  0x9c, 0x12, 0x58, 0x96, 0x06, 0xf2, 0x19, 0x31, 0x40, 0x00, 0x10, 0x04,
 | 
					 | 
				
			||||||
  0x83, 0x87, 0x1c, 0x66, 0xc1, 0x0c, 0xaa, 0x60, 0xc4, 0x00, 0x01, 0x40,
 | 
					 | 
				
			||||||
  0x10, 0x0c, 0x9e, 0x72, 0xa0, 0x85, 0x31, 0x88, 0x82, 0x11, 0x03, 0x04,
 | 
					 | 
				
			||||||
  0x00, 0x41, 0x30, 0x78, 0xcc, 0xa1, 0x16, 0xc0, 0xa0, 0x09, 0x8c, 0x6b,
 | 
					 | 
				
			||||||
  0x03, 0xf9, 0x8c, 0x18, 0x20, 0x00, 0x08, 0x82, 0xc1, 0x83, 0x0e, 0xb7,
 | 
					 | 
				
			||||||
  0xa0, 0x06, 0x58, 0x30, 0x62, 0x80, 0x00, 0x20, 0x08, 0x06, 0x4f, 0x3a,
 | 
					 | 
				
			||||||
  0xe0, 0xc2, 0x19, 0x50, 0xc1, 0x88, 0x01, 0x02, 0x80, 0x20, 0x18, 0x3c,
 | 
					 | 
				
			||||||
  0xea, 0x90, 0x0b, 0x64, 0x00, 0x05, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60,
 | 
					 | 
				
			||||||
  0x80, 0xb4, 0x43, 0x2e, 0xa0, 0x03, 0x3a, 0x80, 0x43, 0x33, 0x62, 0x90,
 | 
					 | 
				
			||||||
  0x00, 0x20, 0x08, 0x06, 0x48, 0x3b, 0xe4, 0x02, 0x3a, 0xa0, 0x03, 0x2d,
 | 
					 | 
				
			||||||
  0x24, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0xa0,
 | 
					 | 
				
			||||||
  0x03, 0x3a, 0xf8, 0x42, 0x31, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48,
 | 
					 | 
				
			||||||
  0x3b, 0xe4, 0x02, 0x3a, 0xa0, 0xc3, 0x2f, 0x04, 0x23, 0x06, 0x09, 0x00,
 | 
					 | 
				
			||||||
  0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0xa4, 0x03, 0x3a, 0x80, 0x43, 0x2b,
 | 
					 | 
				
			||||||
  0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01, 0xd2, 0x0e, 0xb9, 0x90, 0x0e,
 | 
					 | 
				
			||||||
  0xe8, 0x40, 0x0b, 0xac, 0x30, 0x62, 0x90, 0x00, 0x20, 0x08, 0x06, 0x48,
 | 
					 | 
				
			||||||
  0x3b, 0xe4, 0xc2, 0x38, 0xa0, 0x03, 0x38, 0xc4, 0xc2, 0x88, 0x41, 0x02,
 | 
					 | 
				
			||||||
  0x80, 0x20, 0x18, 0x20, 0xed, 0x90, 0x0b, 0xe3, 0x80, 0x0e, 0xb4, 0x00,
 | 
					 | 
				
			||||||
  0x0b, 0x23, 0x06, 0x09, 0x00, 0x82, 0x60, 0x80, 0xb4, 0x43, 0x2e, 0x8c,
 | 
					 | 
				
			||||||
  0x03, 0x3a, 0xf8, 0xc2, 0x2b, 0x8c, 0x18, 0x24, 0x00, 0x08, 0x82, 0x01,
 | 
					 | 
				
			||||||
  0xd2, 0x0e, 0xb9, 0x30, 0x0e, 0xe8, 0xf0, 0x0b, 0xae, 0x80, 0x00, 0x00,
 | 
					 | 
				
			||||||
  0x00, 0x00, 0x00
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -88,12 +88,34 @@ typedef struct
 | 
				
			|||||||
    Float4X4 projectionAndView;
 | 
					    Float4X4 projectionAndView;
 | 
				
			||||||
} VertexShaderConstants;
 | 
					} VertexShaderConstants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* These should mirror the definitions in D3D12_PixelShader_Common.incl */
 | 
				
			||||||
 | 
					//static const float TONEMAP_NONE = 0;
 | 
				
			||||||
 | 
					//static const float TONEMAP_LINEAR = 1;
 | 
				
			||||||
 | 
					static const float TONEMAP_CHROME = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//static const float TEXTURETYPE_NONE = 0;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_RGB = 1;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NV12 = 2;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NV21 = 3;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_YUV = 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const float INPUTTYPE_UNSPECIFIED = 0;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_SRGB = 1;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_SCRGB = 2;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_HDR10 = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct
 | 
					typedef struct
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float scRGB_output;
 | 
					    float scRGB_output;
 | 
				
			||||||
 | 
					    float texture_type;
 | 
				
			||||||
 | 
					    float input_type;
 | 
				
			||||||
    float color_scale;
 | 
					    float color_scale;
 | 
				
			||||||
    float unused1;
 | 
					
 | 
				
			||||||
    float unused2;
 | 
					    float tonemap_method;
 | 
				
			||||||
 | 
					    float tonemap_factor1;
 | 
				
			||||||
 | 
					    float tonemap_factor2;
 | 
				
			||||||
 | 
					    float sdr_white_point;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    float YCbCr_matrix[16];
 | 
					    float YCbCr_matrix[16];
 | 
				
			||||||
} PixelShaderConstants;
 | 
					} PixelShaderConstants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -119,7 +141,7 @@ typedef struct
 | 
				
			|||||||
    D3D12_RESOURCE_STATES stagingResourceState;
 | 
					    D3D12_RESOURCE_STATES stagingResourceState;
 | 
				
			||||||
    D3D12_FILTER scaleMode;
 | 
					    D3D12_FILTER scaleMode;
 | 
				
			||||||
    D3D12_Shader shader;
 | 
					    D3D12_Shader shader;
 | 
				
			||||||
    const float *shader_params;
 | 
					    const float *YCbCr_matrix;
 | 
				
			||||||
#if SDL_HAVE_YUV
 | 
					#if SDL_HAVE_YUV
 | 
				
			||||||
    /* YV12 texture support */
 | 
					    /* YV12 texture support */
 | 
				
			||||||
    SDL_bool yuv;
 | 
					    SDL_bool yuv;
 | 
				
			||||||
@@ -147,9 +169,7 @@ typedef struct
 | 
				
			|||||||
typedef struct
 | 
					typedef struct
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    D3D12_Shader shader;
 | 
					    D3D12_Shader shader;
 | 
				
			||||||
    SDL_bool scRGB_output;
 | 
					    PixelShaderConstants shader_constants;
 | 
				
			||||||
    float color_scale;
 | 
					 | 
				
			||||||
    const float *shader_params;
 | 
					 | 
				
			||||||
    SDL_BlendMode blendMode;
 | 
					    SDL_BlendMode blendMode;
 | 
				
			||||||
    D3D12_PRIMITIVE_TOPOLOGY_TYPE topology;
 | 
					    D3D12_PRIMITIVE_TOPOLOGY_TYPE topology;
 | 
				
			||||||
    DXGI_FORMAT rtvFormat;
 | 
					    DXGI_FORMAT rtvFormat;
 | 
				
			||||||
@@ -309,6 +329,8 @@ static DXGI_FORMAT SDLPixelFormatToDXGITextureFormat(Uint32 format, Uint32 color
 | 
				
			|||||||
    switch (format) {
 | 
					    switch (format) {
 | 
				
			||||||
    case SDL_PIXELFORMAT_RGBA64_FLOAT:
 | 
					    case SDL_PIXELFORMAT_RGBA64_FLOAT:
 | 
				
			||||||
        return DXGI_FORMAT_R16G16B16A16_FLOAT;
 | 
					        return DXGI_FORMAT_R16G16B16A16_FLOAT;
 | 
				
			||||||
 | 
					    case SDL_PIXELFORMAT_XBGR2101010:
 | 
				
			||||||
 | 
					        return DXGI_FORMAT_R10G10B10A2_UNORM;
 | 
				
			||||||
    case SDL_PIXELFORMAT_ARGB8888:
 | 
					    case SDL_PIXELFORMAT_ARGB8888:
 | 
				
			||||||
        if (colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
 | 
					        if (colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
 | 
				
			||||||
            return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
 | 
					            return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
 | 
				
			||||||
@@ -327,8 +349,6 @@ static DXGI_FORMAT SDLPixelFormatToDXGITextureFormat(Uint32 format, Uint32 color
 | 
				
			|||||||
        return DXGI_FORMAT_NV12;
 | 
					        return DXGI_FORMAT_NV12;
 | 
				
			||||||
    case SDL_PIXELFORMAT_P010:
 | 
					    case SDL_PIXELFORMAT_P010:
 | 
				
			||||||
        return DXGI_FORMAT_P010;
 | 
					        return DXGI_FORMAT_P010;
 | 
				
			||||||
    case SDL_PIXELFORMAT_P016:
 | 
					 | 
				
			||||||
        return DXGI_FORMAT_P016;
 | 
					 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        return DXGI_FORMAT_UNKNOWN;
 | 
					        return DXGI_FORMAT_UNKNOWN;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -339,6 +359,8 @@ static DXGI_FORMAT SDLPixelFormatToDXGIMainResourceViewFormat(Uint32 format, Uin
 | 
				
			|||||||
    switch (format) {
 | 
					    switch (format) {
 | 
				
			||||||
    case SDL_PIXELFORMAT_RGBA64_FLOAT:
 | 
					    case SDL_PIXELFORMAT_RGBA64_FLOAT:
 | 
				
			||||||
        return DXGI_FORMAT_R16G16B16A16_FLOAT;
 | 
					        return DXGI_FORMAT_R16G16B16A16_FLOAT;
 | 
				
			||||||
 | 
					    case SDL_PIXELFORMAT_XBGR2101010:
 | 
				
			||||||
 | 
					        return DXGI_FORMAT_R10G10B10A2_UNORM;
 | 
				
			||||||
    case SDL_PIXELFORMAT_ARGB8888:
 | 
					    case SDL_PIXELFORMAT_ARGB8888:
 | 
				
			||||||
        if (colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
 | 
					        if (colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
 | 
				
			||||||
            return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
 | 
					            return DXGI_FORMAT_B8G8R8A8_UNORM_SRGB;
 | 
				
			||||||
@@ -355,7 +377,6 @@ static DXGI_FORMAT SDLPixelFormatToDXGIMainResourceViewFormat(Uint32 format, Uin
 | 
				
			|||||||
    case SDL_PIXELFORMAT_NV21: /* For the Y texture */
 | 
					    case SDL_PIXELFORMAT_NV21: /* For the Y texture */
 | 
				
			||||||
        return DXGI_FORMAT_R8_UNORM;
 | 
					        return DXGI_FORMAT_R8_UNORM;
 | 
				
			||||||
    case SDL_PIXELFORMAT_P010:  /* For the Y texture */
 | 
					    case SDL_PIXELFORMAT_P010:  /* For the Y texture */
 | 
				
			||||||
    case SDL_PIXELFORMAT_P016:  /* For the Y texture */
 | 
					 | 
				
			||||||
        return DXGI_FORMAT_R16_UNORM;
 | 
					        return DXGI_FORMAT_R16_UNORM;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        return DXGI_FORMAT_UNKNOWN;
 | 
					        return DXGI_FORMAT_UNKNOWN;
 | 
				
			||||||
@@ -1575,14 +1596,17 @@ static int D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
 | 
				
			|||||||
    /* NV12 textures must have even width and height */
 | 
					    /* NV12 textures must have even width and height */
 | 
				
			||||||
    if (texture->format == SDL_PIXELFORMAT_NV12 ||
 | 
					    if (texture->format == SDL_PIXELFORMAT_NV12 ||
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_NV21 ||
 | 
					        texture->format == SDL_PIXELFORMAT_NV21 ||
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_P010 ||
 | 
					        texture->format == SDL_PIXELFORMAT_P010) {
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_P016) {
 | 
					 | 
				
			||||||
        textureDesc.Width = (textureDesc.Width + 1) & ~1;
 | 
					        textureDesc.Width = (textureDesc.Width + 1) & ~1;
 | 
				
			||||||
        textureDesc.Height = (textureDesc.Height + 1) & ~1;
 | 
					        textureDesc.Height = (textureDesc.Height + 1) & ~1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    textureData->w = (int)textureDesc.Width;
 | 
					    textureData->w = (int)textureDesc.Width;
 | 
				
			||||||
    textureData->h = (int)textureDesc.Height;
 | 
					    textureData->h = (int)textureDesc.Height;
 | 
				
			||||||
    textureData->shader = SHADER_RGB;
 | 
					    if (SDL_COLORSPACETRANSFER(texture->colorspace) == SDL_TRANSFER_CHARACTERISTICS_SRGB) {
 | 
				
			||||||
 | 
					        textureData->shader = SHADER_RGB;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        textureData->shader = SHADER_ADVANCED;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (texture->access == SDL_TEXTUREACCESS_TARGET) {
 | 
					    if (texture->access == SDL_TEXTUREACCESS_TARGET) {
 | 
				
			||||||
        textureDesc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET;
 | 
					        textureDesc.Flags = D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET;
 | 
				
			||||||
@@ -1657,54 +1681,29 @@ static int D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
 | 
				
			|||||||
        textureData->mainResourceStateV = D3D12_RESOURCE_STATE_COPY_DEST;
 | 
					        textureData->mainResourceStateV = D3D12_RESOURCE_STATE_COPY_DEST;
 | 
				
			||||||
        SDL_SetProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER, textureData->mainTextureV);
 | 
					        SDL_SetProperty(SDL_GetTextureProperties(texture), SDL_PROP_TEXTURE_D3D12_TEXTURE_V_POINTER, textureData->mainTextureV);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        textureData->shader = SHADER_YUV;
 | 
					        textureData->YCbCr_matrix = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, 8);
 | 
				
			||||||
        textureData->shader_params = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, 8);
 | 
					        if (!textureData->YCbCr_matrix) {
 | 
				
			||||||
        if (!textureData->shader_params) {
 | 
					 | 
				
			||||||
            return SDL_SetError("Unsupported YUV colorspace");
 | 
					            return SDL_SetError("Unsupported YUV colorspace");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (texture->format == SDL_PIXELFORMAT_NV12 ||
 | 
					    if (texture->format == SDL_PIXELFORMAT_NV12 ||
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_NV21 ||
 | 
					        texture->format == SDL_PIXELFORMAT_NV21 ||
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_P010 ||
 | 
					        texture->format == SDL_PIXELFORMAT_P010) {
 | 
				
			||||||
        texture->format == SDL_PIXELFORMAT_P016) {
 | 
					 | 
				
			||||||
        int bits_per_pixel;
 | 
					        int bits_per_pixel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        textureData->nv12 = SDL_TRUE;
 | 
					        textureData->nv12 = SDL_TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch (texture->format) {
 | 
					 | 
				
			||||||
        case SDL_PIXELFORMAT_NV12:
 | 
					 | 
				
			||||||
            textureData->shader = SHADER_NV12;
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case SDL_PIXELFORMAT_NV21:
 | 
					 | 
				
			||||||
            textureData->shader = SHADER_NV21;
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        case SDL_PIXELFORMAT_P010:
 | 
					 | 
				
			||||||
        case SDL_PIXELFORMAT_P016:
 | 
					 | 
				
			||||||
            if(SDL_COLORSPACEPRIMARIES(texture->colorspace) == SDL_COLOR_PRIMARIES_BT2020 &&
 | 
					 | 
				
			||||||
               SDL_COLORSPACETRANSFER(texture->colorspace) == SDL_TRANSFER_CHARACTERISTICS_PQ) {
 | 
					 | 
				
			||||||
                textureData->shader = SHADER_HDR10;
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                return SDL_SetError("Unsupported YUV colorspace");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        default:
 | 
					 | 
				
			||||||
            /* This should never happen because of the check above */
 | 
					 | 
				
			||||||
            return SDL_SetError("Unsupported YUV colorspace");
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        switch (texture->format) {
 | 
					        switch (texture->format) {
 | 
				
			||||||
        case SDL_PIXELFORMAT_P010:
 | 
					        case SDL_PIXELFORMAT_P010:
 | 
				
			||||||
            bits_per_pixel = 10;
 | 
					            bits_per_pixel = 10;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case SDL_PIXELFORMAT_P016:
 | 
					 | 
				
			||||||
            bits_per_pixel = 16;
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            bits_per_pixel = 8;
 | 
					            bits_per_pixel = 8;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        textureData->shader_params = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, bits_per_pixel);
 | 
					        textureData->YCbCr_matrix = SDL_GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, bits_per_pixel);
 | 
				
			||||||
        if (!textureData->shader_params) {
 | 
					        if (!textureData->YCbCr_matrix) {
 | 
				
			||||||
            return SDL_SetError("Unsupported YUV colorspace");
 | 
					            return SDL_SetError("Unsupported YUV colorspace");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -1747,7 +1746,7 @@ static int D3D12_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if (texture->format == SDL_PIXELFORMAT_NV12 || texture->format == SDL_PIXELFORMAT_NV21) {
 | 
					        if (texture->format == SDL_PIXELFORMAT_NV12 || texture->format == SDL_PIXELFORMAT_NV21) {
 | 
				
			||||||
            nvResourceViewDesc.Format = DXGI_FORMAT_R8G8_UNORM;
 | 
					            nvResourceViewDesc.Format = DXGI_FORMAT_R8G8_UNORM;
 | 
				
			||||||
        } else if (texture->format == SDL_PIXELFORMAT_P010 || texture->format == SDL_PIXELFORMAT_P016) {
 | 
					        } else if (texture->format == SDL_PIXELFORMAT_P010) {
 | 
				
			||||||
            nvResourceViewDesc.Format = DXGI_FORMAT_R16G16_UNORM;
 | 
					            nvResourceViewDesc.Format = DXGI_FORMAT_R16G16_UNORM;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        nvResourceViewDesc.Texture2D.PlaneSlice = 1;
 | 
					        nvResourceViewDesc.Texture2D.PlaneSlice = 1;
 | 
				
			||||||
@@ -1837,8 +1836,7 @@ static int D3D12_UpdateTextureInternal(D3D12_RenderData *rendererData, ID3D12Res
 | 
				
			|||||||
    textureDesc.Width = w;
 | 
					    textureDesc.Width = w;
 | 
				
			||||||
    textureDesc.Height = h;
 | 
					    textureDesc.Height = h;
 | 
				
			||||||
    if (textureDesc.Format == DXGI_FORMAT_NV12 ||
 | 
					    if (textureDesc.Format == DXGI_FORMAT_NV12 ||
 | 
				
			||||||
        textureDesc.Format == DXGI_FORMAT_P010 ||
 | 
					        textureDesc.Format == DXGI_FORMAT_P010) {
 | 
				
			||||||
        textureDesc.Format == DXGI_FORMAT_P016) {
 | 
					 | 
				
			||||||
        textureDesc.Width = (textureDesc.Width + 1) & ~1;
 | 
					        textureDesc.Width = (textureDesc.Width + 1) & ~1;
 | 
				
			||||||
        textureDesc.Height = (textureDesc.Height + 1) & ~1;
 | 
					        textureDesc.Height = (textureDesc.Height + 1) & ~1;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -2519,7 +2517,70 @@ static int D3D12_UpdateViewport(SDL_Renderer *renderer)
 | 
				
			|||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, D3D12_Shader shader, const float *shader_params,
 | 
					static void D3D12_SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, const SDL_Texture *texture, PixelShaderConstants *constants)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    float output_headroom;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SDL_zerop(constants);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    constants->scRGB_output = (float)SDL_RenderingLinearSpace(renderer);
 | 
				
			||||||
 | 
					    constants->color_scale = cmd->data.draw.color_scale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (texture) {
 | 
				
			||||||
 | 
					        D3D12_TextureData *textureData = (D3D12_TextureData *)texture->driverdata;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        switch (texture->format) {
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_YV12:
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_IYUV:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_YUV;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_SRGB;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_NV12:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_NV12;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_SRGB;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_NV21:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_NV21;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_SRGB;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_P010:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_NV12;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_HDR10;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_RGB;
 | 
				
			||||||
 | 
					            if (texture->colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
 | 
				
			||||||
 | 
					                constants->input_type = INPUTTYPE_SCRGB;
 | 
				
			||||||
 | 
					            } else if (SDL_COLORSPACEPRIMARIES(texture->colorspace) == SDL_COLOR_PRIMARIES_BT2020 &&
 | 
				
			||||||
 | 
					                       SDL_COLORSPACETRANSFER(texture->colorspace) == SDL_TRANSFER_CHARACTERISTICS_PQ) {
 | 
				
			||||||
 | 
					                constants->input_type = INPUTTYPE_HDR10;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                constants->input_type = INPUTTYPE_UNSPECIFIED;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        constants->sdr_white_point = texture->SDR_white_point;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (renderer->target) {
 | 
				
			||||||
 | 
					            output_headroom = renderer->target->HDR_headroom;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            output_headroom = renderer->HDR_headroom;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (texture->HDR_headroom > output_headroom) {
 | 
				
			||||||
 | 
					            constants->tonemap_method = TONEMAP_CHROME;
 | 
				
			||||||
 | 
					            constants->tonemap_factor1 = (output_headroom / (texture->HDR_headroom * texture->HDR_headroom));
 | 
				
			||||||
 | 
					            constants->tonemap_factor2 = (1.0f / output_headroom);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (textureData->YCbCr_matrix) {
 | 
				
			||||||
 | 
					            SDL_memcpy(constants->YCbCr_matrix, textureData->YCbCr_matrix, sizeof(constants->YCbCr_matrix));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, D3D12_Shader shader, const PixelShaderConstants *shader_constants,
 | 
				
			||||||
                              D3D12_PRIMITIVE_TOPOLOGY_TYPE topology,
 | 
					                              D3D12_PRIMITIVE_TOPOLOGY_TYPE topology,
 | 
				
			||||||
                              const int numShaderResources, D3D12_CPU_DESCRIPTOR_HANDLE *shaderResources,
 | 
					                              const int numShaderResources, D3D12_CPU_DESCRIPTOR_HANDLE *shaderResources,
 | 
				
			||||||
                              D3D12_CPU_DESCRIPTOR_HANDLE *sampler, const Float4X4 *matrix)
 | 
					                              D3D12_CPU_DESCRIPTOR_HANDLE *sampler, const Float4X4 *matrix)
 | 
				
			||||||
@@ -2533,19 +2594,19 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
    int i;
 | 
					    int i;
 | 
				
			||||||
    D3D12_CPU_DESCRIPTOR_HANDLE firstShaderResource;
 | 
					    D3D12_CPU_DESCRIPTOR_HANDLE firstShaderResource;
 | 
				
			||||||
    DXGI_FORMAT rtvFormat = rendererData->renderTargetFormat;
 | 
					    DXGI_FORMAT rtvFormat = rendererData->renderTargetFormat;
 | 
				
			||||||
    SDL_bool scRGB_output = SDL_RenderingLinearSpace(renderer);
 | 
					    D3D12_PipelineState *currentPipelineState = rendererData->currentPipelineState;;
 | 
				
			||||||
    float color_scale = cmd->data.draw.color_scale;
 | 
					    PixelShaderConstants solid_constants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (rendererData->textureRenderTarget) {
 | 
					    if (rendererData->textureRenderTarget) {
 | 
				
			||||||
        rtvFormat = rendererData->textureRenderTarget->mainTextureFormat;
 | 
					        rtvFormat = rendererData->textureRenderTarget->mainTextureFormat;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* See if we need to change the pipeline state */
 | 
					    /* See if we need to change the pipeline state */
 | 
				
			||||||
    if (!rendererData->currentPipelineState ||
 | 
					    if (!currentPipelineState ||
 | 
				
			||||||
        rendererData->currentPipelineState->shader != shader ||
 | 
					        currentPipelineState->shader != shader ||
 | 
				
			||||||
        rendererData->currentPipelineState->blendMode != blendMode ||
 | 
					        currentPipelineState->blendMode != blendMode ||
 | 
				
			||||||
        rendererData->currentPipelineState->topology != topology ||
 | 
					        currentPipelineState->topology != topology ||
 | 
				
			||||||
        rendererData->currentPipelineState->rtvFormat != rtvFormat) {
 | 
					        currentPipelineState->rtvFormat != rtvFormat) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Find the matching pipeline.
 | 
					        /* Find the matching pipeline.
 | 
				
			||||||
           NOTE: Although it may seem inefficient to linearly search through ~450 pipelines
 | 
					           NOTE: Although it may seem inefficient to linearly search through ~450 pipelines
 | 
				
			||||||
@@ -2553,35 +2614,36 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
           It's unlikely that using a hash table would affect performance a measurable amount unless
 | 
					           It's unlikely that using a hash table would affect performance a measurable amount unless
 | 
				
			||||||
           it's a degenerate case that's changing the pipeline state dozens of times per frame.
 | 
					           it's a degenerate case that's changing the pipeline state dozens of times per frame.
 | 
				
			||||||
        */
 | 
					        */
 | 
				
			||||||
        rendererData->currentPipelineState = NULL;
 | 
					        currentPipelineState = NULL;
 | 
				
			||||||
        for (i = 0; i < rendererData->pipelineStateCount; ++i) {
 | 
					        for (i = 0; i < rendererData->pipelineStateCount; ++i) {
 | 
				
			||||||
            D3D12_PipelineState *candidatePiplineState = &rendererData->pipelineStates[i];
 | 
					            D3D12_PipelineState *candidatePiplineState = &rendererData->pipelineStates[i];
 | 
				
			||||||
            if (candidatePiplineState->shader == shader &&
 | 
					            if (candidatePiplineState->shader == shader &&
 | 
				
			||||||
                candidatePiplineState->blendMode == blendMode &&
 | 
					                candidatePiplineState->blendMode == blendMode &&
 | 
				
			||||||
                candidatePiplineState->topology == topology &&
 | 
					                candidatePiplineState->topology == topology &&
 | 
				
			||||||
                candidatePiplineState->rtvFormat == rtvFormat) {
 | 
					                candidatePiplineState->rtvFormat == rtvFormat) {
 | 
				
			||||||
                rendererData->currentPipelineState = candidatePiplineState;
 | 
					                currentPipelineState = candidatePiplineState;
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* If we didn't find a match, create a new one -- it must mean the blend mode is non-standard */
 | 
					        /* If we didn't find a match, create a new one -- it must mean the blend mode is non-standard */
 | 
				
			||||||
        if (!rendererData->currentPipelineState) {
 | 
					        if (!currentPipelineState) {
 | 
				
			||||||
            rendererData->currentPipelineState = D3D12_CreatePipelineState(renderer, shader, blendMode, topology, rtvFormat);
 | 
					            currentPipelineState = D3D12_CreatePipelineState(renderer, shader, blendMode, topology, rtvFormat);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (!rendererData->currentPipelineState) {
 | 
					        if (!currentPipelineState) {
 | 
				
			||||||
            /* The error has been set inside D3D12_CreatePipelineState() */
 | 
					            /* The error has been set inside D3D12_CreatePipelineState() */
 | 
				
			||||||
            return -1;
 | 
					            return -1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        D3D_CALL(rendererData->commandList, SetPipelineState, rendererData->currentPipelineState->pipelineState);
 | 
					        D3D_CALL(rendererData->commandList, SetPipelineState, currentPipelineState->pipelineState);
 | 
				
			||||||
        D3D_CALL(rendererData->commandList, SetGraphicsRootSignature,
 | 
					        D3D_CALL(rendererData->commandList, SetGraphicsRootSignature,
 | 
				
			||||||
                 rendererData->rootSignatures[D3D12_GetRootSignatureType(rendererData->currentPipelineState->shader)]);
 | 
					                 rendererData->rootSignatures[D3D12_GetRootSignatureType(currentPipelineState->shader)]);
 | 
				
			||||||
        /* When we change these we will need to re-upload the constant buffer and reset any descriptors */
 | 
					        /* When we change these we will need to re-upload the constant buffer and reset any descriptors */
 | 
				
			||||||
        updateSubresource = SDL_TRUE;
 | 
					        updateSubresource = SDL_TRUE;
 | 
				
			||||||
        rendererData->currentSampler.ptr = 0;
 | 
					        rendererData->currentSampler.ptr = 0;
 | 
				
			||||||
        rendererData->currentShaderResource.ptr = 0;
 | 
					        rendererData->currentShaderResource.ptr = 0;
 | 
				
			||||||
 | 
					        rendererData->currentPipelineState = currentPipelineState;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (renderTargetView.ptr != rendererData->currentRenderTargetView.ptr) {
 | 
					    if (renderTargetView.ptr != rendererData->currentRenderTargetView.ptr) {
 | 
				
			||||||
@@ -2628,16 +2690,9 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
        case SHADER_RGB:
 | 
					        case SHADER_RGB:
 | 
				
			||||||
            tableIndex = 3;
 | 
					            tableIndex = 3;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
#if SDL_HAVE_YUV
 | 
					        case SHADER_ADVANCED:
 | 
				
			||||||
        case SHADER_YUV:
 | 
					 | 
				
			||||||
            tableIndex = 5;
 | 
					            tableIndex = 5;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        case SHADER_NV12:
 | 
					 | 
				
			||||||
        case SHADER_NV21:
 | 
					 | 
				
			||||||
        case SHADER_HDR10:
 | 
					 | 
				
			||||||
            tableIndex = 4;
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
        default:
 | 
					        default:
 | 
				
			||||||
            return SDL_SetError("[direct3d12] Trying to set a sampler for a shader which doesn't have one");
 | 
					            return SDL_SetError("[direct3d12] Trying to set a sampler for a shader which doesn't have one");
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
@@ -2656,28 +2711,20 @@ static int D3D12_SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
                 0);
 | 
					                 0);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!shader_constants) {
 | 
				
			||||||
 | 
					        D3D12_SetupShaderConstants(renderer, cmd, NULL, &solid_constants);
 | 
				
			||||||
 | 
					        shader_constants = &solid_constants;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (updateSubresource == SDL_TRUE ||
 | 
					    if (updateSubresource == SDL_TRUE ||
 | 
				
			||||||
        scRGB_output != rendererData->currentPipelineState->scRGB_output ||
 | 
					        SDL_memcmp(shader_constants, ¤tPipelineState->shader_constants, sizeof(*shader_constants)) != 0) {
 | 
				
			||||||
        color_scale != rendererData->currentPipelineState->color_scale ||
 | 
					 | 
				
			||||||
        (shader_params && shader_params != rendererData->currentPipelineState->shader_params)) {
 | 
					 | 
				
			||||||
        PixelShaderConstants constants;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        constants.scRGB_output = (float)scRGB_output;
 | 
					 | 
				
			||||||
        constants.color_scale = color_scale;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (shader_params) {
 | 
					 | 
				
			||||||
            SDL_memcpy(constants.YCbCr_matrix, shader_params, sizeof(constants.YCbCr_matrix));
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        D3D_CALL(rendererData->commandList, SetGraphicsRoot32BitConstants,
 | 
					        D3D_CALL(rendererData->commandList, SetGraphicsRoot32BitConstants,
 | 
				
			||||||
                 1,
 | 
					                 1,
 | 
				
			||||||
                 20,
 | 
					                 sizeof(*shader_constants) / sizeof(float),
 | 
				
			||||||
                 &constants,
 | 
					                 shader_constants,
 | 
				
			||||||
                 0);
 | 
					                 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        rendererData->currentPipelineState->scRGB_output = scRGB_output;
 | 
					        SDL_memcpy(¤tPipelineState->shader_constants, shader_constants, sizeof(*shader_constants));
 | 
				
			||||||
        rendererData->currentPipelineState->color_scale = color_scale;
 | 
					 | 
				
			||||||
        rendererData->currentPipelineState->shader_params = shader_params;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
@@ -2689,6 +2736,9 @@ static int D3D12_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
    D3D12_RenderData *rendererData = (D3D12_RenderData *)renderer->driverdata;
 | 
					    D3D12_RenderData *rendererData = (D3D12_RenderData *)renderer->driverdata;
 | 
				
			||||||
    D3D12_TextureData *textureData = (D3D12_TextureData *)texture->driverdata;
 | 
					    D3D12_TextureData *textureData = (D3D12_TextureData *)texture->driverdata;
 | 
				
			||||||
    D3D12_CPU_DESCRIPTOR_HANDLE *textureSampler;
 | 
					    D3D12_CPU_DESCRIPTOR_HANDLE *textureSampler;
 | 
				
			||||||
 | 
					    PixelShaderConstants constants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    D3D12_SetupShaderConstants(renderer, cmd, texture, &constants);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch (textureData->scaleMode) {
 | 
					    switch (textureData->scaleMode) {
 | 
				
			||||||
    case D3D12_FILTER_MIN_MAG_MIP_POINT:
 | 
					    case D3D12_FILTER_MIN_MAG_MIP_POINT:
 | 
				
			||||||
@@ -2716,7 +2766,7 @@ static int D3D12_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
        D3D12_TransitionResource(rendererData, textureData->mainTextureV, textureData->mainResourceStateV, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
 | 
					        D3D12_TransitionResource(rendererData, textureData->mainTextureV, textureData->mainResourceStateV, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
 | 
				
			||||||
        textureData->mainResourceStateV = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
 | 
					        textureData->mainResourceStateV = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return D3D12_SetDrawState(renderer, cmd, textureData->shader, textureData->shader_params, D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE, SDL_arraysize(shaderResources), shaderResources, textureSampler, matrix);
 | 
					        return D3D12_SetDrawState(renderer, cmd, textureData->shader, &constants, D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE, SDL_arraysize(shaderResources), shaderResources, textureSampler, matrix);
 | 
				
			||||||
    } else if (textureData->nv12) {
 | 
					    } else if (textureData->nv12) {
 | 
				
			||||||
        D3D12_CPU_DESCRIPTOR_HANDLE shaderResources[2];
 | 
					        D3D12_CPU_DESCRIPTOR_HANDLE shaderResources[2];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2727,12 +2777,12 @@ static int D3D12_SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *c
 | 
				
			|||||||
        D3D12_TransitionResource(rendererData, textureData->mainTexture, textureData->mainResourceState, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
 | 
					        D3D12_TransitionResource(rendererData, textureData->mainTexture, textureData->mainResourceState, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
 | 
				
			||||||
        textureData->mainResourceState = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
 | 
					        textureData->mainResourceState = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return D3D12_SetDrawState(renderer, cmd, textureData->shader, textureData->shader_params, D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE, SDL_arraysize(shaderResources), shaderResources, textureSampler, matrix);
 | 
					        return D3D12_SetDrawState(renderer, cmd, textureData->shader, &constants, D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE, SDL_arraysize(shaderResources), shaderResources, textureSampler, matrix);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
#endif /* SDL_HAVE_YUV */
 | 
					#endif /* SDL_HAVE_YUV */
 | 
				
			||||||
    D3D12_TransitionResource(rendererData, textureData->mainTexture, textureData->mainResourceState, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
 | 
					    D3D12_TransitionResource(rendererData, textureData->mainTexture, textureData->mainResourceState, D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE);
 | 
				
			||||||
    textureData->mainResourceState = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
 | 
					    textureData->mainResourceState = D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE;
 | 
				
			||||||
    return D3D12_SetDrawState(renderer, cmd, textureData->shader, textureData->shader_params, D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE, 1, &textureData->mainTextureResourceView, textureSampler, matrix);
 | 
					    return D3D12_SetDrawState(renderer, cmd, textureData->shader, &constants, D3D12_PRIMITIVE_TOPOLOGY_TYPE_TRIANGLE, 1, &textureData->mainTextureResourceView, textureSampler, matrix);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void D3D12_DrawPrimitives(SDL_Renderer *renderer, D3D12_PRIMITIVE_TOPOLOGY primitiveTopology, const size_t vertexStart, const size_t vertexCount)
 | 
					static void D3D12_DrawPrimitives(SDL_Renderer *renderer, D3D12_PRIMITIVE_TOPOLOGY primitiveTopology, const size_t vertexStart, const size_t vertexCount)
 | 
				
			||||||
@@ -3228,13 +3278,13 @@ SDL_RenderDriver D3D12_RenderDriver = {
 | 
				
			|||||||
        {                            /* texture_formats */
 | 
					        {                            /* texture_formats */
 | 
				
			||||||
          SDL_PIXELFORMAT_ARGB8888,
 | 
					          SDL_PIXELFORMAT_ARGB8888,
 | 
				
			||||||
          SDL_PIXELFORMAT_XRGB8888,
 | 
					          SDL_PIXELFORMAT_XRGB8888,
 | 
				
			||||||
 | 
					          SDL_PIXELFORMAT_XBGR2101010,
 | 
				
			||||||
          SDL_PIXELFORMAT_RGBA64_FLOAT,
 | 
					          SDL_PIXELFORMAT_RGBA64_FLOAT,
 | 
				
			||||||
          SDL_PIXELFORMAT_YV12,
 | 
					          SDL_PIXELFORMAT_YV12,
 | 
				
			||||||
          SDL_PIXELFORMAT_IYUV,
 | 
					          SDL_PIXELFORMAT_IYUV,
 | 
				
			||||||
          SDL_PIXELFORMAT_NV12,
 | 
					          SDL_PIXELFORMAT_NV12,
 | 
				
			||||||
          SDL_PIXELFORMAT_NV21,
 | 
					          SDL_PIXELFORMAT_NV21,
 | 
				
			||||||
          SDL_PIXELFORMAT_P010,
 | 
					          SDL_PIXELFORMAT_P010 },
 | 
				
			||||||
          SDL_PIXELFORMAT_P016 },
 | 
					 | 
				
			||||||
        16384, /* max_texture_width */
 | 
					        16384, /* max_texture_width */
 | 
				
			||||||
        16384  /* max_texture_height */
 | 
					        16384  /* max_texture_height */
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,20 +39,8 @@
 | 
				
			|||||||
#include "D3D12_PixelShader_Textures.h"
 | 
					#include "D3D12_PixelShader_Textures.h"
 | 
				
			||||||
#undef g_main
 | 
					#undef g_main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define g_main D3D12_PixelShader_YUV
 | 
					#define g_main D3D12_PixelShader_Advanced
 | 
				
			||||||
#include "D3D12_PixelShader_YUV.h"
 | 
					#include "D3D12_PixelShader_Advanced.h"
 | 
				
			||||||
#undef g_main
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define g_main D3D12_PixelShader_NV12
 | 
					 | 
				
			||||||
#include "D3D12_PixelShader_NV12.h"
 | 
					 | 
				
			||||||
#undef g_main
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define g_main D3D12_PixelShader_NV21
 | 
					 | 
				
			||||||
#include "D3D12_PixelShader_NV21.h"
 | 
					 | 
				
			||||||
#undef g_main
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define g_main D3D12_PixelShader_HDR10
 | 
					 | 
				
			||||||
#include "D3D12_PixelShader_HDR10.h"
 | 
					 | 
				
			||||||
#undef g_main
 | 
					#undef g_main
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -64,13 +52,9 @@
 | 
				
			|||||||
#include "D3D12_VertexShader_Texture.h"
 | 
					#include "D3D12_VertexShader_Texture.h"
 | 
				
			||||||
#undef g_mainTexture
 | 
					#undef g_mainTexture
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define g_mainYUV D3D12_VertexShader_YUV
 | 
					#define g_mainAdvanced D3D12_VertexShader_Advanced
 | 
				
			||||||
#include "D3D12_VertexShader_YUV.h"
 | 
					#include "D3D12_VertexShader_Advanced.h"
 | 
				
			||||||
#undef g_mainYUV
 | 
					#undef g_mainAdvanced
 | 
				
			||||||
 | 
					 | 
				
			||||||
#define g_mainNV D3D12_VertexShader_NV
 | 
					 | 
				
			||||||
#include "D3D12_VertexShader_NV.h"
 | 
					 | 
				
			||||||
#undef g_mainNV
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define g_ColorRS D3D12_RootSig_Color
 | 
					#define g_ColorRS D3D12_RootSig_Color
 | 
				
			||||||
@@ -81,13 +65,9 @@
 | 
				
			|||||||
#include "D3D12_RootSig_Texture.h"
 | 
					#include "D3D12_RootSig_Texture.h"
 | 
				
			||||||
#undef g_TextureRS
 | 
					#undef g_TextureRS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define g_YUVRS D3D12_RootSig_YUV
 | 
					#define g_AdvancedRS D3D12_RootSig_Advanced
 | 
				
			||||||
#include "D3D12_RootSig_YUV.h"
 | 
					#include "D3D12_RootSig_Advanced.h"
 | 
				
			||||||
#undef g_YUVRS
 | 
					#undef g_AdvancedRS
 | 
				
			||||||
 | 
					 | 
				
			||||||
#define g_NVRS D3D12_RootSig_NV
 | 
					 | 
				
			||||||
#include "D3D12_RootSig_NV.h"
 | 
					 | 
				
			||||||
#undef g_NVRS
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct
 | 
					static struct
 | 
				
			||||||
@@ -104,20 +84,9 @@ static struct
 | 
				
			|||||||
    { D3D12_PixelShader_Textures, sizeof(D3D12_PixelShader_Textures),
 | 
					    { D3D12_PixelShader_Textures, sizeof(D3D12_PixelShader_Textures),
 | 
				
			||||||
      D3D12_VertexShader_Textures, sizeof(D3D12_VertexShader_Textures),
 | 
					      D3D12_VertexShader_Textures, sizeof(D3D12_VertexShader_Textures),
 | 
				
			||||||
      ROOTSIG_TEXTURE },
 | 
					      ROOTSIG_TEXTURE },
 | 
				
			||||||
#if SDL_HAVE_YUV
 | 
					    { D3D12_PixelShader_Advanced, sizeof(D3D12_PixelShader_Advanced),
 | 
				
			||||||
    { D3D12_PixelShader_YUV, sizeof(D3D12_PixelShader_YUV),
 | 
					      D3D12_VertexShader_Advanced, sizeof(D3D12_VertexShader_Advanced),
 | 
				
			||||||
      D3D12_VertexShader_YUV, sizeof(D3D12_VertexShader_YUV),
 | 
					      ROOTSIG_ADVANCED },
 | 
				
			||||||
      ROOTSIG_YUV },
 | 
					 | 
				
			||||||
    { D3D12_PixelShader_NV12, sizeof(D3D12_PixelShader_NV12),
 | 
					 | 
				
			||||||
      D3D12_VertexShader_NV, sizeof(D3D12_VertexShader_NV),
 | 
					 | 
				
			||||||
      ROOTSIG_NV },
 | 
					 | 
				
			||||||
    { D3D12_PixelShader_NV21, sizeof(D3D12_PixelShader_NV21),
 | 
					 | 
				
			||||||
      D3D12_VertexShader_NV, sizeof(D3D12_VertexShader_NV),
 | 
					 | 
				
			||||||
      ROOTSIG_NV },
 | 
					 | 
				
			||||||
    { D3D12_PixelShader_HDR10, sizeof(D3D12_PixelShader_HDR10),
 | 
					 | 
				
			||||||
      D3D12_VertexShader_NV, sizeof(D3D12_VertexShader_NV),
 | 
					 | 
				
			||||||
      ROOTSIG_NV },
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static struct
 | 
					static struct
 | 
				
			||||||
@@ -127,10 +96,7 @@ static struct
 | 
				
			|||||||
} D3D12_rootsigs[NUM_ROOTSIGS] = {
 | 
					} D3D12_rootsigs[NUM_ROOTSIGS] = {
 | 
				
			||||||
    { D3D12_RootSig_Color, sizeof(D3D12_RootSig_Color) },
 | 
					    { D3D12_RootSig_Color, sizeof(D3D12_RootSig_Color) },
 | 
				
			||||||
    { D3D12_RootSig_Texture, sizeof(D3D12_RootSig_Texture) },
 | 
					    { D3D12_RootSig_Texture, sizeof(D3D12_RootSig_Texture) },
 | 
				
			||||||
#if SDL_HAVE_YUV
 | 
					    { D3D12_RootSig_Advanced, sizeof(D3D12_RootSig_Advanced) },
 | 
				
			||||||
    { D3D12_RootSig_YUV, sizeof(D3D12_RootSig_YUV) },
 | 
					 | 
				
			||||||
    { D3D12_RootSig_NV, sizeof(D3D12_RootSig_NV) },
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void D3D12_GetVertexShader(D3D12_Shader shader, D3D12_SHADER_BYTECODE *outBytecode)
 | 
					void D3D12_GetVertexShader(D3D12_Shader shader, D3D12_SHADER_BYTECODE *outBytecode)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,12 +31,7 @@ typedef enum
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    SHADER_SOLID,
 | 
					    SHADER_SOLID,
 | 
				
			||||||
    SHADER_RGB,
 | 
					    SHADER_RGB,
 | 
				
			||||||
#if SDL_HAVE_YUV
 | 
					    SHADER_ADVANCED,
 | 
				
			||||||
    SHADER_YUV,
 | 
					 | 
				
			||||||
    SHADER_NV12,
 | 
					 | 
				
			||||||
    SHADER_NV21,
 | 
					 | 
				
			||||||
    SHADER_HDR10,
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    NUM_SHADERS
 | 
					    NUM_SHADERS
 | 
				
			||||||
} D3D12_Shader;
 | 
					} D3D12_Shader;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -44,10 +39,7 @@ typedef enum
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    ROOTSIG_COLOR,
 | 
					    ROOTSIG_COLOR,
 | 
				
			||||||
    ROOTSIG_TEXTURE,
 | 
					    ROOTSIG_TEXTURE,
 | 
				
			||||||
#if SDL_HAVE_YUV
 | 
					    ROOTSIG_ADVANCED,
 | 
				
			||||||
    ROOTSIG_YUV,
 | 
					 | 
				
			||||||
    ROOTSIG_NV,
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    NUM_ROOTSIGS
 | 
					    NUM_ROOTSIGS
 | 
				
			||||||
} D3D12_RootSignature;
 | 
					} D3D12_RootSignature;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,11 @@
 | 
				
			|||||||
dxc  -E main -T ps_6_0 -Fh D3D12_PixelShader_Colors.h D3D12_PixelShader_Colors.hlsl
 | 
					dxc  -E main -T ps_6_0 -Fh D3D12_PixelShader_Colors.h D3D12_PixelShader_Colors.hlsl
 | 
				
			||||||
dxc  -E main -T ps_6_0 -Fh D3D12_PixelShader_Textures.h D3D12_PixelShader_Textures.hlsl
 | 
					dxc  -E main -T ps_6_0 -Fh D3D12_PixelShader_Textures.h D3D12_PixelShader_Textures.hlsl
 | 
				
			||||||
dxc  -E main -T ps_6_0 -Fh D3D12_PixelShader_YUV.h D3D12_PixelShader_YUV.hlsl
 | 
					dxc  -E main -T ps_6_0 -Fh D3D12_PixelShader_Advanced.h D3D12_PixelShader_Advanced.hlsl
 | 
				
			||||||
dxc  -E main -T ps_6_0 -Fh D3D12_PixelShader_NV12.h D3D12_PixelShader_NV12.hlsl
 | 
					 | 
				
			||||||
dxc  -E main -T ps_6_0 -Fh D3D12_PixelShader_NV21.h D3D12_PixelShader_NV21.hlsl
 | 
					 | 
				
			||||||
dxc  -E main -T ps_6_0 -Fh D3D12_PixelShader_HDR10.h D3D12_PixelShader_HDR10.hlsl
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
dxc -E mainColor -T vs_6_0 -Fh D3D12_VertexShader_Color.h D3D12_VertexShader.hlsl
 | 
					dxc -E mainColor -T vs_6_0 -Fh D3D12_VertexShader_Color.h D3D12_VertexShader.hlsl
 | 
				
			||||||
dxc -E mainTexture -T vs_6_0 -Fh D3D12_VertexShader_Texture.h D3D12_VertexShader.hlsl
 | 
					dxc -E mainTexture -T vs_6_0 -Fh D3D12_VertexShader_Texture.h D3D12_VertexShader.hlsl
 | 
				
			||||||
dxc -E mainYUV -T vs_6_0 -Fh D3D12_VertexShader_YUV.h D3D12_VertexShader.hlsl
 | 
					dxc -E mainAdvanced -T vs_6_0 -Fh D3D12_VertexShader_Advanced.h D3D12_VertexShader.hlsl
 | 
				
			||||||
dxc -E mainNV -T vs_6_0 -Fh D3D12_VertexShader_NV.h D3D12_VertexShader.hlsl
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
dxc -E ColorRS -T rootsig_1_1 -rootsig-define ColorRS -Fh D3D12_RootSig_Color.h D3D12_VertexShader.hlsl
 | 
					dxc -E ColorRS -T rootsig_1_1 -rootsig-define ColorRS -Fh D3D12_RootSig_Color.h D3D12_VertexShader.hlsl
 | 
				
			||||||
dxc -E TextureRS -T rootsig_1_1 -rootsig-define TextureRS -Fh D3D12_RootSig_Texture.h D3D12_VertexShader.hlsl
 | 
					dxc -E TextureRS -T rootsig_1_1 -rootsig-define TextureRS -Fh D3D12_RootSig_Texture.h D3D12_VertexShader.hlsl
 | 
				
			||||||
dxc -E YUVRS -T rootsig_1_1 -rootsig-define YUVRS -Fh D3D12_RootSig_YUV.h D3D12_VertexShader.hlsl
 | 
					dxc -E AdvancedRS -T rootsig_1_1 -rootsig-define AdvancedRS -Fh D3D12_RootSig_Advanced.h D3D12_VertexShader.hlsl
 | 
				
			||||||
dxc -E NVRS -T rootsig_1_1 -rootsig-define NVRS -Fh D3D12_RootSig_NV.h D3D12_VertexShader.hlsl
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -91,9 +91,7 @@ typedef enum SDL_MetalFragmentFunction
 | 
				
			|||||||
    SDL_METAL_FRAGMENT_SOLID = 0,
 | 
					    SDL_METAL_FRAGMENT_SOLID = 0,
 | 
				
			||||||
    SDL_METAL_FRAGMENT_COPY,
 | 
					    SDL_METAL_FRAGMENT_COPY,
 | 
				
			||||||
    SDL_METAL_FRAGMENT_YUV,
 | 
					    SDL_METAL_FRAGMENT_YUV,
 | 
				
			||||||
    SDL_METAL_FRAGMENT_NV12,
 | 
					    SDL_METAL_FRAGMENT_ADVANCED,
 | 
				
			||||||
    SDL_METAL_FRAGMENT_NV21,
 | 
					 | 
				
			||||||
    SDL_METAL_FRAGMENT_HDR10,
 | 
					 | 
				
			||||||
    SDL_METAL_FRAGMENT_COUNT,
 | 
					    SDL_METAL_FRAGMENT_COUNT,
 | 
				
			||||||
} SDL_MetalFragmentFunction;
 | 
					} SDL_MetalFragmentFunction;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -247,12 +245,8 @@ static NSString *GetFragmentFunctionName(SDL_MetalFragmentFunction function)
 | 
				
			|||||||
        return @"SDL_Copy_fragment";
 | 
					        return @"SDL_Copy_fragment";
 | 
				
			||||||
    case SDL_METAL_FRAGMENT_YUV:
 | 
					    case SDL_METAL_FRAGMENT_YUV:
 | 
				
			||||||
        return @"SDL_YUV_fragment";
 | 
					        return @"SDL_YUV_fragment";
 | 
				
			||||||
    case SDL_METAL_FRAGMENT_NV12:
 | 
					    case SDL_METAL_FRAGMENT_ADVANCED:
 | 
				
			||||||
        return @"SDL_NV12_fragment";
 | 
					        return @"SDL_Advanced_fragment";
 | 
				
			||||||
    case SDL_METAL_FRAGMENT_NV21:
 | 
					 | 
				
			||||||
        return @"SDL_NV21_fragment";
 | 
					 | 
				
			||||||
    case SDL_METAL_FRAGMENT_HDR10:
 | 
					 | 
				
			||||||
        return @"SDL_HDR10_fragment";
 | 
					 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        return nil;
 | 
					        return nil;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -390,9 +384,7 @@ void MakeShaderPipelines(METAL_RenderData *data, METAL_ShaderPipelines *pipeline
 | 
				
			|||||||
    MakePipelineCache(data, &pipelines->caches[SDL_METAL_FRAGMENT_SOLID], "SDL primitives pipeline", rtformat, SDL_METAL_VERTEX_SOLID, SDL_METAL_FRAGMENT_SOLID);
 | 
					    MakePipelineCache(data, &pipelines->caches[SDL_METAL_FRAGMENT_SOLID], "SDL primitives pipeline", rtformat, SDL_METAL_VERTEX_SOLID, SDL_METAL_FRAGMENT_SOLID);
 | 
				
			||||||
    MakePipelineCache(data, &pipelines->caches[SDL_METAL_FRAGMENT_COPY], "SDL copy pipeline", rtformat, SDL_METAL_VERTEX_COPY, SDL_METAL_FRAGMENT_COPY);
 | 
					    MakePipelineCache(data, &pipelines->caches[SDL_METAL_FRAGMENT_COPY], "SDL copy pipeline", rtformat, SDL_METAL_VERTEX_COPY, SDL_METAL_FRAGMENT_COPY);
 | 
				
			||||||
    MakePipelineCache(data, &pipelines->caches[SDL_METAL_FRAGMENT_YUV], "SDL YUV pipeline", rtformat, SDL_METAL_VERTEX_COPY, SDL_METAL_FRAGMENT_YUV);
 | 
					    MakePipelineCache(data, &pipelines->caches[SDL_METAL_FRAGMENT_YUV], "SDL YUV pipeline", rtformat, SDL_METAL_VERTEX_COPY, SDL_METAL_FRAGMENT_YUV);
 | 
				
			||||||
    MakePipelineCache(data, &pipelines->caches[SDL_METAL_FRAGMENT_NV12], "SDL NV12 pipeline", rtformat, SDL_METAL_VERTEX_COPY, SDL_METAL_FRAGMENT_NV12);
 | 
					    MakePipelineCache(data, &pipelines->caches[SDL_METAL_FRAGMENT_ADVANCED], "SDL advanced pipeline", rtformat, SDL_METAL_VERTEX_COPY, SDL_METAL_FRAGMENT_ADVANCED);
 | 
				
			||||||
    MakePipelineCache(data, &pipelines->caches[SDL_METAL_FRAGMENT_NV21], "SDL NV21 pipeline", rtformat, SDL_METAL_VERTEX_COPY, SDL_METAL_FRAGMENT_NV21);
 | 
					 | 
				
			||||||
    MakePipelineCache(data, &pipelines->caches[SDL_METAL_FRAGMENT_HDR10], "SDL HDR10 pipeline", rtformat, SDL_METAL_VERTEX_COPY, SDL_METAL_FRAGMENT_HDR10);
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static METAL_ShaderPipelines *ChooseShaderPipelines(METAL_RenderData *data, MTLPixelFormat rtformat)
 | 
					static METAL_ShaderPipelines *ChooseShaderPipelines(METAL_RenderData *data, MTLPixelFormat rtformat)
 | 
				
			||||||
@@ -637,7 +629,8 @@ static int METAL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
 | 
				
			|||||||
        MTLPixelFormat pixfmt;
 | 
					        MTLPixelFormat pixfmt;
 | 
				
			||||||
        MTLTextureDescriptor *mtltexdesc;
 | 
					        MTLTextureDescriptor *mtltexdesc;
 | 
				
			||||||
        id<MTLTexture> mtltexture, mtltextureUv;
 | 
					        id<MTLTexture> mtltexture, mtltextureUv;
 | 
				
			||||||
        BOOL yuv, nv12;
 | 
					        BOOL yuv = FALSE;
 | 
				
			||||||
 | 
					        BOOL nv12 = FALSE;
 | 
				
			||||||
        METAL_TextureData *texturedata;
 | 
					        METAL_TextureData *texturedata;
 | 
				
			||||||
        CVPixelBufferRef pixelbuffer = nil;
 | 
					        CVPixelBufferRef pixelbuffer = nil;
 | 
				
			||||||
        IOSurfaceRef surface = nil;
 | 
					        IOSurfaceRef surface = nil;
 | 
				
			||||||
@@ -665,6 +658,9 @@ static int METAL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
 | 
				
			|||||||
                pixfmt = MTLPixelFormatBGRA8Unorm;
 | 
					                pixfmt = MTLPixelFormatBGRA8Unorm;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_XBGR2101010:
 | 
				
			||||||
 | 
					            pixfmt = MTLPixelFormatRGB10A2Unorm;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
        case SDL_PIXELFORMAT_IYUV:
 | 
					        case SDL_PIXELFORMAT_IYUV:
 | 
				
			||||||
        case SDL_PIXELFORMAT_YV12:
 | 
					        case SDL_PIXELFORMAT_YV12:
 | 
				
			||||||
        case SDL_PIXELFORMAT_NV12:
 | 
					        case SDL_PIXELFORMAT_NV12:
 | 
				
			||||||
@@ -745,30 +741,17 @@ static int METAL_CreateTexture(SDL_Renderer *renderer, SDL_Texture *texture, SDL
 | 
				
			|||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            texturedata.mtlsampler = data.mtlsamplerlinear;
 | 
					            texturedata.mtlsampler = data.mtlsamplerlinear;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (SDL_COLORSPACETRANSFER(texture->colorspace) == SDL_TRANSFER_CHARACTERISTICS_SRGB) {
 | 
				
			||||||
 | 
					            texturedata.fragmentFunction = SDL_METAL_FRAGMENT_COPY;
 | 
				
			||||||
 | 
					        } else if (yuv) {
 | 
				
			||||||
 | 
					            texturedata.fragmentFunction = SDL_METAL_FRAGMENT_YUV;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            texturedata.fragmentFunction = SDL_METAL_FRAGMENT_ADVANCED;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        texturedata.mtltexture = mtltexture;
 | 
					        texturedata.mtltexture = mtltexture;
 | 
				
			||||||
        texturedata.mtltextureUv = mtltextureUv;
 | 
					        texturedata.mtltextureUv = mtltextureUv;
 | 
				
			||||||
#if SDL_HAVE_YUV
 | 
					 | 
				
			||||||
        texturedata.yuv = yuv;
 | 
					        texturedata.yuv = yuv;
 | 
				
			||||||
        texturedata.nv12 = nv12;
 | 
					        texturedata.nv12 = nv12;
 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (yuv) {
 | 
					 | 
				
			||||||
            texturedata.fragmentFunction = SDL_METAL_FRAGMENT_YUV;
 | 
					 | 
				
			||||||
        } else if (texture->format == SDL_PIXELFORMAT_NV12) {
 | 
					 | 
				
			||||||
            texturedata.fragmentFunction = SDL_METAL_FRAGMENT_NV12;
 | 
					 | 
				
			||||||
        } else if (texture->format == SDL_PIXELFORMAT_NV21) {
 | 
					 | 
				
			||||||
            texturedata.fragmentFunction = SDL_METAL_FRAGMENT_NV21;
 | 
					 | 
				
			||||||
        } else if (texture->format == SDL_PIXELFORMAT_P010) {
 | 
					 | 
				
			||||||
            if(SDL_COLORSPACEPRIMARIES(texture->colorspace) == SDL_COLOR_PRIMARIES_BT2020 &&
 | 
					 | 
				
			||||||
               SDL_COLORSPACETRANSFER(texture->colorspace) == SDL_TRANSFER_CHARACTERISTICS_PQ) {
 | 
					 | 
				
			||||||
                texturedata.fragmentFunction = SDL_METAL_FRAGMENT_HDR10;
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                return SDL_SetError("Unsupported YUV colorspace");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        } else
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            texturedata.fragmentFunction = SDL_METAL_FRAGMENT_COPY;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
#if SDL_HAVE_YUV
 | 
					#if SDL_HAVE_YUV
 | 
				
			||||||
        if (yuv || nv12) {
 | 
					        if (yuv || nv12) {
 | 
				
			||||||
            size_t offset = GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, 8);
 | 
					            size_t offset = GetYCbCRtoRGBConversionMatrix(texture->colorspace, texture->w, texture->h, 8);
 | 
				
			||||||
@@ -1167,20 +1150,6 @@ static int METAL_QueueNoOp(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
 | 
				
			|||||||
    return 0; /* nothing to do in this backend. */
 | 
					    return 0; /* nothing to do in this backend. */
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int METAL_QueueSetColorScale(SDL_Renderer *renderer, SDL_RenderCommand *cmd)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    const size_t vertlen = (2 * sizeof(float));
 | 
					 | 
				
			||||||
    float *verts = (float *)SDL_AllocateRenderVertices(renderer, vertlen, DEVICE_ALIGN(8), &cmd->data.color.first);
 | 
					 | 
				
			||||||
    if (!verts) {
 | 
					 | 
				
			||||||
        return -1;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    *verts++ = (float)SDL_RenderingLinearSpace(renderer);
 | 
					 | 
				
			||||||
    *verts++ = cmd->data.color.color_scale;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static int METAL_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count)
 | 
					static int METAL_QueueDrawPoints(SDL_Renderer *renderer, SDL_RenderCommand *cmd, const SDL_FPoint *points, int count)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    SDL_FColor color = cmd->data.draw.color;
 | 
					    SDL_FColor color = cmd->data.draw.color;
 | 
				
			||||||
@@ -1320,6 +1289,35 @@ static int METAL_QueueGeometry(SDL_Renderer *renderer, SDL_RenderCommand *cmd, S
 | 
				
			|||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* These should mirror the definitions in SDL_shaders_metal.metal */
 | 
				
			||||||
 | 
					//static const float TONEMAP_NONE = 0;
 | 
				
			||||||
 | 
					//static const float TONEMAP_LINEAR = 1;
 | 
				
			||||||
 | 
					static const float TONEMAP_CHROME = 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					//static const float TEXTURETYPE_NONE = 0;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_RGB = 1;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NV12 = 2;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_NV21 = 3;
 | 
				
			||||||
 | 
					static const float TEXTURETYPE_YUV = 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const float INPUTTYPE_UNSPECIFIED = 0;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_SRGB = 1;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_SCRGB = 2;
 | 
				
			||||||
 | 
					static const float INPUTTYPE_HDR10 = 3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    float scRGB_output;
 | 
				
			||||||
 | 
					    float texture_type;
 | 
				
			||||||
 | 
					    float input_type;
 | 
				
			||||||
 | 
					    float color_scale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    float tonemap_method;
 | 
				
			||||||
 | 
					    float tonemap_factor1;
 | 
				
			||||||
 | 
					    float tonemap_factor2;
 | 
				
			||||||
 | 
					    float sdr_white_point;
 | 
				
			||||||
 | 
					} PixelShaderConstants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct
 | 
					typedef struct
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    __unsafe_unretained id<MTLRenderPipelineState> pipeline;
 | 
					    __unsafe_unretained id<MTLRenderPipelineState> pipeline;
 | 
				
			||||||
@@ -1332,17 +1330,74 @@ typedef struct
 | 
				
			|||||||
    SDL_bool viewport_dirty;
 | 
					    SDL_bool viewport_dirty;
 | 
				
			||||||
    SDL_Rect viewport;
 | 
					    SDL_Rect viewport;
 | 
				
			||||||
    size_t projection_offset;
 | 
					    size_t projection_offset;
 | 
				
			||||||
    SDL_bool color_scale_dirty;
 | 
					    SDL_bool shader_constants_dirty;
 | 
				
			||||||
    size_t color_scale_offset;
 | 
					    PixelShaderConstants shader_constants;
 | 
				
			||||||
} METAL_DrawStateCache;
 | 
					} METAL_DrawStateCache;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static SDL_bool SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, const SDL_MetalFragmentFunction shader,
 | 
					static void SetupShaderConstants(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, const SDL_Texture *texture, PixelShaderConstants *constants)
 | 
				
			||||||
                             const size_t constants_offset, id<MTLBuffer> mtlbufvertex, METAL_DrawStateCache *statecache)
 | 
					{
 | 
				
			||||||
 | 
					    float output_headroom;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SDL_zerop(constants);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    constants->scRGB_output = (float)SDL_RenderingLinearSpace(renderer);
 | 
				
			||||||
 | 
					    constants->color_scale = cmd->data.draw.color_scale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (texture) {
 | 
				
			||||||
 | 
					        switch (texture->format) {
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_YV12:
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_IYUV:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_YUV;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_SRGB;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_NV12:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_NV12;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_SRGB;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_NV21:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_NV21;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_SRGB;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        case SDL_PIXELFORMAT_P010:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_NV12;
 | 
				
			||||||
 | 
					            constants->input_type = INPUTTYPE_HDR10;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            constants->texture_type = TEXTURETYPE_RGB;
 | 
				
			||||||
 | 
					            if (texture->colorspace == SDL_COLORSPACE_SRGB_LINEAR) {
 | 
				
			||||||
 | 
					                constants->input_type = INPUTTYPE_SCRGB;
 | 
				
			||||||
 | 
					            } else if (SDL_COLORSPACEPRIMARIES(texture->colorspace) == SDL_COLOR_PRIMARIES_BT2020 &&
 | 
				
			||||||
 | 
					                       SDL_COLORSPACETRANSFER(texture->colorspace) == SDL_TRANSFER_CHARACTERISTICS_PQ) {
 | 
				
			||||||
 | 
					                constants->input_type = INPUTTYPE_HDR10;
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                constants->input_type = INPUTTYPE_UNSPECIFIED;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        constants->sdr_white_point = texture->SDR_white_point;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (renderer->target) {
 | 
				
			||||||
 | 
					            output_headroom = renderer->target->HDR_headroom;
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            output_headroom = renderer->HDR_headroom;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (texture->HDR_headroom > output_headroom) {
 | 
				
			||||||
 | 
					            constants->tonemap_method = TONEMAP_CHROME;
 | 
				
			||||||
 | 
					            constants->tonemap_factor1 = (output_headroom / (texture->HDR_headroom * texture->HDR_headroom));
 | 
				
			||||||
 | 
					            constants->tonemap_factor2 = (1.0f / output_headroom);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static SDL_bool SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cmd, const SDL_MetalFragmentFunction shader, PixelShaderConstants *shader_constants, const size_t constants_offset, id<MTLBuffer> mtlbufvertex, METAL_DrawStateCache *statecache)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    METAL_RenderData *data = (__bridge METAL_RenderData *)renderer->driverdata;
 | 
					    METAL_RenderData *data = (__bridge METAL_RenderData *)renderer->driverdata;
 | 
				
			||||||
    const SDL_BlendMode blend = cmd->data.draw.blend;
 | 
					    const SDL_BlendMode blend = cmd->data.draw.blend;
 | 
				
			||||||
    size_t first = cmd->data.draw.first;
 | 
					    size_t first = cmd->data.draw.first;
 | 
				
			||||||
    id<MTLRenderPipelineState> newpipeline;
 | 
					    id<MTLRenderPipelineState> newpipeline;
 | 
				
			||||||
 | 
					    PixelShaderConstants solid_constants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!METAL_ActivateRenderCommandEncoder(renderer, MTLLoadActionLoad, NULL, statecache->vertex_buffer)) {
 | 
					    if (!METAL_ActivateRenderCommandEncoder(renderer, MTLLoadActionLoad, NULL, statecache->vertex_buffer)) {
 | 
				
			||||||
        return SDL_FALSE;
 | 
					        return SDL_FALSE;
 | 
				
			||||||
@@ -1394,17 +1449,28 @@ static SDL_bool SetDrawState(SDL_Renderer *renderer, const SDL_RenderCommand *cm
 | 
				
			|||||||
        statecache->cliprect_dirty = SDL_FALSE;
 | 
					        statecache->cliprect_dirty = SDL_FALSE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (statecache->color_scale_dirty) {
 | 
					 | 
				
			||||||
        [data.mtlcmdencoder setFragmentBufferOffset:statecache->color_scale_offset atIndex:0];
 | 
					 | 
				
			||||||
        statecache->color_scale_dirty = SDL_FALSE;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    newpipeline = ChoosePipelineState(data, data.activepipelines, shader, blend);
 | 
					    newpipeline = ChoosePipelineState(data, data.activepipelines, shader, blend);
 | 
				
			||||||
    if (newpipeline != statecache->pipeline) {
 | 
					    if (newpipeline != statecache->pipeline) {
 | 
				
			||||||
        [data.mtlcmdencoder setRenderPipelineState:newpipeline];
 | 
					        [data.mtlcmdencoder setRenderPipelineState:newpipeline];
 | 
				
			||||||
        statecache->pipeline = newpipeline;
 | 
					        statecache->pipeline = newpipeline;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!shader_constants) {
 | 
				
			||||||
 | 
					        SetupShaderConstants(renderer, cmd, NULL, &solid_constants);
 | 
				
			||||||
 | 
					        shader_constants = &solid_constants;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (statecache->shader_constants_dirty ||
 | 
				
			||||||
 | 
					        SDL_memcmp(shader_constants, &statecache->shader_constants, sizeof(*shader_constants)) != 0) {
 | 
				
			||||||
 | 
					        id<MTLBuffer> mtlbufconstants = [data.mtldevice newBufferWithLength:sizeof(*shader_constants) options:MTLResourceStorageModeShared];
 | 
				
			||||||
 | 
					        mtlbufconstants.label = @"SDL shader constants data";
 | 
				
			||||||
 | 
					        SDL_memcpy([mtlbufconstants contents], shader_constants, sizeof(*shader_constants));
 | 
				
			||||||
 | 
					        [data.mtlcmdencoder setFragmentBuffer:mtlbufconstants offset:0 atIndex:0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        SDL_memcpy(&statecache->shader_constants, shader_constants, sizeof(*shader_constants));
 | 
				
			||||||
 | 
					        statecache->shader_constants_dirty = SDL_FALSE;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (constants_offset != statecache->constants_offset) {
 | 
					    if (constants_offset != statecache->constants_offset) {
 | 
				
			||||||
        if (constants_offset != CONSTANTS_OFFSET_INVALID) {
 | 
					        if (constants_offset != CONSTANTS_OFFSET_INVALID) {
 | 
				
			||||||
            [data.mtlcmdencoder setVertexBuffer:data.mtlbufconstants offset:constants_offset atIndex:3];
 | 
					            [data.mtlcmdencoder setVertexBuffer:data.mtlbufconstants offset:constants_offset atIndex:3];
 | 
				
			||||||
@@ -1422,8 +1488,11 @@ static SDL_bool SetCopyState(SDL_Renderer *renderer, const SDL_RenderCommand *cm
 | 
				
			|||||||
    METAL_RenderData *data = (__bridge METAL_RenderData *)renderer->driverdata;
 | 
					    METAL_RenderData *data = (__bridge METAL_RenderData *)renderer->driverdata;
 | 
				
			||||||
    SDL_Texture *texture = cmd->data.draw.texture;
 | 
					    SDL_Texture *texture = cmd->data.draw.texture;
 | 
				
			||||||
    METAL_TextureData *texturedata = (__bridge METAL_TextureData *)texture->driverdata;
 | 
					    METAL_TextureData *texturedata = (__bridge METAL_TextureData *)texture->driverdata;
 | 
				
			||||||
 | 
					    PixelShaderConstants constants;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!SetDrawState(renderer, cmd, texturedata.fragmentFunction, constants_offset, mtlbufvertex, statecache)) {
 | 
					    SetupShaderConstants(renderer, cmd, texture, &constants);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (!SetDrawState(renderer, cmd, texturedata.fragmentFunction, &constants, constants_offset, mtlbufvertex, statecache)) {
 | 
				
			||||||
        return SDL_FALSE;
 | 
					        return SDL_FALSE;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1465,11 +1534,10 @@ static int METAL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
 | 
				
			|||||||
        statecache.vertex_buffer = nil;
 | 
					        statecache.vertex_buffer = nil;
 | 
				
			||||||
        statecache.constants_offset = CONSTANTS_OFFSET_INVALID;
 | 
					        statecache.constants_offset = CONSTANTS_OFFSET_INVALID;
 | 
				
			||||||
        statecache.texture = NULL;
 | 
					        statecache.texture = NULL;
 | 
				
			||||||
        statecache.color_scale_dirty = SDL_TRUE;
 | 
					        statecache.shader_constants_dirty = SDL_TRUE;
 | 
				
			||||||
        statecache.cliprect_dirty = SDL_TRUE;
 | 
					        statecache.cliprect_dirty = SDL_TRUE;
 | 
				
			||||||
        statecache.viewport_dirty = SDL_TRUE;
 | 
					        statecache.viewport_dirty = SDL_TRUE;
 | 
				
			||||||
        statecache.projection_offset = 0;
 | 
					        statecache.projection_offset = 0;
 | 
				
			||||||
        statecache.color_scale_offset = 0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // !!! FIXME: have a ring of pre-made MTLBuffers we cycle through? How expensive is creation?
 | 
					        // !!! FIXME: have a ring of pre-made MTLBuffers we cycle through? How expensive is creation?
 | 
				
			||||||
        if (vertsize > 0) {
 | 
					        if (vertsize > 0) {
 | 
				
			||||||
@@ -1478,8 +1546,7 @@ static int METAL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
 | 
				
			|||||||
             * data from the GPU than to read managed/private data, but we avoid the
 | 
					             * data from the GPU than to read managed/private data, but we avoid the
 | 
				
			||||||
             * cost of copying the data and the code's simpler. Apple's best
 | 
					             * cost of copying the data and the code's simpler. Apple's best
 | 
				
			||||||
             * practices guide recommends this approach for streamed vertex data.
 | 
					             * practices guide recommends this approach for streamed vertex data.
 | 
				
			||||||
             * TODO: this buffer is also used for constants. Is performance still
 | 
					             */
 | 
				
			||||||
             * good for those, or should we have a managed buffer for them? */
 | 
					 | 
				
			||||||
            mtlbufvertex = [data.mtldevice newBufferWithLength:vertsize options:MTLResourceStorageModeShared];
 | 
					            mtlbufvertex = [data.mtldevice newBufferWithLength:vertsize options:MTLResourceStorageModeShared];
 | 
				
			||||||
            mtlbufvertex.label = @"SDL vertex data";
 | 
					            mtlbufvertex.label = @"SDL vertex data";
 | 
				
			||||||
            SDL_memcpy([mtlbufvertex contents], vertices, vertsize);
 | 
					            SDL_memcpy([mtlbufvertex contents], vertices, vertsize);
 | 
				
			||||||
@@ -1519,8 +1586,6 @@ static int METAL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            case SDL_RENDERCMD_SETCOLORSCALE:
 | 
					            case SDL_RENDERCMD_SETCOLORSCALE:
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                statecache.color_scale_offset = cmd->data.color.first;
 | 
					 | 
				
			||||||
                statecache.color_scale_dirty = SDL_TRUE;
 | 
					 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1542,7 +1607,7 @@ static int METAL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
 | 
				
			|||||||
                statecache.pipeline = nil;
 | 
					                statecache.pipeline = nil;
 | 
				
			||||||
                statecache.constants_offset = CONSTANTS_OFFSET_INVALID;
 | 
					                statecache.constants_offset = CONSTANTS_OFFSET_INVALID;
 | 
				
			||||||
                statecache.texture = NULL;
 | 
					                statecache.texture = NULL;
 | 
				
			||||||
                statecache.color_scale_dirty = SDL_TRUE;
 | 
					                statecache.shader_constants_dirty = SDL_TRUE;
 | 
				
			||||||
                statecache.cliprect_dirty = SDL_TRUE;
 | 
					                statecache.cliprect_dirty = SDL_TRUE;
 | 
				
			||||||
                statecache.viewport_dirty = SDL_TRUE;
 | 
					                statecache.viewport_dirty = SDL_TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1569,7 +1634,7 @@ static int METAL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                const size_t count = cmd->data.draw.count;
 | 
					                const size_t count = cmd->data.draw.count;
 | 
				
			||||||
                const MTLPrimitiveType primtype = (cmd->command == SDL_RENDERCMD_DRAW_POINTS) ? MTLPrimitiveTypePoint : MTLPrimitiveTypeLineStrip;
 | 
					                const MTLPrimitiveType primtype = (cmd->command == SDL_RENDERCMD_DRAW_POINTS) ? MTLPrimitiveTypePoint : MTLPrimitiveTypeLineStrip;
 | 
				
			||||||
                if (SetDrawState(renderer, cmd, SDL_METAL_FRAGMENT_SOLID, CONSTANTS_OFFSET_HALF_PIXEL_TRANSFORM, mtlbufvertex, &statecache)) {
 | 
					                if (SetDrawState(renderer, cmd, SDL_METAL_FRAGMENT_SOLID, NULL, CONSTANTS_OFFSET_HALF_PIXEL_TRANSFORM, mtlbufvertex, &statecache)) {
 | 
				
			||||||
                    [data.mtlcmdencoder drawPrimitives:primtype vertexStart:0 vertexCount:count];
 | 
					                    [data.mtlcmdencoder drawPrimitives:primtype vertexStart:0 vertexCount:count];
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
@@ -1594,7 +1659,7 @@ static int METAL_RunCommandQueue(SDL_Renderer *renderer, SDL_RenderCommand *cmd,
 | 
				
			|||||||
                        [data.mtlcmdencoder drawPrimitives:MTLPrimitiveTypeTriangle vertexStart:0 vertexCount:count];
 | 
					                        [data.mtlcmdencoder drawPrimitives:MTLPrimitiveTypeTriangle vertexStart:0 vertexCount:count];
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    if (SetDrawState(renderer, cmd, SDL_METAL_FRAGMENT_SOLID, CONSTANTS_OFFSET_IDENTITY, mtlbufvertex, &statecache)) {
 | 
					                    if (SetDrawState(renderer, cmd, SDL_METAL_FRAGMENT_SOLID, NULL, CONSTANTS_OFFSET_IDENTITY, mtlbufvertex, &statecache)) {
 | 
				
			||||||
                        [data.mtlcmdencoder drawPrimitives:MTLPrimitiveTypeTriangle vertexStart:0 vertexCount:count];
 | 
					                        [data.mtlcmdencoder drawPrimitives:MTLPrimitiveTypeTriangle vertexStart:0 vertexCount:count];
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -1658,6 +1723,9 @@ static SDL_Surface *METAL_RenderReadPixels(SDL_Renderer *renderer, const SDL_Rec
 | 
				
			|||||||
        case MTLPixelFormatRGBA8Unorm_sRGB:
 | 
					        case MTLPixelFormatRGBA8Unorm_sRGB:
 | 
				
			||||||
            format = SDL_PIXELFORMAT_ABGR8888;
 | 
					            format = SDL_PIXELFORMAT_ABGR8888;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
 | 
					        case MTLPixelFormatRGB10A2Unorm:
 | 
				
			||||||
 | 
					            format = SDL_PIXELFORMAT_XBGR2101010;
 | 
				
			||||||
 | 
					            break;
 | 
				
			||||||
        case MTLPixelFormatRGBA16Float:
 | 
					        case MTLPixelFormatRGBA16Float:
 | 
				
			||||||
            format = SDL_PIXELFORMAT_RGBA64_FLOAT;
 | 
					            format = SDL_PIXELFORMAT_RGBA64_FLOAT;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
@@ -2080,7 +2148,7 @@ static SDL_Renderer *METAL_CreateRenderer(SDL_Window *window, SDL_PropertiesID c
 | 
				
			|||||||
        renderer->SetRenderTarget = METAL_SetRenderTarget;
 | 
					        renderer->SetRenderTarget = METAL_SetRenderTarget;
 | 
				
			||||||
        renderer->QueueSetViewport = METAL_QueueSetViewport;
 | 
					        renderer->QueueSetViewport = METAL_QueueSetViewport;
 | 
				
			||||||
        renderer->QueueSetDrawColor = METAL_QueueNoOp;
 | 
					        renderer->QueueSetDrawColor = METAL_QueueNoOp;
 | 
				
			||||||
        renderer->QueueSetColorScale = METAL_QueueSetColorScale;
 | 
					        renderer->QueueSetColorScale = METAL_QueueNoOp;
 | 
				
			||||||
        renderer->QueueDrawPoints = METAL_QueueDrawPoints;
 | 
					        renderer->QueueDrawPoints = METAL_QueueDrawPoints;
 | 
				
			||||||
        renderer->QueueDrawLines = METAL_QueueDrawLines;
 | 
					        renderer->QueueDrawLines = METAL_QueueDrawLines;
 | 
				
			||||||
        renderer->QueueGeometry = METAL_QueueGeometry;
 | 
					        renderer->QueueGeometry = METAL_QueueGeometry;
 | 
				
			||||||
@@ -2158,6 +2226,7 @@ SDL_RenderDriver METAL_RenderDriver = {
 | 
				
			|||||||
        9,
 | 
					        9,
 | 
				
			||||||
        { SDL_PIXELFORMAT_ARGB8888,
 | 
					        { SDL_PIXELFORMAT_ARGB8888,
 | 
				
			||||||
          SDL_PIXELFORMAT_ABGR8888,
 | 
					          SDL_PIXELFORMAT_ABGR8888,
 | 
				
			||||||
 | 
					          SDL_PIXELFORMAT_XBGR2101010,
 | 
				
			||||||
          SDL_PIXELFORMAT_RGBA64_FLOAT,
 | 
					          SDL_PIXELFORMAT_RGBA64_FLOAT,
 | 
				
			||||||
          SDL_PIXELFORMAT_RGBA128_FLOAT,
 | 
					          SDL_PIXELFORMAT_RGBA128_FLOAT,
 | 
				
			||||||
          SDL_PIXELFORMAT_YV12,
 | 
					          SDL_PIXELFORMAT_YV12,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,15 +4,40 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
using namespace metal;
 | 
					using namespace metal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float3 scRGBtoNits(float3 v)
 | 
					// These should mirror the definitions in SDL_render_metal.m
 | 
				
			||||||
{
 | 
					#define TONEMAP_NONE            0
 | 
				
			||||||
    return v * 80.0;
 | 
					#define TONEMAP_LINEAR          1
 | 
				
			||||||
}
 | 
					#define TONEMAP_CHROME          2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float3 scRGBfromNits(float3 v)
 | 
					#define TEXTURETYPE_NONE        0
 | 
				
			||||||
 | 
					#define TEXTURETYPE_RGB         1
 | 
				
			||||||
 | 
					#define TEXTURETYPE_NV12        2
 | 
				
			||||||
 | 
					#define TEXTURETYPE_NV21        3
 | 
				
			||||||
 | 
					#define TEXTURETYPE_YUV         4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define INPUTTYPE_UNSPECIFIED   0
 | 
				
			||||||
 | 
					#define INPUTTYPE_SRGB          1
 | 
				
			||||||
 | 
					#define INPUTTYPE_SCRGB         2
 | 
				
			||||||
 | 
					#define INPUTTYPE_HDR10         3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct ShaderConstants
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return v / 80.0;
 | 
					    float scRGB_output;
 | 
				
			||||||
}
 | 
					    float texture_type;
 | 
				
			||||||
 | 
					    float input_type;
 | 
				
			||||||
 | 
					    float color_scale;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    float tonemap_method;
 | 
				
			||||||
 | 
					    float tonemap_factor1;
 | 
				
			||||||
 | 
					    float tonemap_factor2;
 | 
				
			||||||
 | 
					    float sdr_white_point;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct YUVDecode
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    float3 offset;
 | 
				
			||||||
 | 
					    float3x3 matrix;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float sRGBtoLinear(float v)
 | 
					float sRGBtoLinear(float v)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -34,7 +59,7 @@ float sRGBfromLinear(float v)
 | 
				
			|||||||
    return v;
 | 
					    return v;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float3 PQtoNits(float3 v)
 | 
					float3 PQtoLinear(float3 v, float sdr_white_point)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    const float c1 = 0.8359375;
 | 
					    const float c1 = 0.8359375;
 | 
				
			||||||
    const float c2 = 18.8515625;
 | 
					    const float c2 = 18.8515625;
 | 
				
			||||||
@@ -44,7 +69,74 @@ float3 PQtoNits(float3 v)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    float3 num = max(pow(abs(v), oo_m2) - c1, 0.0);
 | 
					    float3 num = max(pow(abs(v), oo_m2) - c1, 0.0);
 | 
				
			||||||
    float3 den = c2 - c3 * pow(abs(v), oo_m2);
 | 
					    float3 den = c2 - c3 * pow(abs(v), oo_m2);
 | 
				
			||||||
    return 10000.0 * pow(abs(num / den), oo_m1);
 | 
					    return (10000.0 * pow(abs(num / den), oo_m1) / sdr_white_point);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float3 ApplyTonemap(float3 v, float input_type, float tonemap_method, float tonemap_factor1, float tonemap_factor2)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    const float3x3 mat709to2020 = {
 | 
				
			||||||
 | 
					        { 0.627404, 0.329283, 0.043313 },
 | 
				
			||||||
 | 
					        { 0.069097, 0.919541, 0.011362 },
 | 
				
			||||||
 | 
					        { 0.016391, 0.088013, 0.895595 }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    const float3x3 mat2020to709 = {
 | 
				
			||||||
 | 
					        { 1.660496, -0.587656, -0.072840 },
 | 
				
			||||||
 | 
					        { -0.124547, 1.132895, -0.008348 },
 | 
				
			||||||
 | 
					        { -0.018154, -0.100597, 1.118751 }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (tonemap_method == TONEMAP_LINEAR) {
 | 
				
			||||||
 | 
					        v *= tonemap_factor1;
 | 
				
			||||||
 | 
					    } else if (tonemap_method == TONEMAP_CHROME) {
 | 
				
			||||||
 | 
					        if (input_type == INPUTTYPE_SCRGB) {
 | 
				
			||||||
 | 
					            // Convert to BT.2020 colorspace for tone mapping
 | 
				
			||||||
 | 
					            v = v * mat709to2020;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        float vmax = max(v.r, max(v.g, v.b));
 | 
				
			||||||
 | 
					        if (vmax > 0.0) {
 | 
				
			||||||
 | 
					            float scale = (1.0 + tonemap_factor1 * vmax) / (1.0 + tonemap_factor2 * vmax);
 | 
				
			||||||
 | 
					            v *= scale;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (input_type == INPUTTYPE_SCRGB) {
 | 
				
			||||||
 | 
					            // Convert to BT.709 colorspace after tone mapping
 | 
				
			||||||
 | 
					            v = v * mat2020to709;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return v;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					float4 GetInputColor(float2 texcoord, float texture_type, constant YUVDecode &decode, texture2d<float> tex0, texture2d<float> tex1, sampler s)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    float4 rgba;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (texture_type == TEXTURETYPE_NONE) {
 | 
				
			||||||
 | 
					        rgba = 1.0;
 | 
				
			||||||
 | 
					    } else if (texture_type == TEXTURETYPE_RGB) {
 | 
				
			||||||
 | 
					        rgba = tex0.sample(s, texcoord);
 | 
				
			||||||
 | 
					    } else if (texture_type == TEXTURETYPE_NV12) {
 | 
				
			||||||
 | 
					        float3 yuv;
 | 
				
			||||||
 | 
					        yuv.x = tex0.sample(s, texcoord).r;
 | 
				
			||||||
 | 
					        yuv.yz = tex1.sample(s, texcoord).rg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        rgba.rgb = (yuv + decode.offset) * decode.matrix;
 | 
				
			||||||
 | 
					        rgba.a = 1.0;
 | 
				
			||||||
 | 
					    } else if (texture_type == TEXTURETYPE_NV21) {
 | 
				
			||||||
 | 
					        float3 yuv;
 | 
				
			||||||
 | 
					        yuv.x = tex0.sample(s, texcoord).r;
 | 
				
			||||||
 | 
					        yuv.yz = tex1.sample(s, texcoord).gr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        rgba.rgb = (yuv + decode.offset) * decode.matrix;
 | 
				
			||||||
 | 
					        rgba.a = 1.0;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        // Error!
 | 
				
			||||||
 | 
					        rgba.r = 1.0;
 | 
				
			||||||
 | 
					        rgba.g = 0.0;
 | 
				
			||||||
 | 
					        rgba.b = 0.0;
 | 
				
			||||||
 | 
					        rgba.a = 1.0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return rgba;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float4 GetOutputColor(float4 rgba, float color_scale)
 | 
					float4 GetOutputColor(float4 rgba, float color_scale)
 | 
				
			||||||
@@ -57,9 +149,9 @@ float4 GetOutputColor(float4 rgba, float color_scale)
 | 
				
			|||||||
    return output;
 | 
					    return output;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float4 GetOutputColorFromSRGB(float3 rgb, float scRGB_output, float color_scale)
 | 
					float3 GetOutputColorFromSRGB(float3 rgb, float scRGB_output, float color_scale)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float4 output;
 | 
					    float3 output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (scRGB_output) {
 | 
					    if (scRGB_output) {
 | 
				
			||||||
        rgb.r = sRGBtoLinear(rgb.r);
 | 
					        rgb.r = sRGBtoLinear(rgb.r);
 | 
				
			||||||
@@ -67,35 +159,27 @@ float4 GetOutputColorFromSRGB(float3 rgb, float scRGB_output, float color_scale)
 | 
				
			|||||||
        rgb.b = sRGBtoLinear(rgb.b);
 | 
					        rgb.b = sRGBtoLinear(rgb.b);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    output.rgb = rgb * color_scale;
 | 
					    output = rgb * color_scale;
 | 
				
			||||||
    output.a = 1.0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return output;
 | 
					    return output;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
float4 GetOutputColorFromSCRGB(float3 rgb, float scRGB_output, float color_scale)
 | 
					float3 GetOutputColorFromLinear(float3 rgb, float scRGB_output, float color_scale)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float4 output;
 | 
					    float3 output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    output.rgb = rgb * color_scale;
 | 
					    output = rgb * color_scale;
 | 
				
			||||||
    output.a = 1.0;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!scRGB_output) {
 | 
					    if (!scRGB_output) {
 | 
				
			||||||
        output.r = sRGBfromLinear(output.r);
 | 
					        output.r = sRGBfromLinear(output.r);
 | 
				
			||||||
        output.g = sRGBfromLinear(output.g);
 | 
					        output.g = sRGBfromLinear(output.g);
 | 
				
			||||||
        output.b = sRGBfromLinear(output.b);
 | 
					        output.b = sRGBfromLinear(output.b);
 | 
				
			||||||
        output.rgb = clamp(output.rgb, 0.0, 1.0);
 | 
					        output = clamp(output.rgb, 0.0, 1.0);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return output;
 | 
					    return output;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct ShaderConstants
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    float scRGB_output;
 | 
					 | 
				
			||||||
    float color_scale;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct SolidVertexInput
 | 
					struct SolidVertexInput
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float2 position [[attribute(0)]];
 | 
					    float2 position [[attribute(0)]];
 | 
				
			||||||
@@ -159,11 +243,45 @@ fragment float4 SDL_Copy_fragment(CopyVertexOutput vert [[stage_in]],
 | 
				
			|||||||
    return GetOutputColor(tex.sample(s, vert.texcoord), c.color_scale) * vert.color;
 | 
					    return GetOutputColor(tex.sample(s, vert.texcoord), c.color_scale) * vert.color;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct YUVDecode
 | 
					fragment float4 SDL_Advanced_fragment(CopyVertexOutput vert [[stage_in]],
 | 
				
			||||||
 | 
					                                      constant ShaderConstants &c [[buffer(0)]],
 | 
				
			||||||
 | 
					                                      constant YUVDecode &decode [[buffer(1)]],
 | 
				
			||||||
 | 
					                                      texture2d<float> tex0 [[texture(0)]],
 | 
				
			||||||
 | 
					                                      texture2d<float> tex1 [[texture(1)]],
 | 
				
			||||||
 | 
					                                      sampler s [[sampler(0)]])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    float3 offset;
 | 
					    const float3x3 mat2020to709 = {
 | 
				
			||||||
    float3x3 matrix;
 | 
					        { 1.660496, -0.587656, -0.072840 },
 | 
				
			||||||
};
 | 
					        { -0.124547, 1.132895, -0.008348 },
 | 
				
			||||||
 | 
					        { -0.018154, -0.100597, 1.118751 }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    float4 rgba = GetInputColor(vert.texcoord, c.texture_type, decode, tex0, tex1, s);
 | 
				
			||||||
 | 
					    float4 output;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (c.input_type == INPUTTYPE_HDR10) {
 | 
				
			||||||
 | 
					        rgba.rgb = PQtoLinear(rgba.rgb, c.sdr_white_point);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (c.tonemap_method != TONEMAP_NONE) {
 | 
				
			||||||
 | 
					        rgba.rgb = ApplyTonemap(rgba.rgb, c.input_type, c.tonemap_method, c.tonemap_factor1, c.tonemap_factor2);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (c.input_type == INPUTTYPE_SRGB) {
 | 
				
			||||||
 | 
					        output.rgb = GetOutputColorFromSRGB(rgba.rgb, c.scRGB_output, c.color_scale);
 | 
				
			||||||
 | 
					        output.a = rgba.a;
 | 
				
			||||||
 | 
					    } else if (c.input_type == INPUTTYPE_SCRGB) {
 | 
				
			||||||
 | 
					        output.rgb = GetOutputColorFromLinear(rgba.rgb, c.scRGB_output, c.color_scale);
 | 
				
			||||||
 | 
					        output.a = rgba.a;
 | 
				
			||||||
 | 
					    } else if (c.input_type == INPUTTYPE_HDR10) {
 | 
				
			||||||
 | 
					        rgba.rgb = rgba.rgb * mat2020to709;
 | 
				
			||||||
 | 
					        output.rgb = GetOutputColorFromLinear(rgba.rgb, c.scRGB_output, c.color_scale);
 | 
				
			||||||
 | 
					        output.a = rgba.a;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        output = GetOutputColor(rgba, c.color_scale);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return output * vert.color;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fragment float4 SDL_YUV_fragment(CopyVertexOutput vert [[stage_in]],
 | 
					fragment float4 SDL_YUV_fragment(CopyVertexOutput vert [[stage_in]],
 | 
				
			||||||
                                 constant ShaderConstants &c [[buffer(0)]],
 | 
					                                 constant ShaderConstants &c [[buffer(0)]],
 | 
				
			||||||
@@ -180,69 +298,9 @@ fragment float4 SDL_YUV_fragment(CopyVertexOutput vert [[stage_in]],
 | 
				
			|||||||
    float3 rgb;
 | 
					    float3 rgb;
 | 
				
			||||||
    rgb = (yuv + decode.offset) * decode.matrix;
 | 
					    rgb = (yuv + decode.offset) * decode.matrix;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return GetOutputColorFromSRGB(rgb, c.scRGB_output, c.color_scale) * vert.color;
 | 
					    float4 output;
 | 
				
			||||||
 | 
					    output.rgb = GetOutputColorFromSRGB(rgb, c.scRGB_output, c.color_scale);
 | 
				
			||||||
 | 
					    output.a = 1.0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return output * vert.color;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
fragment float4 SDL_NV12_fragment(CopyVertexOutput vert [[stage_in]],
 | 
					 | 
				
			||||||
                                  constant ShaderConstants &c [[buffer(0)]],
 | 
					 | 
				
			||||||
                                  constant YUVDecode &decode [[buffer(1)]],
 | 
					 | 
				
			||||||
                                  texture2d<float> texY [[texture(0)]],
 | 
					 | 
				
			||||||
                                  texture2d<float> texUV [[texture(1)]],
 | 
					 | 
				
			||||||
                                  sampler s [[sampler(0)]])
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    float3 yuv;
 | 
					 | 
				
			||||||
    yuv.x = texY.sample(s, vert.texcoord).r;
 | 
					 | 
				
			||||||
    yuv.yz = texUV.sample(s, vert.texcoord).rg;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 rgb;
 | 
					 | 
				
			||||||
    rgb = (yuv + decode.offset) * decode.matrix;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return GetOutputColorFromSRGB(rgb, c.scRGB_output, c.color_scale) * vert.color;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
fragment float4 SDL_NV21_fragment(CopyVertexOutput vert [[stage_in]],
 | 
					 | 
				
			||||||
                                  constant ShaderConstants &c [[buffer(0)]],
 | 
					 | 
				
			||||||
                                  constant YUVDecode &decode [[buffer(1)]],
 | 
					 | 
				
			||||||
                                  texture2d<float> texY [[texture(0)]],
 | 
					 | 
				
			||||||
                                  texture2d<float> texUV [[texture(1)]],
 | 
					 | 
				
			||||||
                                  sampler s [[sampler(0)]])
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    float3 yuv;
 | 
					 | 
				
			||||||
    yuv.x = texY.sample(s, vert.texcoord).r;
 | 
					 | 
				
			||||||
    yuv.yz = texUV.sample(s, vert.texcoord).gr;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 rgb;
 | 
					 | 
				
			||||||
    rgb = (yuv + decode.offset) * decode.matrix;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return GetOutputColorFromSRGB(rgb, c.scRGB_output, c.color_scale) * vert.color;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
fragment float4 SDL_HDR10_fragment(CopyVertexOutput vert [[stage_in]],
 | 
					 | 
				
			||||||
                                   constant ShaderConstants &c [[buffer(0)]],
 | 
					 | 
				
			||||||
                                   constant YUVDecode &decode [[buffer(1)]],
 | 
					 | 
				
			||||||
                                   texture2d<float> texY [[texture(0)]],
 | 
					 | 
				
			||||||
                                   texture2d<float> texUV [[texture(1)]],
 | 
					 | 
				
			||||||
                                   sampler s [[sampler(0)]])
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    const float3x3 mat2020to709 = {
 | 
					 | 
				
			||||||
        { 1.660496, -0.587656, -0.072840 },
 | 
					 | 
				
			||||||
        { -0.124547, 1.132895, -0.008348 },
 | 
					 | 
				
			||||||
        { -0.018154, -0.100597, 1.118751 }
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 yuv;
 | 
					 | 
				
			||||||
    yuv.x = texY.sample(s, vert.texcoord).r;
 | 
					 | 
				
			||||||
    yuv.yz = texUV.sample(s, vert.texcoord).rg;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    float3 rgb;
 | 
					 | 
				
			||||||
    rgb = (yuv + decode.offset) * decode.matrix;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    rgb = PQtoNits(rgb);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    rgb = rgb * mat2020to709;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    rgb = scRGBfromNits(rgb);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return GetOutputColorFromSCRGB(rgb, c.scRGB_output, c.color_scale) * vert.color;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -670,7 +670,7 @@ typedef enum
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    SDL_TONEMAP_NONE,
 | 
					    SDL_TONEMAP_NONE,
 | 
				
			||||||
    SDL_TONEMAP_LINEAR,
 | 
					    SDL_TONEMAP_LINEAR,
 | 
				
			||||||
    SDL_TONEMAP_PIECEWISE_HDR,
 | 
					    SDL_TONEMAP_CHROME
 | 
				
			||||||
} SDL_TonemapOperator;
 | 
					} SDL_TonemapOperator;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct
 | 
					typedef struct
 | 
				
			||||||
@@ -682,41 +682,53 @@ typedef struct
 | 
				
			|||||||
            float scale;
 | 
					            float scale;
 | 
				
			||||||
        } linear;
 | 
					        } linear;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        struct
 | 
					        struct {
 | 
				
			||||||
        {
 | 
					            float a;
 | 
				
			||||||
            float scale;
 | 
					            float b;
 | 
				
			||||||
        } piecewise_HDR;
 | 
					            const float *color_primaries_matrix;
 | 
				
			||||||
 | 
					        } chrome;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    } data;
 | 
					    } data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} SDL_TonemapContext;
 | 
					} SDL_TonemapContext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void TonemapLinear(float *r, float *g, float *b, float scale)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    *r *= scale;
 | 
				
			||||||
 | 
					    *g *= scale;
 | 
				
			||||||
 | 
					    *b *= scale;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void TonemapChrome(float *r, float *g, float *b, float tonemap_a, float tonemap_b)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    float v1 = *r;
 | 
				
			||||||
 | 
					    float v2 = *g;
 | 
				
			||||||
 | 
					    float v3 = *b;
 | 
				
			||||||
 | 
					    float vmax = SDL_max(v1, SDL_max(v2, v3));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (vmax > 0.0f) {
 | 
				
			||||||
 | 
					        float scale = (1.0f + tonemap_a * vmax) / (1.0f + tonemap_b * vmax);
 | 
				
			||||||
 | 
					        TonemapLinear(r, g, b, scale);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void ApplyTonemap(SDL_TonemapContext *ctx, float *r, float *g, float *b)
 | 
					static void ApplyTonemap(SDL_TonemapContext *ctx, float *r, float *g, float *b)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    switch (ctx->op) {
 | 
					    switch (ctx->op) {
 | 
				
			||||||
    case SDL_TONEMAP_LINEAR:
 | 
					    case SDL_TONEMAP_LINEAR:
 | 
				
			||||||
        *r *= ctx->data.linear.scale;
 | 
					        TonemapLinear(r, g, b, ctx->data.linear.scale);
 | 
				
			||||||
        *g *= ctx->data.linear.scale;
 | 
					 | 
				
			||||||
        *b *= ctx->data.linear.scale;
 | 
					 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    case SDL_TONEMAP_PIECEWISE_HDR:
 | 
					    case SDL_TONEMAP_CHROME:
 | 
				
			||||||
        *r = (*r <= 1.0f) ? *r : (1.0f + (*r - 1.0f) * ctx->data.piecewise_HDR.scale);
 | 
					        if (ctx->data.chrome.color_primaries_matrix) {
 | 
				
			||||||
        *g = (*g <= 1.0f) ? *g : (1.0f + (*g - 1.0f) * ctx->data.piecewise_HDR.scale);
 | 
					            SDL_ConvertColorPrimaries(r, g, b, ctx->data.chrome.color_primaries_matrix);
 | 
				
			||||||
        *b = (*r <= 1.0f) ? *b : (1.0f + (*b - 1.0f) * ctx->data.piecewise_HDR.scale);
 | 
					        }
 | 
				
			||||||
 | 
					        TonemapChrome(r, g, b, ctx->data.chrome.a, ctx->data.chrome.b);
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static SDL_bool IsHDRColorspace(SDL_Colorspace colorspace)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    if (colorspace == SDL_COLORSPACE_SRGB_LINEAR ||
 | 
					 | 
				
			||||||
        SDL_COLORSPACETRANSFER(colorspace) == SDL_TRANSFER_CHARACTERISTICS_PQ) {
 | 
					 | 
				
			||||||
        return SDL_TRUE;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return SDL_FALSE;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* The SECOND TRUE BLITTER
 | 
					/* The SECOND TRUE BLITTER
 | 
				
			||||||
 * This one is even slower than the first, but also handles large pixel formats and colorspace conversion
 | 
					 * This one is even slower than the first, but also handles large pixel formats and colorspace conversion
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
@@ -740,35 +752,63 @@ void SDL_Blit_Slow_Float(SDL_BlitInfo *info)
 | 
				
			|||||||
    SlowBlitPixelAccess dst_access;
 | 
					    SlowBlitPixelAccess dst_access;
 | 
				
			||||||
    SDL_Colorspace src_colorspace;
 | 
					    SDL_Colorspace src_colorspace;
 | 
				
			||||||
    SDL_Colorspace dst_colorspace;
 | 
					    SDL_Colorspace dst_colorspace;
 | 
				
			||||||
 | 
					    SDL_ColorPrimaries src_primaries;
 | 
				
			||||||
 | 
					    SDL_ColorPrimaries dst_primaries;
 | 
				
			||||||
    const float *color_primaries_matrix = NULL;
 | 
					    const float *color_primaries_matrix = NULL;
 | 
				
			||||||
    float SDR_white_point_src = 1.0f;
 | 
					    float src_white_point;
 | 
				
			||||||
    float SDR_white_point_dst = 1.0f;
 | 
					    float dst_white_point;
 | 
				
			||||||
 | 
					    float dst_headroom;
 | 
				
			||||||
 | 
					    float src_headroom;
 | 
				
			||||||
    SDL_TonemapContext tonemap;
 | 
					    SDL_TonemapContext tonemap;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (SDL_GetSurfaceColorspace(info->src_surface, &src_colorspace) < 0 ||
 | 
					    if (SDL_GetSurfaceColorspace(info->src_surface, &src_colorspace) < 0 ||
 | 
				
			||||||
        SDL_GetSurfaceColorspace(info->dst_surface, &dst_colorspace) < 0) {
 | 
					        SDL_GetSurfaceColorspace(info->dst_surface, &dst_colorspace) < 0) {
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    src_primaries = SDL_COLORSPACEPRIMARIES(src_colorspace);
 | 
				
			||||||
 | 
					    dst_primaries = SDL_COLORSPACEPRIMARIES(dst_colorspace);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    tonemap.op = SDL_TONEMAP_NONE;
 | 
					    src_white_point = SDL_GetSurfaceSDRWhitePoint(info->src_surface, src_colorspace);
 | 
				
			||||||
    if (src_colorspace != dst_colorspace) {
 | 
					    dst_white_point = SDL_GetSurfaceSDRWhitePoint(info->dst_surface, dst_colorspace);
 | 
				
			||||||
        SDL_ColorPrimaries src_primaries = SDL_COLORSPACEPRIMARIES(src_colorspace);
 | 
					    src_headroom = SDL_GetSurfaceHDRHeadroom(info->src_surface, src_colorspace);
 | 
				
			||||||
        SDL_ColorPrimaries dst_primaries = SDL_COLORSPACEPRIMARIES(dst_colorspace);
 | 
					    dst_headroom = SDL_GetSurfaceHDRHeadroom(info->dst_surface, dst_colorspace);
 | 
				
			||||||
        color_primaries_matrix = SDL_GetColorPrimariesConversionMatrix(src_primaries, dst_primaries);
 | 
					    if (dst_headroom == 0.0f) {
 | 
				
			||||||
 | 
					        /* The destination will have the same headroom as the source */
 | 
				
			||||||
 | 
					        dst_headroom = src_headroom;
 | 
				
			||||||
 | 
					        SDL_SetFloatProperty(SDL_GetSurfaceProperties(info->dst_surface), SDL_PROP_SURFACE_HDR_HEADROOM_FLOAT, dst_headroom);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (IsHDRColorspace(src_colorspace) != IsHDRColorspace(dst_colorspace)) {
 | 
					    SDL_zero(tonemap);
 | 
				
			||||||
            const char *tonemap_operator = SDL_GetStringProperty(SDL_GetSurfaceProperties(info->src_surface), SDL_PROP_SURFACE_TONEMAP_OPERATOR_STRING, NULL);
 | 
					
 | 
				
			||||||
            if (tonemap_operator) {
 | 
					    if (src_headroom > dst_headroom) {
 | 
				
			||||||
                if (SDL_strncmp(tonemap_operator, "*=", 2) == 0) {
 | 
					        const char *tonemap_operator = SDL_GetStringProperty(SDL_GetSurfaceProperties(info->src_surface), SDL_PROP_SURFACE_TONEMAP_OPERATOR_STRING, NULL);
 | 
				
			||||||
                    tonemap.op = SDL_TONEMAP_LINEAR;
 | 
					        if (tonemap_operator) {
 | 
				
			||||||
                    tonemap.data.linear.scale = SDL_atof(tonemap_operator + 2);
 | 
					            if (SDL_strncmp(tonemap_operator, "*=", 2) == 0) {
 | 
				
			||||||
                }
 | 
					                tonemap.op = SDL_TONEMAP_LINEAR;
 | 
				
			||||||
 | 
					                tonemap.data.linear.scale = SDL_atof(tonemap_operator + 2);
 | 
				
			||||||
 | 
					            } else if (SDL_strcasecmp(tonemap_operator, "chrome") == 0) {
 | 
				
			||||||
 | 
					                tonemap.op = SDL_TONEMAP_CHROME;
 | 
				
			||||||
 | 
					            } else if (SDL_strcasecmp(tonemap_operator, "none") == 0) {
 | 
				
			||||||
 | 
					                tonemap.op = SDL_TONEMAP_NONE;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            tonemap.op = SDL_TONEMAP_CHROME;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (tonemap.op == SDL_TONEMAP_CHROME) {
 | 
				
			||||||
 | 
					            tonemap.data.chrome.a = (dst_headroom / (src_headroom * src_headroom));
 | 
				
			||||||
 | 
					            tonemap.data.chrome.b = (1.0f / dst_headroom);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            /* We'll convert to BT.2020 primaries for the tonemap operation */
 | 
				
			||||||
 | 
					            tonemap.data.chrome.color_primaries_matrix = SDL_GetColorPrimariesConversionMatrix(src_primaries, SDL_COLOR_PRIMARIES_BT2020);
 | 
				
			||||||
 | 
					            if (tonemap.data.chrome.color_primaries_matrix) {
 | 
				
			||||||
 | 
					                src_primaries = SDL_COLOR_PRIMARIES_BT2020;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SDR_white_point_src = SDL_GetSurfaceSDRWhitePoint(info->src_surface, src_colorspace);
 | 
					    if (src_primaries != dst_primaries) {
 | 
				
			||||||
    SDR_white_point_dst = SDL_GetSurfaceSDRWhitePoint(info->dst_surface, dst_colorspace);
 | 
					        color_primaries_matrix = SDL_GetColorPrimariesConversionMatrix(src_primaries, dst_primaries);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    src_access = GetPixelAccessMethod(src_fmt);
 | 
					    src_access = GetPixelAccessMethod(src_fmt);
 | 
				
			||||||
    dst_access = GetPixelAccessMethod(dst_fmt);
 | 
					    dst_access = GetPixelAccessMethod(dst_fmt);
 | 
				
			||||||
@@ -787,21 +827,21 @@ void SDL_Blit_Slow_Float(SDL_BlitInfo *info)
 | 
				
			|||||||
            srcx = posx >> 16;
 | 
					            srcx = posx >> 16;
 | 
				
			||||||
            src = (info->src + (srcy * info->src_pitch) + (srcx * srcbpp));
 | 
					            src = (info->src + (srcy * info->src_pitch) + (srcx * srcbpp));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ReadFloatPixel(src, src_access, src_fmt, src_colorspace, SDR_white_point_src, &srcR, &srcG, &srcB, &srcA);
 | 
					            ReadFloatPixel(src, src_access, src_fmt, src_colorspace, src_white_point, &srcR, &srcG, &srcB, &srcA);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (color_primaries_matrix) {
 | 
					 | 
				
			||||||
                SDL_ConvertColorPrimaries(&srcR, &srcG, &srcB, color_primaries_matrix);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (tonemap.op) {
 | 
					            if (tonemap.op) {
 | 
				
			||||||
                ApplyTonemap(&tonemap, &srcR, &srcG, &srcB);
 | 
					                ApplyTonemap(&tonemap, &srcR, &srcG, &srcB);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (color_primaries_matrix) {
 | 
				
			||||||
 | 
					                SDL_ConvertColorPrimaries(&srcR, &srcG, &srcB, color_primaries_matrix);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (flags & SDL_COPY_COLORKEY) {
 | 
					            if (flags & SDL_COPY_COLORKEY) {
 | 
				
			||||||
                /* colorkey isn't supported */
 | 
					                /* colorkey isn't supported */
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            if ((flags & (SDL_COPY_BLEND | SDL_COPY_ADD | SDL_COPY_MOD | SDL_COPY_MUL))) {
 | 
					            if ((flags & (SDL_COPY_BLEND | SDL_COPY_ADD | SDL_COPY_MOD | SDL_COPY_MUL))) {
 | 
				
			||||||
                ReadFloatPixel(dst, dst_access, dst_fmt, dst_colorspace, SDR_white_point_dst, &dstR, &dstG, &dstB, &dstA);
 | 
					                ReadFloatPixel(dst, dst_access, dst_fmt, dst_colorspace, dst_white_point, &dstR, &dstG, &dstB, &dstA);
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                /* don't care */
 | 
					                /* don't care */
 | 
				
			||||||
                dstR = dstG = dstB = dstA = 0.0f;
 | 
					                dstR = dstG = dstB = dstA = 0.0f;
 | 
				
			||||||
@@ -853,7 +893,7 @@ void SDL_Blit_Slow_Float(SDL_BlitInfo *info)
 | 
				
			|||||||
                break;
 | 
					                break;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            WriteFloatPixel(dst, dst_access, dst_fmt, dst_colorspace, SDR_white_point_dst, dstR, dstG, dstB, dstA);
 | 
					            WriteFloatPixel(dst, dst_access, dst_fmt, dst_colorspace, dst_white_point, dstR, dstG, dstB, dstA);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            posx += incx;
 | 
					            posx += incx;
 | 
				
			||||||
            dst += dstbpp;
 | 
					            dst += dstbpp;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -340,9 +340,9 @@ float SDL_GetSurfaceHDRHeadroom(SDL_Surface *surface, SDL_Colorspace colorspace)
 | 
				
			|||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            props = 0;
 | 
					            props = 0;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (transfer == SDL_TRANSFER_CHARACTERISTICS_PQ &&
 | 
					        if (transfer == SDL_TRANSFER_CHARACTERISTICS_PQ) {
 | 
				
			||||||
            SDL_HasProperty(props, SDL_PROP_SURFACE_MAXCLL_NUMBER)) {
 | 
					            const int DEFAULT_PQ_MAXCLL = 400; /* The official definition is 10000, but PQ game content is often mastered for 400 nits */
 | 
				
			||||||
            default_value = (float)SDL_GetNumberProperty(props, SDL_PROP_SURFACE_MAXCLL_NUMBER, 0) / SDL_GetSurfaceSDRWhitePoint(surface, colorspace);
 | 
					            default_value = (float)SDL_GetNumberProperty(props, SDL_PROP_SURFACE_MAXCLL_NUMBER, DEFAULT_PQ_MAXCLL) / SDL_GetSurfaceSDRWhitePoint(surface, colorspace);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return SDL_GetFloatProperty(props, SDL_PROP_SURFACE_HDR_HEADROOM_FLOAT, default_value);
 | 
					        return SDL_GetFloatProperty(props, SDL_PROP_SURFACE_HDR_HEADROOM_FLOAT, default_value);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user