From 19b7aefa0263e84cc8db9f5627dc0883e0e6d22f Mon Sep 17 00:00:00 2001 From: Katajisto Date: Sun, 29 Mar 2026 21:56:20 +0300 Subject: [PATCH] improvements --- libtacoma.so | Bin 654712 -> 654712 bytes log_nvprosample.txt | 27 + modules/Tacoma/libtacoma.so | Bin 654712 -> 654712 bytes modules/Tacoma/shaders/raytrace.comp.glsl.spv | Bin 80584 -> 80832 bytes settings.cfg | 2 +- src/editor/trile_editor.jai | 9 +- src/shaders/jai/shader_trile.jai | 2969 +++++++++-------- src/shaders/jai/shader_trixel.jai | 1122 ++++--- src/shaders/shader_trile.glsl | 15 +- src/shaders/shader_trixel.glsl | 15 +- src/trile.jai | 47 +- 11 files changed, 2209 insertions(+), 1997 deletions(-) diff --git a/libtacoma.so b/libtacoma.so index c6389efcd5a1b29e8eaf150416261ce52022a96d..e30a93e5380aa5fd659a5514402a1f0c043a2b9a 100755 GIT binary patch delta 7882 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 delta 8010 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 diff --git a/log_nvprosample.txt b/log_nvprosample.txt index f10d512..304bef3 100644 --- a/log_nvprosample.txt +++ b/log_nvprosample.txt @@ -25,3 +25,30 @@ VK_KHR_acceleration_structure VK_KHR_ray_query BLAS Compaction: 2.6MB -> 0.9MB (1.7MB saved, 66.1% smaller) +_______________ +Vulkan Version: + - available: 1.4.309 + - requesting: 1.3.0 +______________________ +Used Instance Layers : +VK_LAYER_KHRONOS_validation + +Used Instance Extensions : +____________________ +Devices : 1 +0: AMD Radeon RX 6950 XT + - Compatible +Compatible physical devices found : 1 +Using Device: + - Device Name : AMD Radeon RX 6950 XT + - Vendor : AMD + - Driver Version : 2.0.341 + - API Version : 1.4.308 + - Device Type : Discrete GPU +________________________ +Used Device Extensions : +VK_KHR_deferred_host_operations +VK_KHR_acceleration_structure +VK_KHR_ray_query + +BLAS Compaction: 2.6MB -> 0.9MB (1.7MB saved, 66.1% smaller) diff --git a/modules/Tacoma/libtacoma.so b/modules/Tacoma/libtacoma.so index c6389efcd5a1b29e8eaf150416261ce52022a96d..e30a93e5380aa5fd659a5514402a1f0c043a2b9a 100755 GIT binary patch delta 7882 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 delta 8010 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 diff --git a/modules/Tacoma/shaders/raytrace.comp.glsl.spv b/modules/Tacoma/shaders/raytrace.comp.glsl.spv index 1bc3a538ebf2b53f2d297e8053678d4d9beeaada..89f1ca87e0d834530438695169c6345d5e3f2c87 100644 GIT binary patch delta 25676 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 SrHgm=H{xl4o^1?f8~+dC8y&R( delta 25489 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 1 { r.h = row_h; pal_w := r.w / cast(float)g_palettes.count; @@ -350,7 +348,6 @@ draw_material_tab :: (theme: *GR.Overall_Theme, area: GR.Rect) { } r.y += top_h; - // Trile material picker unique_mats : [..]Material; unique_mats.allocator = temp; for x: 0..15 for y: 0..15 for z: 0..15 { @@ -374,11 +371,11 @@ draw_material_tab :: (theme: *GR.Overall_Theme, area: GR.Rect) { array_add(*as_entries, e); } - r.h = bot_h; + r.h = bot_h * 0.75; region2, inside2 := GR.begin_scrollable_region(r, *theme.scrollable_region_theme); end_y2 := draw_swatches(as_entries, inside2, block, *trile_palette_scroll, 10000, theme); GR.end_scrollable_region(region2, inside2.x + inside2.w, end_y2, *trile_palette_scroll); - r.y += bot_h; + r.y += bot_h * 0.75; r.h = ui_h(3, 2); GR.label(r, "Roughness", *t_label_left(theme)); @@ -391,7 +388,7 @@ draw_material_tab :: (theme: *GR.Overall_Theme, area: GR.Rect) { r.y += r.h; GR.label(r, "Emittance", *t_label_left(theme)); r.y += r.h; - GR.slider(r, *emittance, 0, 2, 1, *theme.slider_theme); + GR.slider(r, *emittance, 0, 127, 1, *theme.slider_theme); } diff --git a/src/shaders/jai/shader_trile.jai b/src/shaders/jai/shader_trile.jai index 757794d..df2995a 100644 --- a/src/shaders/jai/shader_trile.jai +++ b/src/shaders/jai/shader_trile.jai @@ -533,32 +533,32 @@ vs_trile_source_glsl430 := u8.[ vec3 vc = v; if ((index / 2) == 0) { - vec3 _1913 = vc; - _1913.z = v.y; - _1913.y = v.z; - vc = _1913; + vec3 _1921 = vc; + _1921.z = v.y; + _1921.y = v.z; + vc = _1921; } if ((index / 2) == 2) { - vec3 _1917 = vc; - _1917.z = v.x; - _1917.x = v.z; - vc = _1917; + vec3 _1925 = vc; + _1925.z = v.x; + _1925.x = v.z; + vc = _1925; } if ((index % 2) == 1) { - vec3 _1921 = vc; - _1921.z = _1921.z * (-1.0); - vc = _1921; + vec3 _1929 = vc; + _1929.z = _1929.z * (-1.0); + vc = _1929; } - vec3 _1924 = vc; - float _601 = _1924.x + off.x; - vec3 _1926 = _1924; - _1926.x = _601; - float _607 = _1924.y + off.y; - _1926.y = _607; - vc = _1926; - vec2 _625 = _1926.xy * (1.0 / ((abs(_601) + abs(_607)) + _1924.z)); + vec3 _1932 = vc; + float _601 = _1932.x + off.x; + vec3 _1934 = _1932; + _1934.x = _601; + float _607 = _1932.y + off.y; + _1934.y = _607; + vc = _1934; + vec2 _625 = _1934.xy * (1.0 / ((abs(_601) + abs(_607)) + _1932.z)); float _628 = _625.x; float _630 = _625.y; return vec2(((_628 + _630) + 1.0) * 0.5, ((_628 - _630) + 1.0) * 0.5); @@ -840,40 +840,52 @@ vs_trile_source_glsl430 := u8.[ count++; } int _1355 = int(round(trixel_material.w * 255.0)); - int _1366 = (_1355 >> 5) & 7; - float _1372 = max(float(_1366) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - float _1378 = float((_1355 >> 3) & 3) * 0.3333333432674407958984375; - vec3 _1384 = abs(fnormal.xyz); - float _1386 = _1384.x; - float _1388 = _1384.y; - bool _1389 = _1386 >= _1388; - bool _1397; - if (_1389) + float emittance = 0.0; + int roughnessInt = 0; + float roughness = 0.0500000007450580596923828125; + float metallic = 0.0; + if ((_1355 & 1) != 0) { - _1397 = _1386 >= _1384.z; + emittance = float((_1355 >> 1) & 127) * 0.0078740157186985015869140625; } else { - _1397 = _1389; + int _1375 = (_1355 >> 5) & 7; + roughnessInt = _1375; + roughness = max(float(_1375) * 0.14285714924335479736328125, 0.0500000007450580596923828125); + metallic = float((_1355 >> 3) & 3) * 0.3333333432674407958984375; + } + vec3 _1392 = abs(fnormal.xyz); + float _1394 = _1392.x; + float _1396 = _1392.y; + bool _1397 = _1394 >= _1396; + bool _1405; + if (_1397) + { + _1405 = _1394 >= _1392.z; + } + else + { + _1405 = _1397; } vec3 N; - if (_1397) + if (_1405) { N = vec3(sign(fnormal.x), 0.0, 0.0); } else { - bool _1410 = _1388 >= _1386; - bool _1418; - if (_1410) + bool _1418 = _1396 >= _1394; + bool _1426; + if (_1418) { - _1418 = _1388 >= _1384.z; + _1426 = _1396 >= _1392.z; } else { - _1418 = _1410; + _1426 = _1418; } - if (_1418) + if (_1426) { N = vec3(0.0, sign(fnormal.y), 0.0); } @@ -882,103 +894,101 @@ vs_trile_source_glsl430 := u8.[ N = vec3(0.0, 0.0, sign(fnormal.z)); } } - vec3 _1435 = normalize(cam - vpos); - vec3 _1439 = normalize(_271.sunPosition); - vec3 _1444 = normalize(_1435 + _1439); - vec3 _1451 = vec3(_1378); - vec3 _1452 = mix(vec3(0.039999999105930328369140625), trixel_material.xyz, _1451); - float param = max(dot(_1444, _1435), 0.0); - vec3 param_1 = _1452; - vec3 _1461 = fresnelSchlick(param, param_1); + vec3 _1443 = normalize(cam - vpos); + vec3 _1447 = normalize(_271.sunPosition); + vec3 _1452 = normalize(_1443 + _1447); + vec3 _1460 = mix(vec3(0.039999999105930328369140625), trixel_material.xyz, vec3(metallic)); + float param = max(dot(_1452, _1443), 0.0); + vec3 param_1 = _1460; + vec3 _1469 = fresnelSchlick(param, param_1); vec3 param_2 = N; - vec3 param_3 = _1444; - float param_4 = _1372; + vec3 param_3 = _1452; + float param_4 = roughness; vec3 param_5 = N; - vec3 param_6 = _1435; - vec3 param_7 = _1439; - float param_8 = _1372; - float _1495 = max(dot(N, _1439), 0.0); - float _1512 = 1.0 - _1378; - vec4 _1528 = _1275.mvp_shadow * vec4(floor(vpos * 16.0) * vec3(0.0625), 1.0); - vec3 _1539 = ((_1528.xyz / vec3(_1528.w)) * 0.5) + vec3(0.5); - float _1543 = _1539.z - 0.001000000047497451305389404296875; - vec3 _1898 = _1539; - _1898.z = _1543; - vec3 light = ((((((((vec3(1.0) - _1461) * _1512) * trixel_material.xyz) * vec3(0.3183410167694091796875)) + ((_1461 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * max(dot(N, _1435), 0.0)) * _1495) + 9.9999997473787516355514526367188e-05))) * texture(shadowtex_shadowsmp, vec3(_1898.xy, _1543))) * _1495) * _271.sunLightColor) * _271.sunIntensity; - vec3 _1580 = trileCenter + (N * 0.4900000095367431640625); - ivec3 _1586 = ivec3(mod(floor(trileCenter), vec3(32.0))); - ivec3 param_9 = _1586; - int param_10 = _1366; - vec4 _1612 = texture(ssaotex_trilesmp, vec2(gl_FragCoord.x / float(_1275.screen_w), gl_FragCoord.y / float(_1275.screen_h)), 0.0); - float _1613 = _1612.x; - bool _1623 = _1275.rdm_enabled == 1; - bool _1629; - if (_1623) + vec3 param_6 = _1443; + vec3 param_7 = _1447; + float param_8 = roughness; + float _1503 = max(dot(N, _1447), 0.0); + vec4 _1536 = _1275.mvp_shadow * vec4(floor(vpos * 16.0) * vec3(0.0625), 1.0); + vec3 _1547 = ((_1536.xyz / vec3(_1536.w)) * 0.5) + vec3(0.5); + float _1551 = _1547.z - 0.001000000047497451305389404296875; + vec3 _1906 = _1547; + _1906.z = _1551; + vec3 light = ((((((((vec3(1.0) - _1469) * (1.0 - metallic)) * trixel_material.xyz) * vec3(0.3183410167694091796875)) + ((_1469 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * max(dot(N, _1443), 0.0)) * _1503) + 9.9999997473787516355514526367188e-05))) * texture(shadowtex_shadowsmp, vec3(_1906.xy, _1551))) * _1503) * _271.sunLightColor) * _271.sunIntensity; + vec3 _1588 = trileCenter + (N * 0.4900000095367431640625); + ivec3 _1594 = ivec3(mod(floor(trileCenter), vec3(32.0))); + ivec3 param_9 = _1594; + int param_10 = roughnessInt; + vec4 _1620 = texture(ssaotex_trilesmp, vec2(gl_FragCoord.x / float(_1275.screen_w), gl_FragCoord.y / float(_1275.screen_h)), 0.0); + float _1621 = _1620.x; + bool _1631 = _1275.rdm_enabled == 1; + bool _1637; + if (_1631) { - _1629 = rdm_get_atlas_rect(param_9, param_10).z > 0.0; + _1637 = rdm_get_atlas_rect(param_9, param_10).z > 0.0; } else { - _1629 = _1623; + _1637 = _1631; } - if (_1629) + if (_1637) { - float param_11 = max(dot(N, _1435), 0.0); - vec3 param_12 = _1452; - float param_13 = _1372; - vec3 _1642 = FresnelSchlickRoughness(param_11, param_12, param_13); - vec3 _1649 = vpos - _1580; + float param_11 = max(dot(N, _1443), 0.0); + vec3 param_12 = _1460; + float param_13 = roughness; + vec3 _1650 = FresnelSchlickRoughness(param_11, param_12, param_13); + vec3 _1657 = vpos - _1588; vec3 param_14 = N; vec3 param_15 = -cv; - vec3 param_16 = _1580; - vec3 param_17 = _1649; - int param_18 = _1366; - ivec3 param_19 = _1586; - vec3 _1664 = sample_rdm(param_14, param_15, param_16, param_17, param_18, param_19) * _1275.rdm_tint; - float _1686 = max(dot(N, _1435), 0.0); - vec4 _1689 = texture(brdf_lut_rdmsmp, vec2(_1686, _1372)); - float _1699 = sin(_1372 * 3.141285419464111328125); - light += (((((mix(_1664, vec3(dot(_1664, vec3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875))), _1451) * ((_1642 * _1689.x) + vec3(_1689.y))) * _1275.rdm_spec_scale) * (1.0 - (0.699999988079071044921875 * _1699))) * (1.0 - (((0.89999997615814208984375 * _1372) * _1699) * pow(1.0 - _1686, 2.0)))) * (1.0 - clamp((_1372 - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); + vec3 param_16 = _1588; + vec3 param_17 = _1657; + int param_18 = roughnessInt; + ivec3 param_19 = _1594; + vec3 _1672 = sample_rdm(param_14, param_15, param_16, param_17, param_18, param_19) * _1275.rdm_tint; + float _1694 = max(dot(N, _1443), 0.0); + vec4 _1697 = texture(brdf_lut_rdmsmp, vec2(_1694, roughness)); + float _1707 = sin(roughness * 3.141285419464111328125); + light += (((((mix(_1672, vec3(dot(_1672, vec3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875))), vec3(metallic)) * ((_1650 * _1697.x) + vec3(_1697.y))) * _1275.rdm_spec_scale) * (1.0 - (0.699999988079071044921875 * _1707))) * (1.0 - (((0.89999997615814208984375 * roughness) * _1707) * pow(1.0 - _1694, 2.0)))) * (1.0 - clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); vec3 param_20 = N; - vec3 param_21 = _1649; - ivec3 param_22 = _1586; - light += (((((((vec3(1.0) - _1642) * _1512) * (sample_rdm_diff(param_20, param_21, param_22) * _1275.rdm_tint)) * vec3(0.3183410167694091796875)) * trixel_material.xyz) * _1613) * _1275.rdm_diff_scale); + vec3 param_21 = _1657; + ivec3 param_22 = _1594; + light += (((((((vec3(1.0) - _1650) * (1.0 - metallic)) * (sample_rdm_diff(param_20, param_21, param_22) * _1275.rdm_tint)) * vec3(0.3183410167694091796875)) * trixel_material.xyz) * _1621) * _1275.rdm_diff_scale); if (_1275.rdm_diff_scale < 0.001000000047497451305389404296875) { - light += (((_1275.ambient_color * _1275.ambient_intensity) * trixel_material.xyz) * _1613); + light += (((_1275.ambient_color * _1275.ambient_intensity) * trixel_material.xyz) * _1621); } } else { - light += (((_1275.ambient_color * _1275.ambient_intensity) * trixel_material.xyz) * _1613); - vec3 _1810 = reflect(-_1435, N); - vec3 R = _1810; - if (_1810.y < 0.0) + light += (((_1275.ambient_color * _1275.ambient_intensity) * trixel_material.xyz) * _1621); + vec3 _1818 = reflect(-_1443, N); + vec3 R = _1818; + if (_1818.y < 0.0) { R = reflect(R, vec3(0.0, 1.0, 0.0)); } vec3 param_23 = R; vec3 param_24 = _271.sunPosition; - light += ((_1461 * sky(param_23, param_24)) * 0.100000001490116119384765625); + light += ((_1469 * sky(param_23, param_24)) * 0.100000001490116119384765625); } - frag_color = vec4(mix(_271.deepColor, light + ((trixel_material.xyz * (float((_1355 >> 1) & 3) * 0.3333333432674407958984375)) * _1275.emissive_scale), vec3(smoothstep(0.0, _271.planeHeight, vpos.y))), 1.0); + frag_color = vec4(mix(_271.deepColor, light + ((trixel_material.xyz * emittance) * _1275.emissive_scale), vec3(smoothstep(0.0, _271.planeHeight, vpos.y))), 1.0); if (_1275.is_preview == 1) { - vec4 _1853 = frag_color; - vec3 _1857 = mix(_1853.xyz, vec3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), vec3(0.5)); - frag_color.x = _1857.x; - frag_color.y = _1857.y; - frag_color.z = _1857.z; + vec4 _1861 = frag_color; + vec3 _1865 = mix(_1861.xyz, vec3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), vec3(0.5)); + frag_color.x = _1865.x; + frag_color.y = _1865.y; + frag_color.z = _1865.z; } else { if (_1275.is_preview == 2) { - vec4 _1871 = frag_color; - vec3 _1875 = mix(_1871.xyz, vec3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), vec3(0.5)); - frag_color.x = _1875.x; - frag_color.y = _1875.y; - frag_color.z = _1875.z; + vec4 _1879 = frag_color; + vec3 _1883 = mix(_1879.xyz, vec3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), vec3(0.5)); + frag_color.x = _1883.x; + frag_color.y = _1883.y; + frag_color.z = _1883.z; } } } @@ -1206,43 +1216,43 @@ fs_trile_source_glsl430 := u8.[ 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x76,0x63,0x20,0x3d,0x20,0x76,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20, 0x32,0x29,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x31, - 0x33,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x5f,0x31,0x39,0x31,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x76,0x2e,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x31,0x33,0x2e,0x79,0x20,0x3d, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x32, + 0x31,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x5f,0x31,0x39,0x32,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x76,0x2e,0x79,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x32,0x31,0x2e,0x79,0x20,0x3d, 0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x63, - 0x20,0x3d,0x20,0x5f,0x31,0x39,0x31,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2f, 0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39, - 0x31,0x37,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x31,0x39,0x31,0x37,0x2e,0x7a,0x20,0x3d,0x20,0x76,0x2e,0x78,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x31,0x37,0x2e,0x78,0x20, + 0x32,0x35,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x5f,0x31,0x39,0x32,0x35,0x2e,0x7a,0x20,0x3d,0x20,0x76,0x2e,0x78,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x32,0x35,0x2e,0x78,0x20, 0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x31,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, + 0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x69,0x6e,0x64,0x65,0x78,0x20, 0x25,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31, - 0x39,0x32,0x31,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x31,0x39,0x32,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32, - 0x31,0x2e,0x7a,0x20,0x2a,0x20,0x28,0x2d,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x31, + 0x39,0x32,0x39,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x5f,0x31,0x39,0x32,0x39,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32, + 0x39,0x2e,0x7a,0x20,0x2a,0x20,0x28,0x2d,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x39, 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x5f,0x31,0x39,0x32,0x34,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x5f,0x31,0x39,0x33,0x32,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x30,0x31,0x20,0x3d,0x20,0x5f,0x31, - 0x39,0x32,0x34,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x66,0x66,0x2e,0x78,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x32,0x36,0x20,0x3d,0x20, - 0x5f,0x31,0x39,0x32,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x32,0x36, + 0x39,0x33,0x32,0x2e,0x78,0x20,0x2b,0x20,0x6f,0x66,0x66,0x2e,0x78,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x33,0x34,0x20,0x3d,0x20, + 0x5f,0x31,0x39,0x33,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x33,0x34, 0x2e,0x78,0x20,0x3d,0x20,0x5f,0x36,0x30,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x30,0x37,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32, - 0x34,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x66,0x66,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x5f,0x31,0x39,0x32,0x36,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x36,0x30,0x37,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x36,0x3b, + 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x30,0x37,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33, + 0x32,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x66,0x66,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x5f,0x31,0x39,0x33,0x34,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x36,0x30,0x37,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33,0x34,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x36,0x32,0x35,0x20,0x3d, - 0x20,0x5f,0x31,0x39,0x32,0x36,0x2e,0x78,0x79,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30, + 0x20,0x5f,0x31,0x39,0x33,0x34,0x2e,0x78,0x79,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30, 0x20,0x2f,0x20,0x28,0x28,0x61,0x62,0x73,0x28,0x5f,0x36,0x30,0x31,0x29,0x20,0x2b, 0x20,0x61,0x62,0x73,0x28,0x5f,0x36,0x30,0x37,0x29,0x29,0x20,0x2b,0x20,0x5f,0x31, - 0x39,0x32,0x34,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x39,0x33,0x32,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, 0x61,0x74,0x20,0x5f,0x36,0x32,0x38,0x20,0x3d,0x20,0x5f,0x36,0x32,0x35,0x2e,0x78, 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x33,0x30, 0x20,0x3d,0x20,0x5f,0x36,0x32,0x35,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72, @@ -1889,360 +1899,377 @@ fs_trile_source_glsl430 := u8.[ 0x74,0x20,0x5f,0x31,0x33,0x35,0x35,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28,0x72,0x6f, 0x75,0x6e,0x64,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72, 0x69,0x61,0x6c,0x2e,0x77,0x20,0x2a,0x20,0x32,0x35,0x35,0x2e,0x30,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x33,0x36,0x36,0x20,0x3d, - 0x20,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26,0x20, - 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33, - 0x37,0x32,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f, - 0x31,0x33,0x36,0x36,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37, - 0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32, - 0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30, - 0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32, - 0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x31,0x33,0x37,0x38,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28, - 0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36, - 0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x33,0x38,0x34,0x20,0x3d, - 0x20,0x61,0x62,0x73,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33, - 0x38,0x36,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x38,0x38,0x20,0x3d,0x20, - 0x5f,0x31,0x33,0x38,0x34,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, - 0x6c,0x20,0x5f,0x31,0x33,0x38,0x39,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x36,0x20, - 0x3e,0x3d,0x20,0x5f,0x31,0x33,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x31,0x33,0x39,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x33,0x38,0x39,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x33,0x39,0x37,0x20,0x3d,0x20,0x5f, - 0x31,0x33,0x38,0x36,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x38,0x34,0x2e,0x7a,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31, - 0x33,0x39,0x37,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x39,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x4e,0x3b,0x0a,0x20, + 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x74,0x74, + 0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x69,0x6e,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49,0x6e,0x74, + 0x20,0x3d,0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e,0x30,0x35, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39, + 0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d, + 0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x5f, + 0x31,0x33,0x35,0x35,0x20,0x26,0x20,0x31,0x29,0x20,0x21,0x3d,0x20,0x30,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6d, + 0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28, + 0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20,0x31,0x29,0x20,0x26,0x20,0x31, + 0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x37,0x38,0x37,0x34,0x30,0x31, + 0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35,0x30,0x31,0x35,0x38,0x36,0x39,0x31,0x34, + 0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x33,0x37,0x35,0x20,0x3d,0x20,0x28, + 0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26,0x20,0x37,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65, + 0x73,0x73,0x49,0x6e,0x74,0x20,0x3d,0x20,0x5f,0x31,0x33,0x37,0x35,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, + 0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x33, + 0x37,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34, + 0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31, + 0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37, + 0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31, + 0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x65,0x74, + 0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f, + 0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20, + 0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37, + 0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31, + 0x33,0x39,0x32,0x20,0x3d,0x20,0x61,0x62,0x73,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61, + 0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x5f,0x31,0x33,0x39,0x34,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x32,0x2e, + 0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33, + 0x39,0x36,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x33,0x39,0x37,0x20,0x3d,0x20,0x5f, + 0x31,0x33,0x39,0x34,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x39,0x36,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x34,0x30,0x35,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x33,0x39,0x37,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20, - 0x76,0x65,0x63,0x33,0x28,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61, - 0x6c,0x2e,0x78,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x31,0x34,0x31,0x30,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x38, - 0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x38,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x34,0x31,0x38,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x34,0x31,0x30, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x34,0x31,0x38,0x20,0x3d,0x20, - 0x5f,0x31,0x33,0x38,0x38,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x38,0x34,0x2e,0x7a, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, - 0x31,0x34,0x31,0x38,0x20,0x3d,0x20,0x5f,0x31,0x34,0x31,0x30,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x31,0x34,0x31,0x38,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x73, - 0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x79,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x5f,0x31,0x34,0x33,0x35,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69, - 0x7a,0x65,0x28,0x63,0x61,0x6d,0x20,0x2d,0x20,0x76,0x70,0x6f,0x73,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34,0x33,0x39,0x20,0x3d, - 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x37,0x31,0x2e, - 0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34,0x34,0x34,0x20,0x3d,0x20,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x31,0x34,0x33,0x35,0x20,0x2b, - 0x20,0x5f,0x31,0x34,0x33,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x31,0x34,0x35,0x31,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x5f, - 0x31,0x33,0x37,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x34,0x35,0x32,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35,0x39, - 0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29,0x2c, - 0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c, - 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x34,0x35,0x31,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x34,0x30, + 0x35,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x34,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33, + 0x39,0x32,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x5f,0x31,0x34,0x30,0x35,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x37, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, + 0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x34,0x30, + 0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x69,0x67,0x6e,0x28,0x66, + 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, + 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x34,0x31,0x38,0x20,0x3d,0x20, + 0x5f,0x31,0x33,0x39,0x36,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x39,0x34,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x34, + 0x32,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, + 0x5f,0x31,0x34,0x31,0x38,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x34, + 0x32,0x36,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x36,0x20,0x3e,0x3d,0x20,0x5f,0x31, + 0x33,0x39,0x32,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x5f,0x31,0x34,0x32,0x36,0x20,0x3d,0x20,0x5f,0x31,0x34,0x31, + 0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x34,0x32,0x36,0x29,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30, + 0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c, + 0x2e,0x79,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33, + 0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28, + 0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34,0x34,0x33,0x20,0x3d,0x20,0x6e,0x6f, + 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x61,0x6d,0x20,0x2d,0x20,0x76,0x70, + 0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31, + 0x34,0x34,0x37,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, + 0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34,0x35, + 0x32,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x31, + 0x34,0x34,0x33,0x20,0x2b,0x20,0x5f,0x31,0x34,0x34,0x37,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34,0x36,0x30,0x20,0x3d,0x20,0x6d, + 0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39, + 0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31, + 0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d, + 0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63, + 0x33,0x28,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a,0x20,0x20, 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20, - 0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x34,0x34,0x34,0x2c,0x20,0x5f, - 0x31,0x34,0x33,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x34,0x35,0x32,0x2c,0x20,0x5f, + 0x31,0x34,0x34,0x33,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20, - 0x5f,0x31,0x34,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x34,0x36,0x31,0x20,0x3d,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53, + 0x5f,0x31,0x34,0x36,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, + 0x5f,0x31,0x34,0x36,0x39,0x20,0x3d,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53, 0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61, 0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20, 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d, - 0x20,0x5f,0x31,0x34,0x34,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x5f,0x31,0x33,0x37, - 0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x35,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x31,0x34,0x33, - 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x31,0x34,0x33,0x39,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d, - 0x20,0x5f,0x31,0x33,0x37,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x31,0x34,0x39,0x35,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f, - 0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31,0x34,0x33,0x39,0x29,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35, - 0x31,0x32,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x33,0x37,0x38, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x35,0x32,0x38, - 0x20,0x3d,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61, - 0x64,0x6f,0x77,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x66,0x6c,0x6f,0x6f,0x72, - 0x28,0x76,0x70,0x6f,0x73,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x35, - 0x33,0x39,0x20,0x3d,0x20,0x28,0x28,0x5f,0x31,0x35,0x32,0x38,0x2e,0x78,0x79,0x7a, - 0x20,0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x35,0x32,0x38,0x2e,0x77,0x29, - 0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x31,0x35,0x34,0x33,0x20,0x3d,0x20,0x5f,0x31,0x35,0x33,0x39,0x2e,0x7a,0x20, - 0x2d,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37, - 0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32, - 0x39,0x36,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x38,0x39,0x38,0x20,0x3d,0x20,0x5f,0x31,0x35,0x33,0x39,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x5f,0x31,0x38,0x39,0x38,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x35, - 0x34,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x69,0x67, - 0x68,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63, - 0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x31,0x34,0x36,0x31,0x29,0x20, - 0x2a,0x20,0x5f,0x31,0x35,0x31,0x32,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65, - 0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20, - 0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30, - 0x31,0x36,0x37,0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29, - 0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x31,0x34,0x36,0x31,0x20,0x2a,0x20,0x28,0x44, - 0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d, - 0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20, - 0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x6d, - 0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31,0x34,0x33,0x35,0x29, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34,0x39,0x35,0x29, - 0x20,0x2b,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37, - 0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36, - 0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x74,0x65, - 0x78,0x74,0x75,0x72,0x65,0x28,0x73,0x68,0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x5f, - 0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x5f,0x31,0x38,0x39,0x38,0x2e,0x78,0x79,0x2c,0x20,0x5f,0x31,0x35,0x34,0x33,0x29, - 0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34,0x39,0x35,0x29,0x20,0x2a,0x20,0x5f,0x32, - 0x37,0x31,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72, - 0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65, - 0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x35,0x38,0x30,0x20,0x3d,0x20,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e, - 0x74,0x65,0x72,0x20,0x2b,0x20,0x28,0x4e,0x20,0x2a,0x20,0x30,0x2e,0x34,0x39,0x30, - 0x30,0x30,0x30,0x30,0x30,0x39,0x35,0x33,0x36,0x37,0x34,0x33,0x31,0x36,0x34,0x30, - 0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x35,0x38,0x36,0x20,0x3d,0x20,0x69,0x76,0x65,0x63,0x33,0x28,0x6d,0x6f, - 0x64,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e, - 0x74,0x65,0x72,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x33,0x32,0x2e,0x30,0x29, - 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x5f,0x31,0x35,0x38,0x36,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x20, - 0x3d,0x20,0x5f,0x31,0x33,0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63, - 0x34,0x20,0x5f,0x31,0x36,0x31,0x32,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72, - 0x65,0x28,0x73,0x73,0x61,0x6f,0x74,0x65,0x78,0x5f,0x74,0x72,0x69,0x6c,0x65,0x73, - 0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67, - 0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28, - 0x5f,0x31,0x32,0x37,0x35,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c, - 0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20, - 0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x73,0x63, - 0x72,0x65,0x65,0x6e,0x5f,0x68,0x29,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x31,0x33,0x20, - 0x3d,0x20,0x5f,0x31,0x36,0x31,0x32,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62, - 0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x36,0x32,0x33,0x20,0x3d,0x20,0x5f,0x31,0x32,0x37, - 0x35,0x2e,0x72,0x64,0x6d,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x20,0x3d,0x3d, - 0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x36, - 0x32,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x36,0x32, - 0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x31,0x36,0x32,0x39,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f,0x67,0x65,0x74, - 0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x65,0x63,0x74,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x39,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x29,0x2e,0x7a, - 0x20,0x3e,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x36,0x32,0x39,0x20,0x3d,0x20,0x5f,0x31,0x36, - 0x32,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x36,0x32,0x39,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x31,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, - 0x4e,0x2c,0x20,0x5f,0x31,0x34,0x33,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x32,0x20,0x3d,0x20,0x5f,0x31,0x34,0x35,0x32,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x33,0x20,0x3d,0x20,0x5f,0x31,0x33,0x37,0x32,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x36, - 0x34,0x32,0x20,0x3d,0x20,0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c, - 0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x31,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x36,0x34,0x39,0x20,0x3d, - 0x20,0x76,0x70,0x6f,0x73,0x20,0x2d,0x20,0x5f,0x31,0x35,0x38,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x34,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35,0x20, - 0x3d,0x20,0x2d,0x63,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36,0x20,0x3d,0x20,0x5f, - 0x31,0x35,0x38,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x37,0x20,0x3d,0x20,0x5f,0x31, - 0x36,0x34,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x38,0x20,0x3d,0x20,0x5f,0x31,0x33,0x36, - 0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x39,0x20,0x3d,0x20,0x5f,0x31,0x35,0x38, - 0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x36,0x36,0x34,0x20,0x3d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x72, - 0x64,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x34,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x38,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x39,0x29,0x20,0x2a, - 0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x74,0x69,0x6e,0x74,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x31,0x36,0x38,0x36,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e, - 0x2c,0x20,0x5f,0x31,0x34,0x33,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x36, - 0x38,0x39,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x62,0x72,0x64, - 0x66,0x5f,0x6c,0x75,0x74,0x5f,0x72,0x64,0x6d,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65, - 0x63,0x32,0x28,0x5f,0x31,0x36,0x38,0x36,0x2c,0x20,0x5f,0x31,0x33,0x37,0x32,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x31,0x36,0x39,0x39,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x5f,0x31,0x33, - 0x37,0x32,0x20,0x2a,0x20,0x33,0x2e,0x31,0x34,0x31,0x32,0x38,0x35,0x34,0x31,0x39, - 0x34,0x36,0x34,0x31,0x31,0x31,0x33,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20, - 0x28,0x28,0x28,0x28,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31,0x36,0x36,0x34,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x36,0x36,0x34,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39,0x39,0x39,0x39,0x32, - 0x37,0x35,0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30, - 0x2e,0x37,0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36,0x31,0x38,0x32,0x32, - 0x35,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32, - 0x32,0x30,0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32,0x32,0x39,0x34,0x39, - 0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x29,0x2c,0x20,0x5f,0x31,0x34,0x35,0x31,0x29, - 0x20,0x2a,0x20,0x28,0x28,0x5f,0x31,0x36,0x34,0x32,0x20,0x2a,0x20,0x5f,0x31,0x36, - 0x38,0x39,0x2e,0x78,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x36, - 0x38,0x39,0x2e,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e, - 0x72,0x64,0x6d,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x20, - 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x30,0x2e,0x36,0x39,0x39,0x39, - 0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32, - 0x31,0x38,0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x36,0x39,0x39,0x29,0x29,0x29,0x20, - 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28,0x28,0x30,0x2e,0x38,0x39, - 0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39, - 0x38,0x34,0x33,0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x33,0x37,0x32,0x29,0x20,0x2a, - 0x20,0x5f,0x31,0x36,0x39,0x39,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x31,0x2e, - 0x30,0x20,0x2d,0x20,0x5f,0x31,0x36,0x38,0x36,0x2c,0x20,0x32,0x2e,0x30,0x29,0x29, - 0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6c,0x61,0x6d, - 0x70,0x28,0x28,0x5f,0x31,0x33,0x37,0x32,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20, - 0x2a,0x20,0x33,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x35,0x33,0x38,0x36,0x30, - 0x34,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x30,0x20,0x3d, - 0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x20,0x3d,0x20,0x5f,0x31,0x36,0x34, - 0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x32,0x20,0x3d,0x20,0x5f,0x31,0x35,0x38, - 0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74, - 0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28, - 0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x31,0x36,0x34,0x32,0x29,0x20,0x2a,0x20, - 0x5f,0x31,0x35,0x31,0x32,0x29,0x20,0x2a,0x20,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65, - 0x5f,0x72,0x64,0x6d,0x5f,0x64,0x69,0x66,0x66,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x30,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x32,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e, - 0x72,0x64,0x6d,0x5f,0x74,0x69,0x6e,0x74,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39, - 0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x74, + 0x20,0x5f,0x31,0x34,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67, + 0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20, + 0x5f,0x31,0x34,0x34,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x31,0x34,0x34,0x37,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x30,0x33,0x20, + 0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31,0x34, + 0x34,0x37,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, + 0x65,0x63,0x34,0x20,0x5f,0x31,0x35,0x33,0x36,0x20,0x3d,0x20,0x5f,0x31,0x32,0x37, + 0x35,0x2e,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x20,0x2a,0x20,0x76, + 0x65,0x63,0x34,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x76,0x70,0x6f,0x73,0x20,0x2a, + 0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, + 0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x35,0x34,0x37,0x20,0x3d,0x20,0x28,0x28, + 0x5f,0x31,0x35,0x33,0x36,0x2e,0x78,0x79,0x7a,0x20,0x2f,0x20,0x76,0x65,0x63,0x33, + 0x28,0x5f,0x31,0x35,0x33,0x36,0x2e,0x77,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35, + 0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x35,0x31,0x20,0x3d, + 0x20,0x5f,0x31,0x35,0x34,0x37,0x2e,0x7a,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x31, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33, + 0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x30,0x36,0x20,0x3d, + 0x20,0x5f,0x31,0x35,0x34,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x30, + 0x36,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x35,0x35,0x31,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x28,0x28, + 0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20, + 0x2d,0x20,0x5f,0x31,0x34,0x36,0x39,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20, + 0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x74, 0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78, - 0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x31,0x33,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63, - 0x61,0x6c,0x65,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x64,0x69,0x66,0x66, - 0x5f,0x73,0x63,0x61,0x6c,0x65,0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30, - 0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35, - 0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28, - 0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69, - 0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a, - 0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c, - 0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x31,0x33,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20, - 0x28,0x28,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61, - 0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, - 0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72, - 0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x31,0x33, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x38,0x31,0x30,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28, - 0x2d,0x5f,0x31,0x34,0x33,0x35,0x2c,0x20,0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x52,0x20,0x3d,0x20,0x5f,0x31,0x38, - 0x31,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x31,0x38,0x31,0x30,0x2e,0x79,0x20,0x3c,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x52,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74, - 0x28,0x52,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, - 0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x33,0x20,0x3d,0x20,0x52,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x34,0x20,0x3d,0x20,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x50, - 0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x5f,0x31,0x34,0x36, - 0x31,0x20,0x2a,0x20,0x73,0x6b,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x33, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x34,0x29,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36, - 0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6d,0x69,0x78,0x28,0x5f, - 0x32,0x37,0x31,0x2e,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x6c, - 0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x28,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f, - 0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28, - 0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20, - 0x31,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33, - 0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39, - 0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e, - 0x65,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70, - 0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x37,0x31,0x2e,0x70,0x6c,0x61,0x6e,0x65, - 0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x76,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29, - 0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76,0x69,0x65, - 0x77,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x38,0x35,0x33, - 0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x38,0x35, - 0x37,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x35,0x33,0x2e,0x78,0x79, - 0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30, - 0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31, - 0x32,0x35,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30, - 0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x38,0x35,0x37,0x2e,0x78, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x38,0x35,0x37,0x2e,0x79, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x38,0x35,0x37,0x2e,0x7a, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, - 0x66,0x20,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76, - 0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x38,0x37,0x31,0x20,0x3d,0x20,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x38,0x37,0x35,0x20, - 0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x37,0x31,0x2e,0x78,0x79,0x7a,0x2c, - 0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30, - 0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30, - 0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30, - 0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33, - 0x31,0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x38, - 0x37,0x35,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d, - 0x20,0x5f,0x31,0x38,0x37,0x35,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x79,0x7a,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38, + 0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39,0x36, + 0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x31,0x34,0x36,0x39,0x20, + 0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47, + 0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61, + 0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20, + 0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38, + 0x29,0x29,0x29,0x20,0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x28,0x34,0x2e,0x30, + 0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31, + 0x34,0x34,0x33,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31, + 0x35,0x30,0x33,0x29,0x20,0x2b,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37, + 0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35, + 0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20, + 0x2a,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x73,0x68,0x61,0x64,0x6f,0x77, + 0x74,0x65,0x78,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x2c,0x20,0x76, + 0x65,0x63,0x33,0x28,0x5f,0x31,0x39,0x30,0x36,0x2e,0x78,0x79,0x2c,0x20,0x5f,0x31, + 0x35,0x35,0x31,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x30,0x33,0x29,0x20, + 0x2a,0x20,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43, + 0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e, + 0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, + 0x65,0x63,0x33,0x20,0x5f,0x31,0x35,0x38,0x38,0x20,0x3d,0x20,0x74,0x72,0x69,0x6c, + 0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x20,0x2b,0x20,0x28,0x4e,0x20,0x2a,0x20,0x30, + 0x2e,0x34,0x39,0x30,0x30,0x30,0x30,0x30,0x30,0x39,0x35,0x33,0x36,0x37,0x34,0x33, + 0x31,0x36,0x34,0x30,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76, + 0x65,0x63,0x33,0x20,0x5f,0x31,0x35,0x39,0x34,0x20,0x3d,0x20,0x69,0x76,0x65,0x63, + 0x33,0x28,0x6d,0x6f,0x64,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x74,0x72,0x69,0x6c, + 0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x33, + 0x32,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63, + 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x5f,0x31,0x35,0x39, + 0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x31,0x30,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49, + 0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x36, + 0x32,0x30,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x73,0x73,0x61, + 0x6f,0x74,0x65,0x78,0x5f,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x2c,0x20,0x76, + 0x65,0x63,0x32,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64, + 0x2e,0x78,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x32,0x37,0x35, + 0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c,0x20,0x67,0x6c,0x5f,0x46, + 0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20,0x2f,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f, + 0x68,0x29,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x32,0x31,0x20,0x3d,0x20,0x5f,0x31,0x36, + 0x32,0x30,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f, + 0x31,0x36,0x33,0x31,0x20,0x3d,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d, + 0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x36,0x33,0x37,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x36,0x33,0x31,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x36,0x33, + 0x37,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f,0x67,0x65,0x74,0x5f,0x61,0x74,0x6c,0x61, + 0x73,0x5f,0x72,0x65,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x2c,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x29,0x2e,0x7a,0x20,0x3e,0x20,0x30,0x2e, + 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x5f,0x31,0x36,0x33,0x37,0x20,0x3d,0x20,0x5f,0x31,0x36,0x33,0x31,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x36, + 0x33,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31, + 0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31, + 0x34,0x34,0x33,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, + 0x32,0x20,0x3d,0x20,0x5f,0x31,0x34,0x36,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, + 0x33,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x36,0x35, + 0x30,0x20,0x3d,0x20,0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69, + 0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28,0x70,0x61,0x72,0x61, + 0x6d,0x5f,0x31,0x31,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x2c,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x36,0x35,0x37,0x20,0x3d,0x20, + 0x76,0x70,0x6f,0x73,0x20,0x2d,0x20,0x5f,0x31,0x35,0x38,0x38,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x31,0x34,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35,0x20,0x3d, + 0x20,0x2d,0x63,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, + 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36,0x20,0x3d,0x20,0x5f,0x31, + 0x35,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63, + 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x37,0x20,0x3d,0x20,0x5f,0x31,0x36, + 0x35,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68, + 0x6e,0x65,0x73,0x73,0x49,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x39,0x20, + 0x3d,0x20,0x5f,0x31,0x35,0x39,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x36,0x37,0x32,0x20,0x3d,0x20,0x73,0x61, + 0x6d,0x70,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, + 0x34,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35,0x2c,0x20,0x70,0x61,0x72, + 0x61,0x6d,0x5f,0x31,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x37,0x2c, + 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x38,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x31,0x39,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d, + 0x5f,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x39,0x34,0x20,0x3d,0x20,0x6d,0x61,0x78, + 0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31,0x34,0x34,0x33,0x29,0x2c,0x20, + 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, + 0x63,0x34,0x20,0x5f,0x31,0x36,0x39,0x37,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75, + 0x72,0x65,0x28,0x62,0x72,0x64,0x66,0x5f,0x6c,0x75,0x74,0x5f,0x72,0x64,0x6d,0x73, + 0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x36,0x39,0x34,0x2c,0x20, + 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x30,0x37, + 0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, + 0x20,0x2a,0x20,0x33,0x2e,0x31,0x34,0x31,0x32,0x38,0x35,0x34,0x31,0x39,0x34,0x36, + 0x34,0x31,0x31,0x31,0x33,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28, + 0x28,0x28,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31,0x36,0x37,0x32,0x2c,0x20,0x76,0x65, + 0x63,0x33,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x36,0x37,0x32,0x2c,0x20,0x76,0x65, + 0x63,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39,0x39,0x39,0x39,0x32,0x37,0x35, + 0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x37, + 0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36,0x31,0x38,0x32,0x32,0x35,0x30, + 0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x32,0x30, + 0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32,0x32,0x39,0x34,0x39,0x32,0x31, + 0x38,0x37,0x35,0x29,0x29,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x65,0x74, + 0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x5f,0x31,0x36,0x35, + 0x30,0x20,0x2a,0x20,0x5f,0x31,0x36,0x39,0x37,0x2e,0x78,0x29,0x20,0x2b,0x20,0x76, + 0x65,0x63,0x33,0x28,0x5f,0x31,0x36,0x39,0x37,0x2e,0x79,0x29,0x29,0x29,0x20,0x2a, + 0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x73,0x70,0x65,0x63,0x5f, + 0x73,0x63,0x61,0x6c,0x65,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20, + 0x28,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30, + 0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x20,0x2a,0x20,0x5f,0x31, + 0x37,0x30,0x37,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20, + 0x28,0x28,0x28,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35, + 0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x20,0x2a,0x20,0x72, + 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x20,0x2a,0x20,0x5f,0x31,0x37,0x30, + 0x37,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f, + 0x31,0x36,0x39,0x34,0x2c,0x20,0x32,0x2e,0x30,0x29,0x29,0x29,0x29,0x20,0x2a,0x20, + 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x72,0x6f, + 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a, + 0x20,0x33,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x35,0x33,0x38,0x36,0x30,0x34, + 0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, + 0x31,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x30,0x20,0x3d,0x20, + 0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x20,0x3d,0x20,0x5f,0x31,0x36,0x35,0x37, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x32,0x20,0x3d,0x20,0x5f,0x31,0x35,0x39,0x34, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20, + 0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31, + 0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x31,0x36,0x35,0x30,0x29,0x20,0x2a,0x20,0x28, + 0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29, + 0x20,0x2a,0x20,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x64, + 0x69,0x66,0x66,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x30,0x2c,0x20,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x32,0x31,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x32, + 0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x74,0x69, + 0x6e,0x74,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31, + 0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39, + 0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f, + 0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20, + 0x5f,0x31,0x36,0x32,0x31,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72, + 0x64,0x6d,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x32,0x37, + 0x35,0x2e,0x72,0x64,0x6d,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65, + 0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34, + 0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34, + 0x32,0x39,0x36,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69, + 0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e, + 0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20, + 0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e, + 0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65, + 0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20, + 0x2a,0x20,0x5f,0x31,0x36,0x32,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, + 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x5f,0x31,0x32, + 0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74, + 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x74,0x72, + 0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79, + 0x7a,0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x32,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x38,0x31,0x38,0x20, + 0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x2d,0x5f,0x31,0x34,0x34,0x33, + 0x2c,0x20,0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, + 0x63,0x33,0x20,0x52,0x20,0x3d,0x20,0x5f,0x31,0x38,0x31,0x38,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x38,0x31,0x38,0x2e, + 0x79,0x20,0x3c,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52, + 0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x52,0x2c,0x20,0x76,0x65, + 0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30, + 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x32,0x33,0x20,0x3d,0x20,0x52,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x34,0x20,0x3d, + 0x20,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f, + 0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74, + 0x20,0x2b,0x3d,0x20,0x28,0x28,0x5f,0x31,0x34,0x36,0x39,0x20,0x2a,0x20,0x73,0x6b, + 0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x33,0x2c,0x20,0x70,0x61,0x72,0x61, + 0x6d,0x5f,0x32,0x34,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34, + 0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, + 0x76,0x65,0x63,0x34,0x28,0x6d,0x69,0x78,0x28,0x5f,0x32,0x37,0x31,0x2e,0x64,0x65, + 0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x2c,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b, + 0x20,0x28,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69, + 0x61,0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e, + 0x63,0x65,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x65,0x6d,0x69,0x73, + 0x73,0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x2c,0x20,0x76,0x65,0x63, + 0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30, + 0x2c,0x20,0x5f,0x32,0x37,0x31,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67, + 0x68,0x74,0x2c,0x20,0x76,0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x29,0x2c,0x20,0x31, + 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x32, + 0x37,0x35,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d, + 0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x38,0x36,0x31,0x20,0x3d,0x20,0x66, + 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x38,0x36,0x35,0x20,0x3d,0x20, + 0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x36,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76, + 0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39, + 0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20, + 0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37, + 0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20,0x31,0x2e,0x30,0x29, + 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x38,0x37,0x35,0x2e,0x7a,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a, - 0x0a,0x00, + 0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x38,0x36,0x35,0x2e,0x78,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x38,0x36,0x35,0x2e,0x79,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x38,0x36,0x35,0x2e,0x7a,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, + 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, + 0x31,0x32,0x37,0x35,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20, + 0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x34, + 0x20,0x5f,0x31,0x38,0x37,0x39,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x38,0x38,0x33,0x20,0x3d,0x20,0x6d,0x69, + 0x78,0x28,0x5f,0x31,0x38,0x37,0x39,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63, + 0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30, + 0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32, + 0x35,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38, + 0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29, + 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, + 0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x38,0x38,0x33,0x2e,0x78, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x38, + 0x38,0x33,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d, + 0x20,0x5f,0x31,0x38,0x38,0x33,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, ]; /* #version 300 es @@ -2641,32 +2668,32 @@ vs_trile_source_glsl300es := u8.[ highp vec3 vc = v; if ((index / 2) == 0) { - highp vec3 _1913 = vc; - _1913.z = v.y; - _1913.y = v.z; - vc = _1913; + highp vec3 _1921 = vc; + _1921.z = v.y; + _1921.y = v.z; + vc = _1921; } if ((index / 2) == 2) { - highp vec3 _1917 = vc; - _1917.z = v.x; - _1917.x = v.z; - vc = _1917; + highp vec3 _1925 = vc; + _1925.z = v.x; + _1925.x = v.z; + vc = _1925; } if ((index % 2) == 1) { - highp vec3 _1921 = vc; - _1921.z = _1921.z * (-1.0); - vc = _1921; + highp vec3 _1929 = vc; + _1929.z = _1929.z * (-1.0); + vc = _1929; } - highp vec3 _1924 = vc; - highp float _601 = _1924.x + off.x; - highp vec3 _1926 = _1924; - _1926.x = _601; - highp float _607 = _1924.y + off.y; - _1926.y = _607; - vc = _1926; - highp vec2 _625 = _1926.xy * (1.0 / ((abs(_601) + abs(_607)) + _1924.z)); + highp vec3 _1932 = vc; + highp float _601 = _1932.x + off.x; + highp vec3 _1934 = _1932; + _1934.x = _601; + highp float _607 = _1932.y + off.y; + _1934.y = _607; + vc = _1934; + highp vec2 _625 = _1934.xy * (1.0 / ((abs(_601) + abs(_607)) + _1932.z)); highp float _628 = _625.x; highp float _630 = _625.y; return vec2(((_628 + _630) + 1.0) * 0.5, ((_628 - _630) + 1.0) * 0.5); @@ -2948,40 +2975,52 @@ vs_trile_source_glsl300es := u8.[ count++; } int _1355 = int(round(trixel_material.w * 255.0)); - int _1366 = (_1355 >> 5) & 7; - highp float _1372 = max(float(_1366) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - highp float _1378 = float((_1355 >> 3) & 3) * 0.3333333432674407958984375; - highp vec3 _1384 = abs(fnormal.xyz); - highp float _1386 = _1384.x; - highp float _1388 = _1384.y; - bool _1389 = _1386 >= _1388; - bool _1397; - if (_1389) + highp float emittance = 0.0; + int roughnessInt = 0; + highp float roughness = 0.0500000007450580596923828125; + highp float metallic = 0.0; + if ((_1355 & 1) != 0) { - _1397 = _1386 >= _1384.z; + emittance = float((_1355 >> 1) & 127) * 0.0078740157186985015869140625; } else { - _1397 = _1389; + int _1375 = (_1355 >> 5) & 7; + roughnessInt = _1375; + roughness = max(float(_1375) * 0.14285714924335479736328125, 0.0500000007450580596923828125); + metallic = float((_1355 >> 3) & 3) * 0.3333333432674407958984375; + } + highp vec3 _1392 = abs(fnormal.xyz); + highp float _1394 = _1392.x; + highp float _1396 = _1392.y; + bool _1397 = _1394 >= _1396; + bool _1405; + if (_1397) + { + _1405 = _1394 >= _1392.z; + } + else + { + _1405 = _1397; } highp vec3 N; - if (_1397) + if (_1405) { N = vec3(sign(fnormal.x), 0.0, 0.0); } else { - bool _1410 = _1388 >= _1386; - bool _1418; - if (_1410) + bool _1418 = _1396 >= _1394; + bool _1426; + if (_1418) { - _1418 = _1388 >= _1384.z; + _1426 = _1396 >= _1392.z; } else { - _1418 = _1410; + _1426 = _1418; } - if (_1418) + if (_1426) { N = vec3(0.0, sign(fnormal.y), 0.0); } @@ -2990,103 +3029,101 @@ vs_trile_source_glsl300es := u8.[ N = vec3(0.0, 0.0, sign(fnormal.z)); } } - highp vec3 _1435 = normalize(cam - vpos); - highp vec3 _1439 = normalize(_271.sunPosition); - highp vec3 _1444 = normalize(_1435 + _1439); - highp vec3 _1451 = vec3(_1378); - highp vec3 _1452 = mix(vec3(0.039999999105930328369140625), trixel_material.xyz, _1451); - highp float param = max(dot(_1444, _1435), 0.0); - highp vec3 param_1 = _1452; - highp vec3 _1461 = fresnelSchlick(param, param_1); + highp vec3 _1443 = normalize(cam - vpos); + highp vec3 _1447 = normalize(_271.sunPosition); + highp vec3 _1452 = normalize(_1443 + _1447); + highp vec3 _1460 = mix(vec3(0.039999999105930328369140625), trixel_material.xyz, vec3(metallic)); + highp float param = max(dot(_1452, _1443), 0.0); + highp vec3 param_1 = _1460; + highp vec3 _1469 = fresnelSchlick(param, param_1); highp vec3 param_2 = N; - highp vec3 param_3 = _1444; - highp float param_4 = _1372; + highp vec3 param_3 = _1452; + highp float param_4 = roughness; highp vec3 param_5 = N; - highp vec3 param_6 = _1435; - highp vec3 param_7 = _1439; - highp float param_8 = _1372; - highp float _1495 = max(dot(N, _1439), 0.0); - highp float _1512 = 1.0 - _1378; - highp vec4 _1528 = _1275.mvp_shadow * vec4(floor(vpos * 16.0) * vec3(0.0625), 1.0); - highp vec3 _1539 = ((_1528.xyz / vec3(_1528.w)) * 0.5) + vec3(0.5); - highp float _1543 = _1539.z - 0.001000000047497451305389404296875; - highp vec3 _1898 = _1539; - _1898.z = _1543; - highp vec3 light = ((((((((vec3(1.0) - _1461) * _1512) * trixel_material.xyz) * vec3(0.3183410167694091796875)) + ((_1461 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * max(dot(N, _1435), 0.0)) * _1495) + 9.9999997473787516355514526367188e-05))) * texture(shadowtex_shadowsmp, vec3(_1898.xy, _1543))) * _1495) * _271.sunLightColor) * _271.sunIntensity; - highp vec3 _1580 = trileCenter + (N * 0.4900000095367431640625); - ivec3 _1586 = ivec3(mod(floor(trileCenter), vec3(32.0))); - ivec3 param_9 = _1586; - int param_10 = _1366; - highp vec4 _1612 = texture(ssaotex_trilesmp, vec2(gl_FragCoord.x / float(_1275.screen_w), gl_FragCoord.y / float(_1275.screen_h)), 0.0); - highp float _1613 = _1612.x; - bool _1623 = _1275.rdm_enabled == 1; - bool _1629; - if (_1623) + highp vec3 param_6 = _1443; + highp vec3 param_7 = _1447; + highp float param_8 = roughness; + highp float _1503 = max(dot(N, _1447), 0.0); + highp vec4 _1536 = _1275.mvp_shadow * vec4(floor(vpos * 16.0) * vec3(0.0625), 1.0); + highp vec3 _1547 = ((_1536.xyz / vec3(_1536.w)) * 0.5) + vec3(0.5); + highp float _1551 = _1547.z - 0.001000000047497451305389404296875; + highp vec3 _1906 = _1547; + _1906.z = _1551; + highp vec3 light = ((((((((vec3(1.0) - _1469) * (1.0 - metallic)) * trixel_material.xyz) * vec3(0.3183410167694091796875)) + ((_1469 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * max(dot(N, _1443), 0.0)) * _1503) + 9.9999997473787516355514526367188e-05))) * texture(shadowtex_shadowsmp, vec3(_1906.xy, _1551))) * _1503) * _271.sunLightColor) * _271.sunIntensity; + highp vec3 _1588 = trileCenter + (N * 0.4900000095367431640625); + ivec3 _1594 = ivec3(mod(floor(trileCenter), vec3(32.0))); + ivec3 param_9 = _1594; + int param_10 = roughnessInt; + highp vec4 _1620 = texture(ssaotex_trilesmp, vec2(gl_FragCoord.x / float(_1275.screen_w), gl_FragCoord.y / float(_1275.screen_h)), 0.0); + highp float _1621 = _1620.x; + bool _1631 = _1275.rdm_enabled == 1; + bool _1637; + if (_1631) { - _1629 = rdm_get_atlas_rect(param_9, param_10).z > 0.0; + _1637 = rdm_get_atlas_rect(param_9, param_10).z > 0.0; } else { - _1629 = _1623; + _1637 = _1631; } - if (_1629) + if (_1637) { - highp float param_11 = max(dot(N, _1435), 0.0); - highp vec3 param_12 = _1452; - highp float param_13 = _1372; - highp vec3 _1642 = FresnelSchlickRoughness(param_11, param_12, param_13); - highp vec3 _1649 = vpos - _1580; + highp float param_11 = max(dot(N, _1443), 0.0); + highp vec3 param_12 = _1460; + highp float param_13 = roughness; + highp vec3 _1650 = FresnelSchlickRoughness(param_11, param_12, param_13); + highp vec3 _1657 = vpos - _1588; highp vec3 param_14 = N; highp vec3 param_15 = -cv; - highp vec3 param_16 = _1580; - highp vec3 param_17 = _1649; - int param_18 = _1366; - ivec3 param_19 = _1586; - highp vec3 _1664 = sample_rdm(param_14, param_15, param_16, param_17, param_18, param_19) * _1275.rdm_tint; - highp float _1686 = max(dot(N, _1435), 0.0); - highp vec4 _1689 = texture(brdf_lut_rdmsmp, vec2(_1686, _1372)); - highp float _1699 = sin(_1372 * 3.141285419464111328125); - light += (((((mix(_1664, vec3(dot(_1664, vec3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875))), _1451) * ((_1642 * _1689.x) + vec3(_1689.y))) * _1275.rdm_spec_scale) * (1.0 - (0.699999988079071044921875 * _1699))) * (1.0 - (((0.89999997615814208984375 * _1372) * _1699) * pow(1.0 - _1686, 2.0)))) * (1.0 - clamp((_1372 - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); + highp vec3 param_16 = _1588; + highp vec3 param_17 = _1657; + int param_18 = roughnessInt; + ivec3 param_19 = _1594; + highp vec3 _1672 = sample_rdm(param_14, param_15, param_16, param_17, param_18, param_19) * _1275.rdm_tint; + highp float _1694 = max(dot(N, _1443), 0.0); + highp vec4 _1697 = texture(brdf_lut_rdmsmp, vec2(_1694, roughness)); + highp float _1707 = sin(roughness * 3.141285419464111328125); + light += (((((mix(_1672, vec3(dot(_1672, vec3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875))), vec3(metallic)) * ((_1650 * _1697.x) + vec3(_1697.y))) * _1275.rdm_spec_scale) * (1.0 - (0.699999988079071044921875 * _1707))) * (1.0 - (((0.89999997615814208984375 * roughness) * _1707) * pow(1.0 - _1694, 2.0)))) * (1.0 - clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); highp vec3 param_20 = N; - highp vec3 param_21 = _1649; - ivec3 param_22 = _1586; - light += (((((((vec3(1.0) - _1642) * _1512) * (sample_rdm_diff(param_20, param_21, param_22) * _1275.rdm_tint)) * vec3(0.3183410167694091796875)) * trixel_material.xyz) * _1613) * _1275.rdm_diff_scale); + highp vec3 param_21 = _1657; + ivec3 param_22 = _1594; + light += (((((((vec3(1.0) - _1650) * (1.0 - metallic)) * (sample_rdm_diff(param_20, param_21, param_22) * _1275.rdm_tint)) * vec3(0.3183410167694091796875)) * trixel_material.xyz) * _1621) * _1275.rdm_diff_scale); if (_1275.rdm_diff_scale < 0.001000000047497451305389404296875) { - light += (((_1275.ambient_color * _1275.ambient_intensity) * trixel_material.xyz) * _1613); + light += (((_1275.ambient_color * _1275.ambient_intensity) * trixel_material.xyz) * _1621); } } else { - light += (((_1275.ambient_color * _1275.ambient_intensity) * trixel_material.xyz) * _1613); - highp vec3 _1810 = reflect(-_1435, N); - highp vec3 R = _1810; - if (_1810.y < 0.0) + light += (((_1275.ambient_color * _1275.ambient_intensity) * trixel_material.xyz) * _1621); + highp vec3 _1818 = reflect(-_1443, N); + highp vec3 R = _1818; + if (_1818.y < 0.0) { R = reflect(R, vec3(0.0, 1.0, 0.0)); } highp vec3 param_23 = R; highp vec3 param_24 = _271.sunPosition; - light += ((_1461 * sky(param_23, param_24)) * 0.100000001490116119384765625); + light += ((_1469 * sky(param_23, param_24)) * 0.100000001490116119384765625); } - frag_color = vec4(mix(_271.deepColor, light + ((trixel_material.xyz * (float((_1355 >> 1) & 3) * 0.3333333432674407958984375)) * _1275.emissive_scale), vec3(smoothstep(0.0, _271.planeHeight, vpos.y))), 1.0); + frag_color = vec4(mix(_271.deepColor, light + ((trixel_material.xyz * emittance) * _1275.emissive_scale), vec3(smoothstep(0.0, _271.planeHeight, vpos.y))), 1.0); if (_1275.is_preview == 1) { - highp vec4 _1853 = frag_color; - highp vec3 _1857 = mix(_1853.xyz, vec3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), vec3(0.5)); - frag_color.x = _1857.x; - frag_color.y = _1857.y; - frag_color.z = _1857.z; + highp vec4 _1861 = frag_color; + highp vec3 _1865 = mix(_1861.xyz, vec3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), vec3(0.5)); + frag_color.x = _1865.x; + frag_color.y = _1865.y; + frag_color.z = _1865.z; } else { if (_1275.is_preview == 2) { - highp vec4 _1871 = frag_color; - highp vec3 _1875 = mix(_1871.xyz, vec3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), vec3(0.5)); - frag_color.x = _1875.x; - frag_color.y = _1875.y; - frag_color.z = _1875.z; + highp vec4 _1879 = frag_color; + highp vec3 _1883 = mix(_1879.xyz, vec3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), vec3(0.5)); + frag_color.x = _1883.x; + frag_color.y = _1883.y; + frag_color.z = _1883.z; } } } @@ -3327,44 +3364,44 @@ fs_trile_source_glsl300es := u8.[ 0x20,0x28,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x32,0x29,0x20,0x3d,0x3d, 0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39, - 0x31,0x33,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x31,0x39,0x31,0x33,0x2e,0x7a,0x20,0x3d,0x20,0x76,0x2e,0x79,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x31,0x33,0x2e,0x79,0x20, + 0x32,0x31,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x5f,0x31,0x39,0x32,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x76,0x2e,0x79,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x32,0x31,0x2e,0x79,0x20, 0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x31,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, + 0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x69,0x6e,0x64,0x65,0x78,0x20, 0x2f,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x31,0x37,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x31,0x37,0x2e,0x7a,0x20, + 0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x32,0x35,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x32,0x35,0x2e,0x7a,0x20, 0x3d,0x20,0x76,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, - 0x31,0x39,0x31,0x37,0x2e,0x78,0x20,0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x31,0x37, + 0x31,0x39,0x32,0x35,0x2e,0x78,0x20,0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x35, 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, 0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x31, 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x32,0x31, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x32,0x39, 0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, - 0x31,0x39,0x32,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x31,0x2e,0x7a, + 0x31,0x39,0x32,0x39,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x39,0x2e,0x7a, 0x20,0x2a,0x20,0x28,0x2d,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x31,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x39,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x32,0x34,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a, + 0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x33,0x32,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x36,0x30,0x31,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x34,0x2e,0x78,0x20,0x2b, + 0x5f,0x36,0x30,0x31,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33,0x32,0x2e,0x78,0x20,0x2b, 0x20,0x6f,0x66,0x66,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x32,0x36,0x20,0x3d,0x20,0x5f, - 0x31,0x39,0x32,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x32,0x36,0x2e, + 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x33,0x34,0x20,0x3d,0x20,0x5f, + 0x31,0x39,0x33,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x33,0x34,0x2e, 0x78,0x20,0x3d,0x20,0x5f,0x36,0x30,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x30,0x37,0x20,0x3d, - 0x20,0x5f,0x31,0x39,0x32,0x34,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x66,0x66,0x2e,0x79, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x32,0x36,0x2e,0x79,0x20,0x3d,0x20, + 0x20,0x5f,0x31,0x39,0x33,0x32,0x2e,0x79,0x20,0x2b,0x20,0x6f,0x66,0x66,0x2e,0x79, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x33,0x34,0x2e,0x79,0x20,0x3d,0x20, 0x5f,0x36,0x30,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f, - 0x31,0x39,0x32,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x32,0x20,0x5f,0x36,0x32,0x35,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32, - 0x36,0x2e,0x78,0x79,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20,0x28,0x28, + 0x31,0x39,0x33,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, + 0x76,0x65,0x63,0x32,0x20,0x5f,0x36,0x32,0x35,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33, + 0x34,0x2e,0x78,0x79,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2f,0x20,0x28,0x28, 0x61,0x62,0x73,0x28,0x5f,0x36,0x30,0x31,0x29,0x20,0x2b,0x20,0x61,0x62,0x73,0x28, - 0x5f,0x36,0x30,0x37,0x29,0x29,0x20,0x2b,0x20,0x5f,0x31,0x39,0x32,0x34,0x2e,0x7a, + 0x5f,0x36,0x30,0x37,0x29,0x29,0x20,0x2b,0x20,0x5f,0x31,0x39,0x33,0x32,0x2e,0x7a, 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, 0x6f,0x61,0x74,0x20,0x5f,0x36,0x32,0x38,0x20,0x3d,0x20,0x5f,0x36,0x32,0x35,0x2e, 0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, @@ -4053,221 +4090,239 @@ fs_trile_source_glsl300es := u8.[ 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x33,0x35,0x35,0x20,0x3d,0x20,0x69, 0x6e,0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f, 0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x77,0x20,0x2a,0x20,0x32,0x35,0x35, - 0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31, - 0x33,0x36,0x36,0x20,0x3d,0x20,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20, - 0x35,0x29,0x20,0x26,0x20,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x37,0x32,0x20,0x3d,0x20, - 0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x33,0x36,0x36,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32,0x34, - 0x33,0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c, - 0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30, - 0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x31,0x33,0x37,0x38,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28, - 0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20,0x33, - 0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32, - 0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x33,0x38,0x34,0x20,0x3d,0x20,0x61,0x62,0x73,0x28,0x66,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x38,0x36,0x20, - 0x3d,0x20,0x5f,0x31,0x33,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x38,0x38, - 0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x34,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x33,0x38,0x39,0x20,0x3d,0x20,0x5f,0x31,0x33, - 0x38,0x36,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x33,0x39,0x37,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x33,0x38,0x39,0x29,0x0a,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x33,0x39,0x37,0x20, - 0x3d,0x20,0x5f,0x31,0x33,0x38,0x36,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x38,0x34, - 0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x31,0x33,0x39,0x37,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x39,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x76,0x65,0x63,0x33,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, + 0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20, + 0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x72, + 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49,0x6e,0x74,0x20,0x3d,0x20,0x30,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e,0x30, + 0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35, + 0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65,0x74, + 0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x28,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x26,0x20,0x31,0x29, + 0x20,0x21,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e, + 0x20,0x31,0x29,0x20,0x26,0x20,0x31,0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30, + 0x30,0x37,0x38,0x37,0x34,0x30,0x31,0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35,0x30, + 0x31,0x35,0x38,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31, + 0x33,0x37,0x35,0x20,0x3d,0x20,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20, + 0x35,0x29,0x20,0x26,0x20,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49,0x6e,0x74,0x20,0x3d,0x20,0x5f, + 0x31,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f, + 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x66,0x6c, + 0x6f,0x61,0x74,0x28,0x5f,0x31,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31, + 0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39, + 0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36, + 0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20,0x33, + 0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33, + 0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38, + 0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x33,0x39,0x32, + 0x20,0x3d,0x20,0x61,0x62,0x73,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78, + 0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x39,0x34,0x20,0x3d,0x20,0x5f,0x31,0x33, + 0x39,0x32,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x39,0x36,0x20,0x3d,0x20,0x5f,0x31, + 0x33,0x39,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20, + 0x5f,0x31,0x33,0x39,0x37,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x34,0x20,0x3e,0x3d, + 0x20,0x5f,0x31,0x33,0x39,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, + 0x20,0x5f,0x31,0x34,0x30,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, 0x5f,0x31,0x33,0x39,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x69, - 0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x29,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x34,0x31, - 0x30,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x38,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33, - 0x38,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, - 0x20,0x5f,0x31,0x34,0x31,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x69,0x66,0x20,0x28,0x5f,0x31,0x34,0x31,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x31,0x34,0x31,0x38,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x38,0x20,0x3e, - 0x3d,0x20,0x5f,0x31,0x33,0x38,0x34,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x34,0x31,0x38,0x20,0x3d,0x20, - 0x5f,0x31,0x34,0x31,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x34, - 0x31,0x38,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x2e,0x79,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x73, - 0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x7a,0x29,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d, + 0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x34,0x30,0x35,0x20,0x3d,0x20,0x5f,0x31,0x33, + 0x39,0x34,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x39,0x32,0x2e,0x7a,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x34,0x30, + 0x35,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x5f,0x31,0x34,0x33,0x35,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, - 0x65,0x28,0x63,0x61,0x6d,0x20,0x2d,0x20,0x76,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20, + 0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x34,0x30,0x35, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e, + 0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30, + 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x34,0x31,0x38,0x20,0x3d,0x20,0x5f, + 0x31,0x33,0x39,0x36,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x39,0x34,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x34,0x32, + 0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, + 0x31,0x34,0x31,0x38,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x34,0x32, + 0x36,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x36,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33, + 0x39,0x32,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x5f,0x31,0x34,0x32,0x36,0x20,0x3d,0x20,0x5f,0x31,0x34,0x31,0x38, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x34,0x32,0x36,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, + 0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e, + 0x79,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28, + 0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x66, + 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34,0x34,0x33, + 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x61,0x6d, + 0x20,0x2d,0x20,0x76,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, + 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34,0x34,0x37,0x20,0x3d, + 0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x37,0x31,0x2e, + 0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34, + 0x35,0x32,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f, + 0x31,0x34,0x34,0x33,0x20,0x2b,0x20,0x5f,0x31,0x34,0x34,0x37,0x29,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31, - 0x34,0x33,0x39,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x31,0x34,0x34,0x34,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x69,0x7a,0x65,0x28,0x5f,0x31,0x34,0x33,0x35,0x20,0x2b,0x20,0x5f,0x31,0x34,0x33, - 0x39,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x31,0x34,0x35,0x31,0x20,0x3d,0x20,0x76,0x65,0x63,0x33,0x28, - 0x5f,0x31,0x33,0x37,0x38,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34,0x35,0x32,0x20,0x3d,0x20,0x6d, - 0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39, - 0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31, - 0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d, - 0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x5f,0x31,0x34, - 0x35,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, + 0x34,0x36,0x30,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28,0x30, + 0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33,0x30, + 0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x74, + 0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78, + 0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69, + 0x63,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, 0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x6d,0x61,0x78, - 0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x34,0x34,0x34,0x2c,0x20,0x5f,0x31,0x34,0x33, - 0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, + 0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x34,0x35,0x32,0x2c,0x20,0x5f,0x31,0x34,0x34, + 0x33,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x20,0x3d,0x20,0x5f,0x31,0x34,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34,0x36,0x31,0x20,0x3d, + 0x20,0x3d,0x20,0x5f,0x31,0x34,0x36,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, + 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x34,0x36,0x39,0x20,0x3d, 0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28, 0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x31,0x34,0x34,0x34,0x3b,0x0a,0x20,0x20,0x20, + 0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x31,0x34,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x5f,0x31,0x33,0x37,0x32,0x3b,0x0a,0x20,0x20, + 0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, + 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20, 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36, - 0x20,0x3d,0x20,0x5f,0x31,0x34,0x33,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37, - 0x20,0x3d,0x20,0x5f,0x31,0x34,0x33,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x38,0x20,0x3d,0x20,0x5f,0x31,0x33,0x37,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x34,0x39,0x35, - 0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31, - 0x34,0x33,0x39,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x31, - 0x32,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x33,0x37,0x38,0x3b, + 0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x31,0x34,0x34,0x33,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, + 0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x31,0x34,0x34,0x37,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73, + 0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x5f,0x31,0x35,0x30,0x33,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64, + 0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31,0x34,0x34,0x37,0x29,0x2c,0x20,0x30,0x2e, + 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, + 0x63,0x34,0x20,0x5f,0x31,0x35,0x33,0x36,0x20,0x3d,0x20,0x5f,0x31,0x32,0x37,0x35, + 0x2e,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x20,0x2a,0x20,0x76,0x65, + 0x63,0x34,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x76,0x70,0x6f,0x73,0x20,0x2a,0x20, + 0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30, + 0x36,0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x35,0x34,0x37, + 0x20,0x3d,0x20,0x28,0x28,0x5f,0x31,0x35,0x33,0x36,0x2e,0x78,0x79,0x7a,0x20,0x2f, + 0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x35,0x33,0x36,0x2e,0x77,0x29,0x29,0x20, + 0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, + 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x35,0x31,0x20,0x3d,0x20,0x5f,0x31,0x35,0x34, + 0x37,0x2e,0x7a,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39, + 0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, + 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x30,0x36,0x20, + 0x3d,0x20,0x5f,0x31,0x35,0x34,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x39, + 0x30,0x36,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x35,0x35,0x31,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x69,0x67, + 0x68,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63, + 0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x31,0x34,0x36,0x39,0x29,0x20, + 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69, + 0x63,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74, + 0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x76,0x65,0x63, + 0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39, + 0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28, + 0x28,0x5f,0x31,0x34,0x36,0x39,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72,0x69, + 0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61, + 0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53, + 0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x76,0x65,0x63, + 0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f, + 0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31,0x34,0x34,0x33,0x29,0x2c,0x20,0x30,0x2e,0x30, + 0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x30,0x33,0x29,0x20,0x2b,0x20,0x39,0x2e, + 0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36, + 0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65, + 0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65, + 0x28,0x73,0x68,0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x5f,0x73,0x68,0x61,0x64,0x6f, + 0x77,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x39,0x30,0x36, + 0x2e,0x78,0x79,0x2c,0x20,0x5f,0x31,0x35,0x35,0x31,0x29,0x29,0x29,0x20,0x2a,0x20, + 0x5f,0x31,0x35,0x30,0x33,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75, + 0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f, + 0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, + 0x20,0x5f,0x31,0x35,0x38,0x38,0x20,0x3d,0x20,0x74,0x72,0x69,0x6c,0x65,0x43,0x65, + 0x6e,0x74,0x65,0x72,0x20,0x2b,0x20,0x28,0x4e,0x20,0x2a,0x20,0x30,0x2e,0x34,0x39, + 0x30,0x30,0x30,0x30,0x30,0x30,0x39,0x35,0x33,0x36,0x37,0x34,0x33,0x31,0x36,0x34, + 0x30,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33, + 0x20,0x5f,0x31,0x35,0x39,0x34,0x20,0x3d,0x20,0x69,0x76,0x65,0x63,0x33,0x28,0x6d, + 0x6f,0x64,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x74,0x72,0x69,0x6c,0x65,0x43,0x65, + 0x6e,0x74,0x65,0x72,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x33,0x32,0x2e,0x30, + 0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x5f,0x31,0x35,0x39,0x34,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30, + 0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49,0x6e,0x74,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20, - 0x5f,0x31,0x35,0x32,0x38,0x20,0x3d,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x6d,0x76, - 0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28, - 0x66,0x6c,0x6f,0x6f,0x72,0x28,0x76,0x70,0x6f,0x73,0x20,0x2a,0x20,0x31,0x36,0x2e, - 0x30,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x36,0x32,0x35, - 0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x35,0x33,0x39,0x20,0x3d,0x20, - 0x28,0x28,0x5f,0x31,0x35,0x32,0x38,0x2e,0x78,0x79,0x7a,0x20,0x2f,0x20,0x76,0x65, - 0x63,0x33,0x28,0x5f,0x31,0x35,0x32,0x38,0x2e,0x77,0x29,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x5f,0x31,0x35,0x34,0x33,0x20,0x3d,0x20,0x5f,0x31,0x35,0x33,0x39,0x2e,0x7a, - 0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34, - 0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34, - 0x32,0x39,0x36,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x38,0x39,0x38,0x20,0x3d,0x20,0x5f, - 0x31,0x35,0x33,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x38,0x39,0x38,0x2e, - 0x7a,0x20,0x3d,0x20,0x5f,0x31,0x35,0x34,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20, - 0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31, - 0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x31,0x34,0x36,0x31,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x35,0x31,0x32,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d, - 0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37, - 0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b, - 0x20,0x28,0x28,0x5f,0x31,0x34,0x36,0x31,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74, - 0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72, - 0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x76, - 0x65,0x63,0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28, - 0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31,0x34,0x33,0x35,0x29,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34,0x39,0x35,0x29,0x20,0x2b,0x20, - 0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35, - 0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38, - 0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x74,0x65,0x78,0x74,0x75, - 0x72,0x65,0x28,0x73,0x68,0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x5f,0x73,0x68,0x61, - 0x64,0x6f,0x77,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x38, - 0x39,0x38,0x2e,0x78,0x79,0x2c,0x20,0x5f,0x31,0x35,0x34,0x33,0x29,0x29,0x29,0x20, - 0x2a,0x20,0x5f,0x31,0x34,0x39,0x35,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x31,0x2e, - 0x73,0x75,0x6e,0x4c,0x69,0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a, - 0x20,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69, - 0x74,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x31,0x35,0x38,0x30,0x20,0x3d,0x20,0x74,0x72,0x69,0x6c,0x65, - 0x43,0x65,0x6e,0x74,0x65,0x72,0x20,0x2b,0x20,0x28,0x4e,0x20,0x2a,0x20,0x30,0x2e, - 0x34,0x39,0x30,0x30,0x30,0x30,0x30,0x30,0x39,0x35,0x33,0x36,0x37,0x34,0x33,0x31, - 0x36,0x34,0x30,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x31,0x35,0x38,0x36,0x20,0x3d,0x20,0x69,0x76,0x65,0x63,0x33, - 0x28,0x6d,0x6f,0x64,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x74,0x72,0x69,0x6c,0x65, - 0x43,0x65,0x6e,0x74,0x65,0x72,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x33,0x32, - 0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x5f,0x31,0x35,0x38,0x36, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x30,0x20,0x3d,0x20,0x5f,0x31,0x33,0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x36,0x31,0x32, - 0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28,0x73,0x73,0x61,0x6f,0x74, - 0x65,0x78,0x5f,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63, - 0x32,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78, - 0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x73, - 0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61, - 0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68,0x29, - 0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x31,0x33,0x20,0x3d, - 0x20,0x5f,0x31,0x36,0x31,0x32,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x31,0x36,0x32,0x33,0x20,0x3d,0x20,0x5f,0x31,0x32,0x37,0x35, - 0x2e,0x72,0x64,0x6d,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x20,0x3d,0x3d,0x20, - 0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x36,0x32, - 0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x36,0x32,0x33, - 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x5f,0x31,0x36,0x32,0x39,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f,0x67,0x65,0x74,0x5f, - 0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x65,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x39,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x29,0x2e,0x7a,0x20, - 0x3e,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x31,0x36,0x32,0x39,0x20,0x3d,0x20,0x5f,0x31,0x36,0x32, - 0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x31,0x36,0x32,0x39,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x20,0x3d,0x20,0x6d,0x61,0x78, - 0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31,0x34,0x33,0x35,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69, + 0x5f,0x31,0x36,0x32,0x30,0x20,0x3d,0x20,0x74,0x65,0x78,0x74,0x75,0x72,0x65,0x28, + 0x73,0x73,0x61,0x6f,0x74,0x65,0x78,0x5f,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70, + 0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f, + 0x6f,0x72,0x64,0x2e,0x78,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31, + 0x32,0x37,0x35,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c,0x20,0x67, + 0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20,0x2f,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x73,0x63,0x72,0x65, + 0x65,0x6e,0x5f,0x68,0x29,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, + 0x36,0x32,0x31,0x20,0x3d,0x20,0x5f,0x31,0x36,0x32,0x30,0x2e,0x78,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x36,0x33,0x31,0x20,0x3d,0x20, + 0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65, + 0x64,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, + 0x20,0x5f,0x31,0x36,0x33,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, + 0x5f,0x31,0x36,0x33,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x36,0x33,0x37,0x20,0x3d,0x20,0x72,0x64,0x6d, + 0x5f,0x67,0x65,0x74,0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x65,0x63,0x74,0x28, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, + 0x30,0x29,0x2e,0x7a,0x20,0x3e,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x36,0x33,0x37,0x20,0x3d, + 0x20,0x5f,0x31,0x36,0x33,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x36,0x33,0x37,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x20, + 0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31,0x34, + 0x34,0x33,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x31,0x32,0x20,0x3d,0x20,0x5f,0x31,0x34,0x36,0x30,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x20,0x3d,0x20,0x72, + 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x36, + 0x35,0x30,0x20,0x3d,0x20,0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c, + 0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28,0x70,0x61,0x72, + 0x61,0x6d,0x5f,0x31,0x31,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x2c, + 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, + 0x31,0x36,0x35,0x37,0x20,0x3d,0x20,0x76,0x70,0x6f,0x73,0x20,0x2d,0x20,0x5f,0x31, + 0x35,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, + 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x34, + 0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69, 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x32,0x20,0x3d,0x20,0x5f,0x31,0x34,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x20,0x3d,0x20,0x5f,0x31,0x33,0x37,0x32,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x31,0x36,0x34,0x32,0x20,0x3d,0x20,0x46,0x72,0x65,0x73, - 0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e, - 0x65,0x73,0x73,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, - 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x36,0x34,0x39,0x20,0x3d,0x20,0x76,0x70, - 0x6f,0x73,0x20,0x2d,0x20,0x5f,0x31,0x35,0x38,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x31,0x34,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35,0x20,0x3d,0x20,0x2d,0x63,0x76,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36,0x20,0x3d,0x20,0x5f,0x31, - 0x35,0x38,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x37, - 0x20,0x3d,0x20,0x5f,0x31,0x36,0x34,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x38,0x20,0x3d, - 0x20,0x5f,0x31,0x33,0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x35,0x20,0x3d,0x20,0x2d,0x63,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, + 0x6d,0x5f,0x31,0x36,0x20,0x3d,0x20,0x5f,0x31,0x35,0x38,0x38,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, + 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x37,0x20,0x3d,0x20,0x5f,0x31,0x36,0x35, + 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x31,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e, + 0x65,0x73,0x73,0x49,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x39,0x20,0x3d, - 0x20,0x5f,0x31,0x35,0x38,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x36,0x36,0x34, + 0x20,0x5f,0x31,0x35,0x39,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x36,0x37,0x32, 0x20,0x3d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x28,0x70,0x61, 0x72,0x61,0x6d,0x5f,0x31,0x34,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35, 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36,0x2c,0x20,0x70,0x61,0x72,0x61, @@ -4275,158 +4330,158 @@ fs_trile_source_glsl300es := u8.[ 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x39,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37, 0x35,0x2e,0x72,0x64,0x6d,0x5f,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x31,0x36,0x38,0x36,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, - 0x4e,0x2c,0x20,0x5f,0x31,0x34,0x33,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, + 0x5f,0x31,0x36,0x39,0x34,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, + 0x4e,0x2c,0x20,0x5f,0x31,0x34,0x34,0x33,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x34,0x20,0x5f,0x31,0x36,0x38,0x39,0x20,0x3d,0x20,0x74,0x65,0x78,0x74, + 0x65,0x63,0x34,0x20,0x5f,0x31,0x36,0x39,0x37,0x20,0x3d,0x20,0x74,0x65,0x78,0x74, 0x75,0x72,0x65,0x28,0x62,0x72,0x64,0x66,0x5f,0x6c,0x75,0x74,0x5f,0x72,0x64,0x6d, - 0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x36,0x38,0x36,0x2c, - 0x20,0x5f,0x31,0x33,0x37,0x32,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, - 0x36,0x39,0x39,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x5f,0x31,0x33,0x37,0x32,0x20, - 0x2a,0x20,0x33,0x2e,0x31,0x34,0x31,0x32,0x38,0x35,0x34,0x31,0x39,0x34,0x36,0x34, - 0x31,0x31,0x31,0x33,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28, - 0x28,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31,0x36,0x36,0x34,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x36,0x36,0x34,0x2c,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39,0x39,0x39,0x39,0x32,0x37,0x35,0x32, - 0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x37,0x31, - 0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36,0x31,0x38,0x32,0x32,0x35,0x30,0x39, - 0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x32,0x30,0x30, - 0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32,0x32,0x39,0x34,0x39,0x32,0x31,0x38, - 0x37,0x35,0x29,0x29,0x29,0x2c,0x20,0x5f,0x31,0x34,0x35,0x31,0x29,0x20,0x2a,0x20, - 0x28,0x28,0x5f,0x31,0x36,0x34,0x32,0x20,0x2a,0x20,0x5f,0x31,0x36,0x38,0x39,0x2e, - 0x78,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x36,0x38,0x39,0x2e, - 0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d, - 0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x20,0x2a,0x20,0x28, - 0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39, - 0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37, - 0x35,0x20,0x2a,0x20,0x5f,0x31,0x36,0x39,0x39,0x29,0x29,0x29,0x20,0x2a,0x20,0x28, - 0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28,0x28,0x30,0x2e,0x38,0x39,0x39,0x39,0x39, - 0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33, - 0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x33,0x37,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31, - 0x36,0x39,0x39,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28,0x31,0x2e,0x30,0x20,0x2d, - 0x20,0x5f,0x31,0x36,0x38,0x36,0x2c,0x20,0x32,0x2e,0x30,0x29,0x29,0x29,0x29,0x20, - 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28, - 0x5f,0x31,0x33,0x37,0x32,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x33, - 0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x35,0x33,0x38,0x36,0x30,0x34,0x37,0x33, - 0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x30,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x31,0x20,0x3d,0x20,0x5f,0x31,0x36,0x34,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x32,0x32,0x20,0x3d,0x20,0x5f,0x31,0x35,0x38,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28, - 0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20, - 0x5f,0x31,0x36,0x34,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35,0x31,0x32,0x29,0x20, - 0x2a,0x20,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f,0x64,0x69, - 0x66,0x66,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x30,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x32,0x31,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x32,0x29, - 0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x74,0x69,0x6e, - 0x74,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38, - 0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39,0x36, - 0x38,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d, - 0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x36,0x31,0x33,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64, - 0x6d,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x32,0x37,0x35, - 0x2e,0x72,0x64,0x6d,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x20, - 0x3c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37, - 0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32, - 0x39,0x36,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67, - 0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61, - 0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f, - 0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74, - 0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c, - 0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a, - 0x20,0x5f,0x31,0x36,0x31,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x5f,0x31,0x32,0x37, - 0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f, - 0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x74,0x72,0x69, - 0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a, - 0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x31,0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x31,0x38,0x31,0x30,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x2d, - 0x5f,0x31,0x34,0x33,0x35,0x2c,0x20,0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x52,0x20, - 0x3d,0x20,0x5f,0x31,0x38,0x31,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x38,0x31,0x30,0x2e,0x79,0x20,0x3c,0x20,0x30, - 0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x20,0x3d,0x20,0x72,0x65, - 0x66,0x6c,0x65,0x63,0x74,0x28,0x52,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x33,0x20,0x3d,0x20,0x52,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x32,0x34,0x20,0x3d,0x20,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e, - 0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x5f,0x31,0x34, - 0x36,0x31,0x20,0x2a,0x20,0x73,0x6b,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x34,0x29,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31, - 0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6d,0x69,0x78,0x28, - 0x5f,0x32,0x37,0x31,0x2e,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x2c,0x20, - 0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x28,0x28,0x74,0x72,0x69,0x78,0x65,0x6c, - 0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e, - 0x20,0x31,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33, - 0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38, - 0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35, - 0x2e,0x65,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29, - 0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65, - 0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x37,0x31,0x2e,0x70,0x6c,0x61,0x6e, - 0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x76,0x70,0x6f,0x73,0x2e,0x79,0x29, - 0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76,0x69, - 0x65,0x77,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, + 0x73,0x6d,0x70,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x36,0x39,0x34,0x2c, + 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x5f,0x31,0x37,0x30,0x37,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x72,0x6f, + 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2a,0x20,0x33,0x2e,0x31,0x34,0x31,0x32, + 0x38,0x35,0x34,0x31,0x39,0x34,0x36,0x34,0x31,0x31,0x31,0x33,0x32,0x38,0x31,0x32, + 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68, + 0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31, + 0x36,0x37,0x32,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31, + 0x36,0x37,0x32,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35, + 0x39,0x39,0x39,0x39,0x32,0x37,0x35,0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31, + 0x32,0x35,0x2c,0x20,0x30,0x2e,0x37,0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39, + 0x36,0x31,0x38,0x32,0x32,0x35,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20, + 0x30,0x2e,0x30,0x37,0x32,0x32,0x30,0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30, + 0x32,0x32,0x39,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x29,0x2c,0x20,0x76, + 0x65,0x63,0x33,0x28,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a, + 0x20,0x28,0x28,0x5f,0x31,0x36,0x35,0x30,0x20,0x2a,0x20,0x5f,0x31,0x36,0x39,0x37, + 0x2e,0x78,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x5f,0x31,0x36,0x39,0x37, + 0x2e,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64, + 0x6d,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x20,0x2a,0x20, + 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39, + 0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38, + 0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x37,0x30,0x37,0x29,0x29,0x29,0x20,0x2a,0x20, + 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28,0x28,0x30,0x2e,0x38,0x39,0x39,0x39, + 0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34, + 0x33,0x37,0x35,0x20,0x2a,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29, + 0x20,0x2a,0x20,0x5f,0x31,0x37,0x30,0x37,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x28, + 0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x36,0x39,0x34,0x2c,0x20,0x32,0x2e,0x30, + 0x29,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x63,0x6c, + 0x61,0x6d,0x70,0x28,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2d, + 0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x33,0x2e,0x33,0x33,0x33,0x33,0x33,0x33, + 0x32,0x35,0x33,0x38,0x36,0x30,0x34,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35, + 0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x29,0x29,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x34,0x20,0x5f,0x31,0x38,0x35,0x33,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, - 0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x38,0x35,0x37,0x20,0x3d, - 0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x35,0x33,0x2e,0x78,0x79,0x7a,0x2c,0x20, - 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31, - 0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c, - 0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30, - 0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x38,0x35,0x37,0x2e,0x78,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x38,0x35,0x37,0x2e,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x38,0x35,0x37,0x2e,0x7a,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x31,0x32,0x37,0x35,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77, - 0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x38,0x37,0x31,0x20,0x3d,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x30,0x20,0x3d,0x20,0x4e,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x33,0x20,0x5f,0x31,0x38,0x37,0x35,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f, - 0x31,0x38,0x37,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39, - 0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20, - 0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33, - 0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x38,0x37,0x35,0x2e,0x78,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x38,0x37,0x35,0x2e, - 0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31, - 0x38,0x37,0x35,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, + 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x20,0x3d,0x20,0x5f,0x31, + 0x36,0x35,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x76,0x65, + 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x32,0x20,0x3d,0x20,0x5f,0x31, + 0x35,0x39,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67, + 0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63, + 0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x31,0x36,0x35,0x30,0x29,0x20, + 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69, + 0x63,0x29,0x29,0x20,0x2a,0x20,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x72,0x64, + 0x6d,0x5f,0x64,0x69,0x66,0x66,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x30,0x2c, + 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x32,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d, + 0x5f,0x74,0x69,0x6e,0x74,0x29,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30, + 0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39,0x34,0x30,0x39, + 0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78, + 0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29, + 0x20,0x2a,0x20,0x5f,0x31,0x36,0x32,0x31,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37, + 0x35,0x2e,0x72,0x64,0x6d,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, + 0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63, + 0x61,0x6c,0x65,0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39, + 0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x5f,0x31,0x32, + 0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74, + 0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x74,0x72, + 0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79, + 0x7a,0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x32,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28, + 0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f, + 0x6c,0x6f,0x72,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69, + 0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a, + 0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c, + 0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x32,0x31,0x29,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, + 0x63,0x33,0x20,0x5f,0x31,0x38,0x31,0x38,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65, + 0x63,0x74,0x28,0x2d,0x5f,0x31,0x34,0x34,0x33,0x2c,0x20,0x4e,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, + 0x33,0x20,0x52,0x20,0x3d,0x20,0x5f,0x31,0x38,0x31,0x38,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x38,0x31,0x38,0x2e,0x79, + 0x20,0x3c,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52,0x20, + 0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x52,0x2c,0x20,0x76,0x65,0x63, + 0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x33,0x20,0x3d,0x20,0x52,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33, + 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x34,0x20,0x3d,0x20,0x5f,0x32,0x37,0x31, + 0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28, + 0x28,0x5f,0x31,0x34,0x36,0x39,0x20,0x2a,0x20,0x73,0x6b,0x79,0x28,0x70,0x61,0x72, + 0x61,0x6d,0x5f,0x32,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x34,0x29, + 0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34, + 0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32, + 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, + 0x6d,0x69,0x78,0x28,0x5f,0x32,0x37,0x31,0x2e,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c, + 0x6f,0x72,0x2c,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x28,0x28,0x74,0x72, + 0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79, + 0x7a,0x20,0x2a,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x29,0x20,0x2a, + 0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x65,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x5f, + 0x73,0x63,0x61,0x6c,0x65,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x73,0x6d,0x6f, + 0x6f,0x74,0x68,0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x37, + 0x31,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x76, + 0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x69,0x73, + 0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, + 0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31,0x38,0x36,0x31,0x20,0x3d,0x20, + 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, + 0x31,0x38,0x36,0x35,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x36,0x31, + 0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x30,0x30, + 0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30, + 0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39, + 0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37, + 0x35,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, + 0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, + 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x38,0x36, + 0x35,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, + 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x31,0x38,0x36, + 0x35,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, + 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x38,0x36, + 0x35,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65, + 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x69,0x73,0x5f,0x70, + 0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x31, + 0x38,0x37,0x39,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69, + 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x38,0x38,0x33,0x20,0x3d, + 0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x37,0x39,0x2e,0x78,0x79,0x7a,0x2c,0x20, + 0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30, + 0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37, + 0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31, + 0x32,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, + 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x38,0x38, + 0x33,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20, + 0x5f,0x31,0x38,0x38,0x33,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e, + 0x7a,0x20,0x3d,0x20,0x5f,0x31,0x38,0x38,0x33,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a, + 0x00, ]; /* #pragma clang diagnostic ignored "-Wmissing-prototypes" @@ -4916,32 +4971,32 @@ vs_trile_source_metal_macos := u8.[ float3 vc = v; if ((index / 2) == 0) { - float3 _1913 = vc; - _1913.z = v.y; - _1913.y = v.z; - vc = _1913; + float3 _1921 = vc; + _1921.z = v.y; + _1921.y = v.z; + vc = _1921; } if ((index / 2) == 2) { - float3 _1917 = vc; - _1917.z = v.x; - _1917.x = v.z; - vc = _1917; + float3 _1925 = vc; + _1925.z = v.x; + _1925.x = v.z; + vc = _1925; } if ((index % 2) == 1) { - float3 _1921 = vc; - _1921.z = _1921.z * (-1.0); - vc = _1921; + float3 _1929 = vc; + _1929.z = _1929.z * (-1.0); + vc = _1929; } - float3 _1924 = vc; - float _601 = _1924.x + off.x; - float3 _1926 = _1924; - _1926.x = _601; - float _607 = _1924.y + off.y; - _1926.y = _607; - vc = _1926; - float2 _625 = _1926.xy * (1.0 / ((abs(_601) + abs(_607)) + _1924.z)); + float3 _1932 = vc; + float _601 = _1932.x + off.x; + float3 _1934 = _1932; + _1934.x = _601; + float _607 = _1932.y + off.y; + _1934.y = _607; + vc = _1934; + float2 _625 = _1934.xy * (1.0 / ((abs(_601) + abs(_607)) + _1932.z)); float _628 = _625.x; float _630 = _625.y; return float2(((_628 + _630) + 1.0) * 0.5, ((_628 - _630) + 1.0) * 0.5); @@ -5233,40 +5288,52 @@ vs_trile_source_metal_macos := u8.[ count++; } int _1355 = int(round(trixel_material.w * 255.0)); - int _1366 = (_1355 >> 5) & 7; - float _1372 = fast::max(float(_1366) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - float _1378 = float((_1355 >> 3) & 3) * 0.3333333432674407958984375; - float3 _1384 = abs(in.fnormal.xyz); - float _1386 = _1384.x; - float _1388 = _1384.y; - bool _1389 = _1386 >= _1388; - bool _1397; - if (_1389) + float emittance = 0.0; + int roughnessInt = 0; + float roughness = 0.0500000007450580596923828125; + float metallic = 0.0; + if ((_1355 & 1) != 0) { - _1397 = _1386 >= _1384.z; + emittance = float((_1355 >> 1) & 127) * 0.0078740157186985015869140625; } else { - _1397 = _1389; + int _1375 = (_1355 >> 5) & 7; + roughnessInt = _1375; + roughness = fast::max(float(_1375) * 0.14285714924335479736328125, 0.0500000007450580596923828125); + metallic = float((_1355 >> 3) & 3) * 0.3333333432674407958984375; + } + float3 _1392 = abs(in.fnormal.xyz); + float _1394 = _1392.x; + float _1396 = _1392.y; + bool _1397 = _1394 >= _1396; + bool _1405; + if (_1397) + { + _1405 = _1394 >= _1392.z; + } + else + { + _1405 = _1397; } float3 N; - if (_1397) + if (_1405) { N = float3(sign(in.fnormal.x), 0.0, 0.0); } else { - bool _1410 = _1388 >= _1386; - bool _1418; - if (_1410) + bool _1418 = _1396 >= _1394; + bool _1426; + if (_1418) { - _1418 = _1388 >= _1384.z; + _1426 = _1396 >= _1392.z; } else { - _1418 = _1410; + _1426 = _1418; } - if (_1418) + if (_1426) { N = float3(0.0, sign(in.fnormal.y), 0.0); } @@ -5275,103 +5342,101 @@ vs_trile_source_metal_macos := u8.[ N = float3(0.0, 0.0, sign(in.fnormal.z)); } } - float3 _1435 = fast::normalize(in.cam - in.vpos); - float3 _1439 = fast::normalize(float3(_271.sunPosition)); - float3 _1444 = fast::normalize(_1435 + _1439); - float3 _1451 = float3(_1378); - float3 _1452 = mix(float3(0.039999999105930328369140625), trixel_material.xyz, _1451); - float param = fast::max(dot(_1444, _1435), 0.0); - float3 param_1 = _1452; - float3 _1461 = fresnelSchlick(param, param_1); + float3 _1443 = fast::normalize(in.cam - in.vpos); + float3 _1447 = fast::normalize(float3(_271.sunPosition)); + float3 _1452 = fast::normalize(_1443 + _1447); + float3 _1460 = mix(float3(0.039999999105930328369140625), trixel_material.xyz, float3(metallic)); + float param = fast::max(dot(_1452, _1443), 0.0); + float3 param_1 = _1460; + float3 _1469 = fresnelSchlick(param, param_1); float3 param_2 = N; - float3 param_3 = _1444; - float param_4 = _1372; + float3 param_3 = _1452; + float param_4 = roughness; float3 param_5 = N; - float3 param_6 = _1435; - float3 param_7 = _1439; - float param_8 = _1372; - float _1495 = fast::max(dot(N, _1439), 0.0); - float _1512 = 1.0 - _1378; - float4 _1528 = _1275.mvp_shadow * float4(floor(in.vpos * 16.0) * float3(0.0625), 1.0); - float3 _1539 = ((_1528.xyz / float3(_1528.w)) * 0.5) + float3(0.5); - float _1543 = _1539.z - 0.001000000047497451305389404296875; - float3 _1898 = _1539; - _1898.z = _1543; - float3 light = ((((((((float3(1.0) - _1461) * _1512) * trixel_material.xyz) * float3(0.3183410167694091796875)) + ((_1461 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / float3(((4.0 * fast::max(dot(N, _1435), 0.0)) * _1495) + 9.9999997473787516355514526367188e-05))) * shadowtex.sample_compare(shadowsmp, _1898.xy, _1543)) * _1495) * _271.sunLightColor) * _271.sunIntensity; - float3 _1580 = in.trileCenter + (N * 0.4900000095367431640625); - int3 _1586 = int3(mod(floor(in.trileCenter), float3(32.0))); - int3 param_9 = _1586; - int param_10 = _1366; - float4 _1612 = ssaotex.sample(trilesmp, float2(gl_FragCoord.x / float(_1275.screen_w), gl_FragCoord.y / float(_1275.screen_h)), bias(0.0)); - float _1613 = _1612.x; - bool _1623 = _1275.rdm_enabled == 1; - bool _1629; - if (_1623) + float3 param_6 = _1443; + float3 param_7 = _1447; + float param_8 = roughness; + float _1503 = fast::max(dot(N, _1447), 0.0); + float4 _1536 = _1275.mvp_shadow * float4(floor(in.vpos * 16.0) * float3(0.0625), 1.0); + float3 _1547 = ((_1536.xyz / float3(_1536.w)) * 0.5) + float3(0.5); + float _1551 = _1547.z - 0.001000000047497451305389404296875; + float3 _1906 = _1547; + _1906.z = _1551; + float3 light = ((((((((float3(1.0) - _1469) * (1.0 - metallic)) * trixel_material.xyz) * float3(0.3183410167694091796875)) + ((_1469 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / float3(((4.0 * fast::max(dot(N, _1443), 0.0)) * _1503) + 9.9999997473787516355514526367188e-05))) * shadowtex.sample_compare(shadowsmp, _1906.xy, _1551)) * _1503) * _271.sunLightColor) * _271.sunIntensity; + float3 _1588 = in.trileCenter + (N * 0.4900000095367431640625); + int3 _1594 = int3(mod(floor(in.trileCenter), float3(32.0))); + int3 param_9 = _1594; + int param_10 = roughnessInt; + float4 _1620 = ssaotex.sample(trilesmp, float2(gl_FragCoord.x / float(_1275.screen_w), gl_FragCoord.y / float(_1275.screen_h)), bias(0.0)); + float _1621 = _1620.x; + bool _1631 = _1275.rdm_enabled == 1; + bool _1637; + if (_1631) { - _1629 = rdm_get_atlas_rect(param_9, param_10, rdm_lookup, trilesmp).z > 0.0; + _1637 = rdm_get_atlas_rect(param_9, param_10, rdm_lookup, trilesmp).z > 0.0; } else { - _1629 = _1623; + _1637 = _1631; } - if (_1629) + if (_1637) { - float param_11 = fast::max(dot(N, _1435), 0.0); - float3 param_12 = _1452; - float param_13 = _1372; - float3 _1642 = FresnelSchlickRoughness(param_11, param_12, param_13); - float3 _1649 = in.vpos - _1580; + float param_11 = fast::max(dot(N, _1443), 0.0); + float3 param_12 = _1460; + float param_13 = roughness; + float3 _1650 = FresnelSchlickRoughness(param_11, param_12, param_13); + float3 _1657 = in.vpos - _1588; float3 param_14 = N; float3 param_15 = -in.cv; - float3 param_16 = _1580; - float3 param_17 = _1649; - int param_18 = _1366; - int3 param_19 = _1586; - float3 _1664 = sample_rdm(param_14, param_15, param_16, param_17, param_18, param_19, _271, rdm_lookup, trilesmp, rdm_atlas, rdmsmp) * _1275.rdm_tint; - float _1686 = fast::max(dot(N, _1435), 0.0); - float4 _1689 = brdf_lut.sample(rdmsmp, float2(_1686, _1372)); - float _1699 = sin(_1372 * 3.141285419464111328125); - light += (((((mix(_1664, float3(dot(_1664, float3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875))), _1451) * ((_1642 * _1689.x) + float3(_1689.y))) * _1275.rdm_spec_scale) * (1.0 - (0.699999988079071044921875 * _1699))) * (1.0 - (((0.89999997615814208984375 * _1372) * _1699) * powr(1.0 - _1686, 2.0)))) * (1.0 - fast::clamp((_1372 - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); + float3 param_16 = _1588; + float3 param_17 = _1657; + int param_18 = roughnessInt; + int3 param_19 = _1594; + float3 _1672 = sample_rdm(param_14, param_15, param_16, param_17, param_18, param_19, _271, rdm_lookup, trilesmp, rdm_atlas, rdmsmp) * _1275.rdm_tint; + float _1694 = fast::max(dot(N, _1443), 0.0); + float4 _1697 = brdf_lut.sample(rdmsmp, float2(_1694, roughness)); + float _1707 = sin(roughness * 3.141285419464111328125); + light += (((((mix(_1672, float3(dot(_1672, float3(0.2125999927520751953125, 0.715200006961822509765625, 0.072200000286102294921875))), float3(metallic)) * ((_1650 * _1697.x) + float3(_1697.y))) * _1275.rdm_spec_scale) * (1.0 - (0.699999988079071044921875 * _1707))) * (1.0 - (((0.89999997615814208984375 * roughness) * _1707) * powr(1.0 - _1694, 2.0)))) * (1.0 - fast::clamp((roughness - 0.5) * 3.3333332538604736328125, 0.0, 1.0))); float3 param_20 = N; - float3 param_21 = _1649; - int3 param_22 = _1586; - light += (((((((float3(1.0) - _1642) * _1512) * (sample_rdm_diff(param_20, param_21, param_22, rdm_lookup, trilesmp, rdm_atlas, rdmsmp) * _1275.rdm_tint)) * float3(0.3183410167694091796875)) * trixel_material.xyz) * _1613) * _1275.rdm_diff_scale); + float3 param_21 = _1657; + int3 param_22 = _1594; + light += (((((((float3(1.0) - _1650) * (1.0 - metallic)) * (sample_rdm_diff(param_20, param_21, param_22, rdm_lookup, trilesmp, rdm_atlas, rdmsmp) * _1275.rdm_tint)) * float3(0.3183410167694091796875)) * trixel_material.xyz) * _1621) * _1275.rdm_diff_scale); if (_1275.rdm_diff_scale < 0.001000000047497451305389404296875) { - light += (((float3(_1275.ambient_color) * _1275.ambient_intensity) * trixel_material.xyz) * _1613); + light += (((float3(_1275.ambient_color) * _1275.ambient_intensity) * trixel_material.xyz) * _1621); } } else { - light += (((float3(_1275.ambient_color) * _1275.ambient_intensity) * trixel_material.xyz) * _1613); - float3 _1810 = reflect(-_1435, N); - float3 R = _1810; - if (_1810.y < 0.0) + light += (((float3(_1275.ambient_color) * _1275.ambient_intensity) * trixel_material.xyz) * _1621); + float3 _1818 = reflect(-_1443, N); + float3 R = _1818; + if (_1818.y < 0.0) { R = reflect(R, float3(0.0, 1.0, 0.0)); } float3 param_23 = R; float3 param_24 = float3(_271.sunPosition); - light += ((_1461 * sky(param_23, param_24, _271)) * 0.100000001490116119384765625); + light += ((_1469 * sky(param_23, param_24, _271)) * 0.100000001490116119384765625); } - out.frag_color = float4(mix(float3(_271.deepColor), light + ((trixel_material.xyz * (float((_1355 >> 1) & 3) * 0.3333333432674407958984375)) * _1275.emissive_scale), float3(smoothstep(0.0, _271.planeHeight, in.vpos.y))), 1.0); + out.frag_color = float4(mix(float3(_271.deepColor), light + ((trixel_material.xyz * emittance) * _1275.emissive_scale), float3(smoothstep(0.0, _271.planeHeight, in.vpos.y))), 1.0); if (_1275.is_preview == 1) { - float4 _1853 = out.frag_color; - float3 _1857 = mix(_1853.xyz, float3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), float3(0.5)); - out.frag_color.x = _1857.x; - out.frag_color.y = _1857.y; - out.frag_color.z = _1857.z; + float4 _1861 = out.frag_color; + float3 _1865 = mix(_1861.xyz, float3(0.300000011920928955078125, 0.699999988079071044921875, 1.0), float3(0.5)); + out.frag_color.x = _1865.x; + out.frag_color.y = _1865.y; + out.frag_color.z = _1865.z; } else { if (_1275.is_preview == 2) { - float4 _1871 = out.frag_color; - float3 _1875 = mix(_1871.xyz, float3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), float3(0.5)); - out.frag_color.x = _1875.x; - out.frag_color.y = _1875.y; - out.frag_color.z = _1875.z; + float4 _1879 = out.frag_color; + float3 _1883 = mix(_1879.xyz, float3(1.0, 0.300000011920928955078125, 0.20000000298023223876953125), float3(0.5)); + out.frag_color.x = _1883.x; + out.frag_color.y = _1883.y; + out.frag_color.z = _1883.z; } } return out; @@ -5658,43 +5723,43 @@ fs_trile_source_metal_macos := u8.[ 0x20,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x69,0x6e,0x64, 0x65,0x78,0x20,0x2f,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x30,0x29,0x0a,0x20,0x20, 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x5f,0x31,0x39,0x31,0x33,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x31,0x33,0x2e,0x7a,0x20,0x3d, + 0x74,0x33,0x20,0x5f,0x31,0x39,0x32,0x31,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x32,0x31,0x2e,0x7a,0x20,0x3d, 0x20,0x76,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31, - 0x39,0x31,0x33,0x2e,0x79,0x20,0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x31,0x33,0x3b, + 0x39,0x32,0x31,0x2e,0x79,0x20,0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x31,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28, 0x69,0x6e,0x64,0x65,0x78,0x20,0x2f,0x20,0x32,0x29,0x20,0x3d,0x3d,0x20,0x32,0x29, 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x39,0x31,0x37,0x20,0x3d,0x20,0x76,0x63, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x31,0x37,0x2e, + 0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x39,0x32,0x35,0x20,0x3d,0x20,0x76,0x63, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x32,0x35,0x2e, 0x7a,0x20,0x3d,0x20,0x76,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x31,0x39,0x31,0x37,0x2e,0x78,0x20,0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a, + 0x20,0x5f,0x31,0x39,0x32,0x35,0x2e,0x78,0x20,0x3d,0x20,0x76,0x2e,0x7a,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39, - 0x31,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, + 0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, 0x20,0x28,0x28,0x69,0x6e,0x64,0x65,0x78,0x20,0x25,0x20,0x32,0x29,0x20,0x3d,0x3d, 0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x39,0x32,0x31,0x20,0x3d, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x39,0x32,0x39,0x20,0x3d, 0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39, - 0x32,0x31,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x31,0x2e,0x7a,0x20,0x2a, + 0x32,0x39,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x39,0x2e,0x7a,0x20,0x2a, 0x20,0x28,0x2d,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x31,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x39,0x3b,0x0a,0x20,0x20,0x20, 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31, - 0x39,0x32,0x34,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x36,0x30,0x31,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x34, + 0x39,0x33,0x32,0x20,0x3d,0x20,0x76,0x63,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x20,0x5f,0x36,0x30,0x31,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33,0x32, 0x2e,0x78,0x20,0x2b,0x20,0x6f,0x66,0x66,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x39,0x32,0x36,0x20,0x3d,0x20,0x5f, - 0x31,0x39,0x32,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x32,0x36,0x2e, + 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x39,0x33,0x34,0x20,0x3d,0x20,0x5f, + 0x31,0x39,0x33,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x33,0x34,0x2e, 0x78,0x20,0x3d,0x20,0x5f,0x36,0x30,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x5f,0x36,0x30,0x37,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x34, + 0x6f,0x61,0x74,0x20,0x5f,0x36,0x30,0x37,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33,0x32, 0x2e,0x79,0x20,0x2b,0x20,0x6f,0x66,0x66,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x5f,0x31,0x39,0x32,0x36,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x36,0x30,0x37,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x36,0x3b,0x0a, + 0x5f,0x31,0x39,0x33,0x34,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x36,0x30,0x37,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x76,0x63,0x20,0x3d,0x20,0x5f,0x31,0x39,0x33,0x34,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x36,0x32,0x35,0x20, - 0x3d,0x20,0x5f,0x31,0x39,0x32,0x36,0x2e,0x78,0x79,0x20,0x2a,0x20,0x28,0x31,0x2e, + 0x3d,0x20,0x5f,0x31,0x39,0x33,0x34,0x2e,0x78,0x79,0x20,0x2a,0x20,0x28,0x31,0x2e, 0x30,0x20,0x2f,0x20,0x28,0x28,0x61,0x62,0x73,0x28,0x5f,0x36,0x30,0x31,0x29,0x20, 0x2b,0x20,0x61,0x62,0x73,0x28,0x5f,0x36,0x30,0x37,0x29,0x29,0x20,0x2b,0x20,0x5f, - 0x31,0x39,0x32,0x34,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x31,0x39,0x33,0x32,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, 0x6f,0x61,0x74,0x20,0x5f,0x36,0x32,0x38,0x20,0x3d,0x20,0x5f,0x36,0x32,0x35,0x2e, 0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x36,0x33, 0x30,0x20,0x3d,0x20,0x5f,0x36,0x32,0x35,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, @@ -6475,387 +6540,405 @@ fs_trile_source_metal_macos := u8.[ 0x69,0x6e,0x74,0x20,0x5f,0x31,0x33,0x35,0x35,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28, 0x72,0x6f,0x75,0x6e,0x64,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74, 0x65,0x72,0x69,0x61,0x6c,0x2e,0x77,0x20,0x2a,0x20,0x32,0x35,0x35,0x2e,0x30,0x29, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x33,0x36,0x36, - 0x20,0x3d,0x20,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20, - 0x26,0x20,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x31,0x33,0x37,0x32,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78, - 0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x33,0x36,0x36,0x29,0x20,0x2a,0x20, - 0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35, - 0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69, + 0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x6e,0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49, + 0x6e,0x74,0x20,0x3d,0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e, 0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30, - 0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x37,0x38,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e, - 0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33, - 0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38, - 0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x5f,0x31,0x33,0x38,0x34,0x20,0x3d,0x20,0x61,0x62,0x73,0x28,0x69, - 0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x38,0x36,0x20, - 0x3d,0x20,0x5f,0x31,0x33,0x38,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x38,0x38,0x20,0x3d,0x20,0x5f,0x31,0x33, - 0x38,0x34,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f, - 0x31,0x33,0x38,0x39,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x36,0x20,0x3e,0x3d,0x20, - 0x5f,0x31,0x33,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20, - 0x5f,0x31,0x33,0x39,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x31,0x33,0x38,0x39,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x5f,0x31,0x33,0x39,0x37,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38, - 0x36,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x38,0x34,0x2e,0x7a,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x33,0x39,0x37, - 0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x4e,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x33,0x39,0x37,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x73,0x69,0x67,0x6e,0x28,0x69,0x6e,0x2e,0x66,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x30, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65, - 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x34,0x31,0x30,0x20,0x3d,0x20,0x5f, - 0x31,0x33,0x38,0x38,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x38,0x36,0x3b,0x0a,0x20, + 0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63, + 0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, + 0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x26,0x20,0x31,0x29,0x20,0x21,0x3d,0x20,0x30, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x28,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20,0x31,0x29,0x20,0x26, + 0x20,0x31,0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x37,0x38,0x37,0x34, + 0x30,0x31,0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35,0x30,0x31,0x35,0x38,0x36,0x39, + 0x31,0x34,0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, + 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x33,0x37,0x35,0x20,0x3d, + 0x20,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26,0x20, + 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68, + 0x6e,0x65,0x73,0x73,0x49,0x6e,0x74,0x20,0x3d,0x20,0x5f,0x31,0x33,0x37,0x35,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65, + 0x73,0x73,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x66, + 0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x33,0x37,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e, + 0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37, + 0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39, + 0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e,0x3e,0x20, + 0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33, + 0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39, + 0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x33,0x39,0x32,0x20,0x3d,0x20, + 0x61,0x62,0x73,0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78, + 0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, + 0x31,0x33,0x39,0x34,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x32,0x2e,0x78,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x39,0x36,0x20, + 0x3d,0x20,0x5f,0x31,0x33,0x39,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62, + 0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x33,0x39,0x37,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39, + 0x34,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x39,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x34,0x30,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x28,0x5f,0x31,0x33,0x39,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x34,0x30,0x35,0x20,0x3d, + 0x20,0x5f,0x31,0x33,0x39,0x34,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33,0x39,0x32,0x2e, + 0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x5f,0x31,0x34,0x30,0x35,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x37,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, + 0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x34,0x30,0x35, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x4e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x73,0x69,0x67,0x6e,0x28, + 0x69,0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x29,0x2c,0x20,0x30, + 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x34,0x31, - 0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x31,0x34,0x31,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x34,0x31, - 0x38,0x20,0x3d,0x20,0x5f,0x31,0x33,0x38,0x38,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33, - 0x38,0x34,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x31,0x34,0x31,0x38,0x20,0x3d,0x20,0x5f,0x31,0x34,0x31,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x34,0x31,0x38,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x2e,0x79,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c, - 0x20,0x73,0x69,0x67,0x6e,0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c, - 0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x31,0x34,0x33,0x35,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x69,0x6e,0x2e,0x63,0x61,0x6d,0x20, - 0x2d,0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x34,0x33,0x39,0x20,0x3d,0x20,0x66, - 0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x50,0x6f, - 0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x34,0x34,0x34,0x20,0x3d,0x20,0x66,0x61,0x73, - 0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x31,0x34, - 0x33,0x35,0x20,0x2b,0x20,0x5f,0x31,0x34,0x33,0x39,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x34,0x35,0x31,0x20,0x3d,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x33,0x37,0x38,0x29,0x3b,0x0a,0x20, + 0x38,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x36,0x20,0x3e,0x3d,0x20,0x5f,0x31,0x33, + 0x39,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, + 0x20,0x5f,0x31,0x34,0x32,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x28,0x5f,0x31,0x34,0x31,0x38,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x5f,0x31,0x34,0x32,0x36,0x20,0x3d,0x20,0x5f,0x31,0x33,0x39,0x36,0x20,0x3e, + 0x3d,0x20,0x5f,0x31,0x33,0x39,0x32,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, + 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x34,0x32,0x36,0x20,0x3d,0x20, + 0x5f,0x31,0x34,0x31,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x34, + 0x32,0x36,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x4e,0x20,0x3d,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x69, + 0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x79,0x29,0x2c,0x20,0x30,0x2e, + 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x4e,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c, + 0x20,0x30,0x2e,0x30,0x2c,0x20,0x73,0x69,0x67,0x6e,0x28,0x69,0x6e,0x2e,0x66,0x6e, + 0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x7a,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x34,0x34,0x33,0x20,0x3d,0x20,0x66,0x61, + 0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x69,0x6e, + 0x2e,0x63,0x61,0x6d,0x20,0x2d,0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x34,0x34, + 0x37,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c, + 0x69,0x7a,0x65,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x32,0x37,0x31,0x2e, + 0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x34,0x35,0x32,0x20, - 0x3d,0x20,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30, - 0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33,0x30,0x33,0x32, - 0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x74,0x72,0x69, - 0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a, - 0x2c,0x20,0x5f,0x31,0x34,0x35,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x34,0x34,0x34,0x2c, - 0x20,0x5f,0x31,0x34,0x33,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x20,0x3d,0x20,0x5f,0x31,0x34,0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x34,0x36,0x31,0x20,0x3d,0x20,0x66,0x72, - 0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x31,0x34,0x34,0x34, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x34,0x20,0x3d,0x20,0x5f,0x31,0x33,0x37,0x32,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20, - 0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x31,0x34,0x33,0x35,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x31,0x34,0x33,0x39,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d, - 0x20,0x5f,0x31,0x33,0x37,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x31,0x34,0x39,0x35,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31,0x34,0x33,0x39, - 0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x20,0x5f,0x31,0x35,0x31,0x32,0x20,0x3d,0x20,0x31,0x2e,0x30,0x20,0x2d, - 0x20,0x5f,0x31,0x33,0x37,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x34,0x20,0x5f,0x31,0x35,0x32,0x38,0x20,0x3d,0x20,0x5f,0x31,0x32,0x37,0x35, - 0x2e,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64,0x6f,0x77,0x20,0x2a,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x28,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x69,0x6e,0x2e,0x76,0x70, - 0x6f,0x73,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31, - 0x35,0x33,0x39,0x20,0x3d,0x20,0x28,0x28,0x5f,0x31,0x35,0x32,0x38,0x2e,0x78,0x79, - 0x7a,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x35,0x32,0x38, - 0x2e,0x77,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x34,0x33,0x20,0x3d,0x20,0x5f,0x31,0x35, - 0x33,0x39,0x2e,0x7a,0x20,0x2d,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30, - 0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38, - 0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x38,0x39,0x38,0x20,0x3d,0x20,0x5f, - 0x31,0x35,0x33,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x5f,0x31,0x38,0x39,0x38,0x2e, - 0x7a,0x20,0x3d,0x20,0x5f,0x31,0x35,0x34,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x28,0x28, - 0x28,0x28,0x28,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30, - 0x29,0x20,0x2d,0x20,0x5f,0x31,0x34,0x36,0x31,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35, - 0x31,0x32,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74, - 0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37, - 0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b, - 0x20,0x28,0x28,0x5f,0x31,0x34,0x36,0x31,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74, - 0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72, - 0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x66,0x61, - 0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f, - 0x31,0x34,0x33,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x34,0x39,0x35,0x29,0x20,0x2b,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39, - 0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34, - 0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29, - 0x20,0x2a,0x20,0x73,0x68,0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d, - 0x70,0x6c,0x65,0x5f,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x28,0x73,0x68,0x61,0x64, - 0x6f,0x77,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x38,0x39,0x38,0x2e,0x78,0x79,0x2c, - 0x20,0x5f,0x31,0x35,0x34,0x33,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x34,0x39,0x35, - 0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x4c,0x69,0x67,0x68, - 0x74,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x31,0x2e,0x73, - 0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x35,0x38,0x30,0x20,0x3d,0x20, - 0x69,0x6e,0x2e,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x20,0x2b, - 0x20,0x28,0x4e,0x20,0x2a,0x20,0x30,0x2e,0x34,0x39,0x30,0x30,0x30,0x30,0x30,0x30, - 0x39,0x35,0x33,0x36,0x37,0x34,0x33,0x31,0x36,0x34,0x30,0x36,0x32,0x35,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x5f,0x31,0x35,0x38,0x36,0x20, - 0x3d,0x20,0x69,0x6e,0x74,0x33,0x28,0x6d,0x6f,0x64,0x28,0x66,0x6c,0x6f,0x6f,0x72, - 0x28,0x69,0x6e,0x2e,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72,0x29, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x33,0x32,0x2e,0x30,0x29,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x39,0x20,0x3d,0x20,0x5f,0x31,0x35,0x38,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x20,0x3d,0x20,0x5f, - 0x31,0x33,0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34, - 0x20,0x5f,0x31,0x36,0x31,0x32,0x20,0x3d,0x20,0x73,0x73,0x61,0x6f,0x74,0x65,0x78, - 0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67, - 0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28, - 0x5f,0x31,0x32,0x37,0x35,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c, - 0x20,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20, - 0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x73,0x63, - 0x72,0x65,0x65,0x6e,0x5f,0x68,0x29,0x29,0x2c,0x20,0x62,0x69,0x61,0x73,0x28,0x30, - 0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x31,0x36,0x31,0x33,0x20,0x3d,0x20,0x5f,0x31,0x36,0x31,0x32,0x2e,0x78,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x36,0x32,0x33,0x20, - 0x3d,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x65,0x6e,0x61,0x62, - 0x6c,0x65,0x64,0x20,0x3d,0x3d,0x20,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x31,0x36,0x32,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x36,0x32,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x36,0x32,0x39,0x20,0x3d,0x20,0x72, - 0x64,0x6d,0x5f,0x67,0x65,0x74,0x5f,0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x65,0x63, - 0x74,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x39,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x31,0x30,0x2c,0x20,0x72,0x64,0x6d,0x5f,0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x2c, - 0x20,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x29,0x2e,0x7a,0x20,0x3e,0x20,0x30, - 0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x31,0x36,0x32,0x39,0x20,0x3d,0x20,0x5f,0x31,0x36,0x32,0x33,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x36,0x32,0x39,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x31,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f, - 0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31,0x34,0x33,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x32,0x20,0x3d,0x20,0x5f,0x31,0x34, - 0x35,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x20,0x3d,0x20,0x5f,0x31,0x33, - 0x37,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x20,0x5f,0x31,0x36,0x34,0x32,0x20,0x3d,0x20,0x46,0x72,0x65,0x73,0x6e, - 0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e,0x65, - 0x73,0x73,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x31,0x36,0x34,0x39,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73, - 0x20,0x2d,0x20,0x5f,0x31,0x35,0x38,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x34,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35,0x20,0x3d, - 0x20,0x2d,0x69,0x6e,0x2e,0x63,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36, - 0x20,0x3d,0x20,0x5f,0x31,0x35,0x38,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, - 0x37,0x20,0x3d,0x20,0x5f,0x31,0x36,0x34,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x38,0x20, - 0x3d,0x20,0x5f,0x31,0x33,0x36,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x39,0x20,0x3d, - 0x20,0x5f,0x31,0x35,0x38,0x36,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x36,0x36,0x34,0x20,0x3d,0x20,0x73, - 0x61,0x6d,0x70,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x31,0x34,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35,0x2c,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x31,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x37, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x38,0x2c,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x39,0x2c,0x20,0x5f,0x32,0x37,0x31,0x2c,0x20,0x72,0x64,0x6d,0x5f, - 0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70, - 0x2c,0x20,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x2c,0x20,0x72,0x64,0x6d, - 0x73,0x6d,0x70,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d, - 0x5f,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x38,0x36,0x20,0x3d,0x20,0x66,0x61,0x73, - 0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31, - 0x34,0x33,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x31,0x36,0x38,0x39, - 0x20,0x3d,0x20,0x62,0x72,0x64,0x66,0x5f,0x6c,0x75,0x74,0x2e,0x73,0x61,0x6d,0x70, - 0x6c,0x65,0x28,0x72,0x64,0x6d,0x73,0x6d,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x32,0x28,0x5f,0x31,0x36,0x38,0x36,0x2c,0x20,0x5f,0x31,0x33,0x37,0x32,0x29,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x31,0x36,0x39,0x39,0x20,0x3d,0x20,0x73,0x69,0x6e,0x28,0x5f,0x31,0x33,0x37, - 0x32,0x20,0x2a,0x20,0x33,0x2e,0x31,0x34,0x31,0x32,0x38,0x35,0x34,0x31,0x39,0x34, - 0x36,0x34,0x31,0x31,0x31,0x33,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28, - 0x28,0x28,0x28,0x28,0x6d,0x69,0x78,0x28,0x5f,0x31,0x36,0x36,0x34,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x36,0x36,0x34,0x2c, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39,0x39, - 0x39,0x39,0x32,0x37,0x35,0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32,0x35, - 0x2c,0x20,0x30,0x2e,0x37,0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36,0x31, - 0x38,0x32,0x32,0x35,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e, - 0x30,0x37,0x32,0x32,0x30,0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32,0x32, - 0x39,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x29,0x29,0x29,0x2c,0x20,0x5f,0x31,0x34, - 0x35,0x31,0x29,0x20,0x2a,0x20,0x28,0x28,0x5f,0x31,0x36,0x34,0x32,0x20,0x2a,0x20, - 0x5f,0x31,0x36,0x38,0x39,0x2e,0x78,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x5f,0x31,0x36,0x38,0x39,0x2e,0x79,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x73,0x70,0x65,0x63,0x5f,0x73,0x63, - 0x61,0x6c,0x65,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x30, - 0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30,0x37,0x31, - 0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x36,0x39, - 0x39,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x28,0x28, - 0x28,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x36,0x31,0x35,0x38,0x31, - 0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x20,0x2a,0x20,0x5f,0x31,0x33, - 0x37,0x32,0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x39,0x39,0x29,0x20,0x2a,0x20,0x70, - 0x6f,0x77,0x72,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x36,0x38,0x36,0x2c, - 0x20,0x32,0x2e,0x30,0x29,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20, - 0x2d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x5f, - 0x31,0x33,0x37,0x32,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x33,0x2e, - 0x33,0x33,0x33,0x33,0x33,0x33,0x32,0x35,0x33,0x38,0x36,0x30,0x34,0x37,0x33,0x36, - 0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x30,0x20,0x3d,0x20,0x4e, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x20,0x3d,0x20,0x5f,0x31,0x36,0x34, - 0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x32,0x20,0x3d,0x20,0x5f,0x31,0x35,0x38,0x36, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20, - 0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x31,0x36,0x34,0x32,0x29,0x20,0x2a, - 0x20,0x5f,0x31,0x35,0x31,0x32,0x29,0x20,0x2a,0x20,0x28,0x73,0x61,0x6d,0x70,0x6c, - 0x65,0x5f,0x72,0x64,0x6d,0x5f,0x64,0x69,0x66,0x66,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x32,0x30,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x32,0x32,0x2c,0x20,0x72,0x64,0x6d,0x5f,0x6c,0x6f,0x6f, - 0x6b,0x75,0x70,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x2c,0x20,0x72, - 0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x2c,0x20,0x72,0x64,0x6d,0x73,0x6d,0x70, - 0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x74,0x69, - 0x6e,0x74,0x29,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e, - 0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39,0x34,0x30,0x39,0x31, - 0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65, - 0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20, - 0x2a,0x20,0x5f,0x31,0x36,0x31,0x33,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35, - 0x2e,0x72,0x64,0x6d,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61, - 0x6c,0x65,0x20,0x3c,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30, - 0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34, - 0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61, - 0x74,0x33,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74, - 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e, - 0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74, - 0x79,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65, - 0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x31, - 0x33,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74, - 0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31, - 0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65, - 0x6e,0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20, + 0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, + 0x65,0x28,0x5f,0x31,0x34,0x34,0x33,0x20,0x2b,0x20,0x5f,0x31,0x34,0x34,0x37,0x29, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x34, + 0x36,0x30,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, + 0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33, + 0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20, 0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e, - 0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x31,0x33,0x29,0x3b,0x0a,0x20, + 0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x6d,0x65,0x74,0x61, + 0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a, + 0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x34,0x35,0x32,0x2c,0x20,0x5f, + 0x31,0x34,0x34,0x33,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20, + 0x3d,0x20,0x5f,0x31,0x34,0x36,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x33,0x20,0x5f,0x31,0x34,0x36,0x39,0x20,0x3d,0x20,0x66,0x72,0x65,0x73, + 0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72,0x61,0x6d, + 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d, + 0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x31,0x34,0x35,0x32,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x34,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x35,0x20,0x3d,0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x31,0x34,0x34, + 0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x31,0x34,0x34,0x37,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38, + 0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x30,0x33,0x20,0x3d,0x20, + 0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c, + 0x20,0x5f,0x31,0x34,0x34,0x37,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x31,0x35,0x33,0x36,0x20, + 0x3d,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x6d,0x76,0x70,0x5f,0x73,0x68,0x61,0x64, + 0x6f,0x77,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x66,0x6c,0x6f,0x6f, + 0x72,0x28,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x20,0x2a,0x20,0x31,0x36,0x2e,0x30, + 0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x36,0x32, + 0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x35,0x34,0x37,0x20,0x3d,0x20,0x28,0x28,0x5f, + 0x31,0x35,0x33,0x36,0x2e,0x78,0x79,0x7a,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x33,0x28,0x5f,0x31,0x35,0x33,0x36,0x2e,0x77,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e, + 0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x35,0x35, + 0x31,0x20,0x3d,0x20,0x5f,0x31,0x35,0x34,0x37,0x2e,0x7a,0x20,0x2d,0x20,0x30,0x2e, + 0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34, + 0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37, + 0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31, + 0x39,0x30,0x36,0x20,0x3d,0x20,0x5f,0x31,0x35,0x34,0x37,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x5f,0x31,0x39,0x30,0x36,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x35,0x35,0x31, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x6c,0x69,0x67, + 0x68,0x74,0x20,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x66,0x6c,0x6f, + 0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x31,0x34,0x36,0x39, + 0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c, + 0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d, + 0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31, + 0x36,0x37,0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29, + 0x20,0x2b,0x20,0x28,0x28,0x5f,0x31,0x34,0x36,0x39,0x20,0x2a,0x20,0x28,0x44,0x69, + 0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65, + 0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35, + 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20, + 0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c, + 0x20,0x5f,0x31,0x34,0x34,0x33,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2a, + 0x20,0x5f,0x31,0x35,0x30,0x33,0x29,0x20,0x2b,0x20,0x39,0x2e,0x39,0x39,0x39,0x39, + 0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35, + 0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29, + 0x29,0x29,0x20,0x2a,0x20,0x73,0x68,0x61,0x64,0x6f,0x77,0x74,0x65,0x78,0x2e,0x73, + 0x61,0x6d,0x70,0x6c,0x65,0x5f,0x63,0x6f,0x6d,0x70,0x61,0x72,0x65,0x28,0x73,0x68, + 0x61,0x64,0x6f,0x77,0x73,0x6d,0x70,0x2c,0x20,0x5f,0x31,0x39,0x30,0x36,0x2e,0x78, + 0x79,0x2c,0x20,0x5f,0x31,0x35,0x35,0x31,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x35, + 0x30,0x33,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x4c,0x69, + 0x67,0x68,0x74,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x31, + 0x2e,0x73,0x75,0x6e,0x49,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x35,0x38,0x38,0x20, + 0x3d,0x20,0x69,0x6e,0x2e,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65,0x72, + 0x20,0x2b,0x20,0x28,0x4e,0x20,0x2a,0x20,0x30,0x2e,0x34,0x39,0x30,0x30,0x30,0x30, + 0x30,0x30,0x39,0x35,0x33,0x36,0x37,0x34,0x33,0x31,0x36,0x34,0x30,0x36,0x32,0x35, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x5f,0x31,0x35,0x39, + 0x34,0x20,0x3d,0x20,0x69,0x6e,0x74,0x33,0x28,0x6d,0x6f,0x64,0x28,0x66,0x6c,0x6f, + 0x6f,0x72,0x28,0x69,0x6e,0x2e,0x74,0x72,0x69,0x6c,0x65,0x43,0x65,0x6e,0x74,0x65, + 0x72,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x33,0x32,0x2e,0x30,0x29, + 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x61,0x72, + 0x61,0x6d,0x5f,0x39,0x20,0x3d,0x20,0x5f,0x31,0x35,0x39,0x34,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x20,0x3d, + 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49,0x6e,0x74,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x31,0x36,0x32,0x30,0x20, + 0x3d,0x20,0x73,0x73,0x61,0x6f,0x74,0x65,0x78,0x2e,0x73,0x61,0x6d,0x70,0x6c,0x65, + 0x28,0x74,0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x32,0x28,0x67,0x6c,0x5f,0x46,0x72,0x61,0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x78, + 0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x73, + 0x63,0x72,0x65,0x65,0x6e,0x5f,0x77,0x29,0x2c,0x20,0x67,0x6c,0x5f,0x46,0x72,0x61, + 0x67,0x43,0x6f,0x6f,0x72,0x64,0x2e,0x79,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x73,0x63,0x72,0x65,0x65,0x6e,0x5f,0x68,0x29, + 0x29,0x2c,0x20,0x62,0x69,0x61,0x73,0x28,0x30,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x32,0x31,0x20,0x3d, + 0x20,0x5f,0x31,0x36,0x32,0x30,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f, + 0x6f,0x6c,0x20,0x5f,0x31,0x36,0x33,0x31,0x20,0x3d,0x20,0x5f,0x31,0x32,0x37,0x35, + 0x2e,0x72,0x64,0x6d,0x5f,0x65,0x6e,0x61,0x62,0x6c,0x65,0x64,0x20,0x3d,0x3d,0x20, + 0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31,0x36,0x33, + 0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x36,0x33,0x31, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x5f,0x31,0x36,0x33,0x37,0x20,0x3d,0x20,0x72,0x64,0x6d,0x5f,0x67,0x65,0x74,0x5f, + 0x61,0x74,0x6c,0x61,0x73,0x5f,0x72,0x65,0x63,0x74,0x28,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x39,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x30,0x2c,0x20,0x72,0x64, + 0x6d,0x5f,0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x2c,0x20,0x74,0x72,0x69,0x6c,0x65,0x73, + 0x6d,0x70,0x29,0x2e,0x7a,0x20,0x3e,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x36,0x33,0x37,0x20, + 0x3d,0x20,0x5f,0x31,0x36,0x33,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x36,0x33,0x37,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x20,0x3d,0x20,0x66,0x61,0x73, + 0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e,0x2c,0x20,0x5f,0x31, + 0x34,0x34,0x33,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x31,0x32,0x20,0x3d,0x20,0x5f,0x31,0x34,0x36,0x30,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x31,0x33,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, + 0x5f,0x31,0x36,0x35,0x30,0x20,0x3d,0x20,0x46,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53, + 0x63,0x68,0x6c,0x69,0x63,0x6b,0x52,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x28, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x31,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x31,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x33,0x29,0x3b,0x0a,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31, - 0x38,0x31,0x30,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x2d,0x5f, - 0x31,0x34,0x33,0x35,0x2c,0x20,0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x52,0x20,0x3d,0x20,0x5f,0x31,0x38, - 0x31,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x31,0x38,0x31,0x30,0x2e,0x79,0x20,0x3c,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x52,0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74, - 0x28,0x52,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x33,0x20,0x3d,0x20, - 0x52,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x34,0x20,0x3d,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x28,0x5f,0x32,0x37,0x31,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69, - 0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c, - 0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x5f,0x31,0x34,0x36,0x31,0x20, - 0x2a,0x20,0x73,0x6b,0x79,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x33,0x2c,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x34,0x2c,0x20,0x5f,0x32,0x37,0x31,0x29,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39, - 0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74, - 0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x28,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, - 0x5f,0x32,0x37,0x31,0x2e,0x64,0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x2c, - 0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x28,0x28,0x74,0x72,0x69,0x78,0x65, - 0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a, - 0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x33,0x35,0x35,0x20,0x3e, - 0x3e,0x20,0x31,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33, - 0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35, - 0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37, - 0x35,0x2e,0x65,0x6d,0x69,0x73,0x73,0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65, - 0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68, - 0x73,0x74,0x65,0x70,0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x37,0x31,0x2e,0x70, - 0x6c,0x61,0x6e,0x65,0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x2e,0x76, - 0x70,0x6f,0x73,0x2e,0x79,0x29,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x69,0x73, - 0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x34,0x20,0x5f,0x31,0x38,0x35,0x33,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x38,0x35,0x37, - 0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x35,0x33,0x2e,0x78,0x79,0x7a, - 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30, - 0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38, - 0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38, - 0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c, - 0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e, - 0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74, - 0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20, - 0x5f,0x31,0x38,0x35,0x37,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x36,0x35,0x37,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x20,0x2d,0x20, + 0x5f,0x31,0x35,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x34,0x20,0x3d, + 0x20,0x4e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35,0x20,0x3d,0x20,0x2d,0x69, + 0x6e,0x2e,0x63,0x76,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36,0x20,0x3d,0x20, + 0x5f,0x31,0x35,0x38,0x38,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x37,0x20,0x3d, + 0x20,0x5f,0x31,0x36,0x35,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x6e,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x38,0x20,0x3d,0x20,0x72, + 0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x49,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x31,0x39,0x20,0x3d,0x20,0x5f,0x31,0x35,0x39,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x36,0x37,0x32, + 0x20,0x3d,0x20,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x28,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x31,0x34,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x35, + 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x36,0x2c,0x20,0x70,0x61,0x72,0x61, + 0x6d,0x5f,0x31,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x38,0x2c,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x39,0x2c,0x20,0x5f,0x32,0x37,0x31,0x2c,0x20, + 0x72,0x64,0x6d,0x5f,0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x2c,0x20,0x74,0x72,0x69,0x6c, + 0x65,0x73,0x6d,0x70,0x2c,0x20,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c,0x61,0x73,0x2c, + 0x20,0x72,0x64,0x6d,0x73,0x6d,0x70,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35, + 0x2e,0x72,0x64,0x6d,0x5f,0x74,0x69,0x6e,0x74,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x36,0x39,0x34,0x20,0x3d, + 0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x4e, + 0x2c,0x20,0x5f,0x31,0x34,0x34,0x33,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f, + 0x31,0x36,0x39,0x37,0x20,0x3d,0x20,0x62,0x72,0x64,0x66,0x5f,0x6c,0x75,0x74,0x2e, + 0x73,0x61,0x6d,0x70,0x6c,0x65,0x28,0x72,0x64,0x6d,0x73,0x6d,0x70,0x2c,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x31,0x36,0x39,0x34,0x2c,0x20,0x72,0x6f,0x75, + 0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x30,0x37,0x20,0x3d,0x20, + 0x73,0x69,0x6e,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x2a,0x20, + 0x33,0x2e,0x31,0x34,0x31,0x32,0x38,0x35,0x34,0x31,0x39,0x34,0x36,0x34,0x31,0x31, + 0x31,0x33,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28, + 0x6d,0x69,0x78,0x28,0x5f,0x31,0x36,0x37,0x32,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x33,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x36,0x37,0x32,0x2c,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x33,0x28,0x30,0x2e,0x32,0x31,0x32,0x35,0x39,0x39,0x39,0x39,0x32,0x37, + 0x35,0x32,0x30,0x37,0x35,0x31,0x39,0x35,0x33,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e, + 0x37,0x31,0x35,0x32,0x30,0x30,0x30,0x30,0x36,0x39,0x36,0x31,0x38,0x32,0x32,0x35, + 0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x37,0x32,0x32, + 0x30,0x30,0x30,0x30,0x30,0x32,0x38,0x36,0x31,0x30,0x32,0x32,0x39,0x34,0x39,0x32, + 0x31,0x38,0x37,0x35,0x29,0x29,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, + 0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x5f, + 0x31,0x36,0x35,0x30,0x20,0x2a,0x20,0x5f,0x31,0x36,0x39,0x37,0x2e,0x78,0x29,0x20, + 0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x36,0x39,0x37,0x2e,0x79, + 0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f, + 0x73,0x70,0x65,0x63,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x20,0x2a,0x20,0x28,0x31, + 0x2e,0x30,0x20,0x2d,0x20,0x28,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38, + 0x38,0x30,0x37,0x39,0x30,0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35, + 0x20,0x2a,0x20,0x5f,0x31,0x37,0x30,0x37,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31, + 0x2e,0x30,0x20,0x2d,0x20,0x28,0x28,0x28,0x30,0x2e,0x38,0x39,0x39,0x39,0x39,0x39, + 0x39,0x37,0x36,0x31,0x35,0x38,0x31,0x34,0x32,0x30,0x38,0x39,0x38,0x34,0x33,0x37, + 0x35,0x20,0x2a,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x29,0x20,0x2a, + 0x20,0x5f,0x31,0x37,0x30,0x37,0x29,0x20,0x2a,0x20,0x70,0x6f,0x77,0x72,0x28,0x31, + 0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x36,0x39,0x34,0x2c,0x20,0x32,0x2e,0x30,0x29, + 0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x66,0x61,0x73, + 0x74,0x3a,0x3a,0x63,0x6c,0x61,0x6d,0x70,0x28,0x28,0x72,0x6f,0x75,0x67,0x68,0x6e, + 0x65,0x73,0x73,0x20,0x2d,0x20,0x30,0x2e,0x35,0x29,0x20,0x2a,0x20,0x33,0x2e,0x33, + 0x33,0x33,0x33,0x33,0x33,0x32,0x35,0x33,0x38,0x36,0x30,0x34,0x37,0x33,0x36,0x33, + 0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29, + 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x30,0x20,0x3d,0x20,0x4e,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x20,0x3d,0x20,0x5f,0x31,0x36,0x35,0x37, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x6e,0x74,0x33,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x32,0x32,0x20,0x3d,0x20,0x5f,0x31,0x35,0x39,0x34,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b, + 0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, + 0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x31,0x36,0x35,0x30,0x29,0x20,0x2a,0x20, + 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29, + 0x29,0x20,0x2a,0x20,0x28,0x73,0x61,0x6d,0x70,0x6c,0x65,0x5f,0x72,0x64,0x6d,0x5f, + 0x64,0x69,0x66,0x66,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x30,0x2c,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x32,0x31,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, + 0x32,0x2c,0x20,0x72,0x64,0x6d,0x5f,0x6c,0x6f,0x6f,0x6b,0x75,0x70,0x2c,0x20,0x74, + 0x72,0x69,0x6c,0x65,0x73,0x6d,0x70,0x2c,0x20,0x72,0x64,0x6d,0x5f,0x61,0x74,0x6c, + 0x61,0x73,0x2c,0x20,0x72,0x64,0x6d,0x73,0x6d,0x70,0x29,0x20,0x2a,0x20,0x5f,0x31, + 0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x74,0x69,0x6e,0x74,0x29,0x29,0x20,0x2a, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31, + 0x30,0x31,0x36,0x37,0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35, + 0x29,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65, + 0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x32, + 0x31,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64,0x6d,0x5f,0x64, + 0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x72,0x64, + 0x6d,0x5f,0x64,0x69,0x66,0x66,0x5f,0x73,0x63,0x61,0x6c,0x65,0x20,0x3c,0x20,0x30, + 0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37, + 0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38, + 0x37,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20, + 0x2b,0x3d,0x20,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x32, + 0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e, + 0x74,0x5f,0x69,0x6e,0x74,0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x74, + 0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78, + 0x79,0x7a,0x29,0x20,0x2a,0x20,0x5f,0x31,0x36,0x32,0x31,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, + 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28, + 0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x61,0x6d, + 0x62,0x69,0x65,0x6e,0x74,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x29,0x20,0x2a,0x20,0x5f, + 0x31,0x32,0x37,0x35,0x2e,0x61,0x6d,0x62,0x69,0x65,0x6e,0x74,0x5f,0x69,0x6e,0x74, + 0x65,0x6e,0x73,0x69,0x74,0x79,0x29,0x20,0x2a,0x20,0x74,0x72,0x69,0x78,0x65,0x6c, + 0x5f,0x6d,0x61,0x74,0x65,0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a, + 0x20,0x5f,0x31,0x36,0x32,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x38,0x31,0x38,0x20,0x3d,0x20, + 0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x2d,0x5f,0x31,0x34,0x34,0x33,0x2c,0x20, + 0x4e,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x33,0x20,0x52,0x20,0x3d,0x20,0x5f,0x31,0x38,0x31,0x38,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x38,0x31,0x38,0x2e, + 0x79,0x20,0x3c,0x20,0x30,0x2e,0x30,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x52, + 0x20,0x3d,0x20,0x72,0x65,0x66,0x6c,0x65,0x63,0x74,0x28,0x52,0x2c,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30, + 0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x32,0x33,0x20,0x3d,0x20,0x52,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61, + 0x6d,0x5f,0x32,0x34,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x32, + 0x37,0x31,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b, + 0x3d,0x20,0x28,0x28,0x5f,0x31,0x34,0x36,0x39,0x20,0x2a,0x20,0x73,0x6b,0x79,0x28, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x32,0x34,0x2c,0x20,0x5f,0x32,0x37,0x31,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31, + 0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f, + 0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x6d, + 0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x32,0x37,0x31,0x2e,0x64, + 0x65,0x65,0x70,0x43,0x6f,0x6c,0x6f,0x72,0x29,0x2c,0x20,0x6c,0x69,0x67,0x68,0x74, + 0x20,0x2b,0x20,0x28,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x6d,0x61,0x74,0x65, + 0x72,0x69,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x65,0x6d,0x69,0x74,0x74, + 0x61,0x6e,0x63,0x65,0x29,0x20,0x2a,0x20,0x5f,0x31,0x32,0x37,0x35,0x2e,0x65,0x6d, + 0x69,0x73,0x73,0x69,0x76,0x65,0x5f,0x73,0x63,0x61,0x6c,0x65,0x29,0x2c,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x33,0x28,0x73,0x6d,0x6f,0x6f,0x74,0x68,0x73,0x74,0x65,0x70, + 0x28,0x30,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x37,0x31,0x2e,0x70,0x6c,0x61,0x6e,0x65, + 0x48,0x65,0x69,0x67,0x68,0x74,0x2c,0x20,0x69,0x6e,0x2e,0x76,0x70,0x6f,0x73,0x2e, + 0x79,0x29,0x29,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65, + 0x76,0x69,0x65,0x77,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20, + 0x5f,0x31,0x38,0x36,0x31,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67, + 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x38,0x36,0x35,0x20,0x3d,0x20,0x6d, + 0x69,0x78,0x28,0x5f,0x31,0x38,0x36,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31, + 0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c, + 0x20,0x30,0x2e,0x36,0x39,0x39,0x39,0x39,0x39,0x39,0x38,0x38,0x30,0x37,0x39,0x30, + 0x37,0x31,0x30,0x34,0x34,0x39,0x32,0x31,0x38,0x37,0x35,0x2c,0x20,0x31,0x2e,0x30, + 0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61, + 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x38,0x36, + 0x35,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74, + 0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20, + 0x5f,0x31,0x38,0x36,0x35,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e, - 0x79,0x20,0x3d,0x20,0x5f,0x31,0x38,0x35,0x37,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20, + 0x7a,0x20,0x3d,0x20,0x5f,0x31,0x38,0x36,0x35,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, + 0x32,0x37,0x35,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76,0x69,0x65,0x77,0x20,0x3d, + 0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x34,0x20,0x5f,0x31,0x38,0x37,0x39,0x20,0x3d,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x38, + 0x38,0x33,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38,0x37,0x39,0x2e,0x78, + 0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20, + 0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32, + 0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x32,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38, + 0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x38,0x35,0x37,0x2e,0x7a,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x32,0x37,0x35,0x2e,0x69,0x73,0x5f,0x70,0x72,0x65,0x76,0x69, - 0x65,0x77,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x31,0x38,0x37,0x31,0x20,0x3d,0x20,0x6f,0x75, - 0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x31,0x38,0x37,0x35,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x31,0x38, - 0x37,0x31,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31, - 0x2e,0x30,0x2c,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39, - 0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x2c,0x20, - 0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33, - 0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x38,0x37, - 0x35,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e, - 0x79,0x20,0x3d,0x20,0x5f,0x31,0x38,0x37,0x35,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61, - 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x38,0x37, - 0x35,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, + 0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x38,0x38,0x33,0x2e,0x78,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74, + 0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20, + 0x5f,0x31,0x38,0x38,0x33,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, + 0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x31,0x38,0x38,0x33,0x2e,0x7a,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d, + 0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b, + 0x0a,0x7d,0x0a,0x0a,0x00, ]; trile_shader_desc :: (backend: sg_backend) -> sg_shader_desc { desc: sg_shader_desc; diff --git a/src/shaders/jai/shader_trixel.jai b/src/shaders/jai/shader_trixel.jai index 1686260..5061273 100644 --- a/src/shaders/jai/shader_trixel.jai +++ b/src/shaders/jai/shader_trixel.jai @@ -158,7 +158,7 @@ vs_trixel_source_glsl430 := u8.[ float time; }; - uniform trixel_world_config _205; + uniform trixel_world_config _215; uniform ivec4 trixel_fs_params[1]; layout(location = 0) in vec4 color; @@ -201,55 +201,65 @@ vs_trixel_source_glsl430 := u8.[ void main() { int _150 = int(round(color.w * 255.0)); - float _172 = max(float((_150 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - float _178 = float((_150 >> 3) & 3) * 0.3333333432674407958984375; + float emittance = 0.0; + float roughness = 0.0500000007450580596923828125; + float metallic = 0.0; + if ((_150 & 1) != 0) + { + emittance = float((_150 >> 1) & 127) * 0.0078740157186985015869140625; + } + else + { + roughness = max(float((_150 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); + metallic = float((_150 >> 3) & 3) * 0.3333333432674407958984375; + } vec3 light = color.xyz * 0.300000011920928955078125; - vec3 _187 = (color.xyz * (float((_150 >> 1) & 3) * 0.3333333432674407958984375)) * 5.0; - vec3 _192 = normalize(fnormal.xyz); - vec3 _201 = normalize(cam - pos.xyz); - vec3 _210 = normalize(_205.sunPosition); - vec3 _215 = normalize(_201 + _210); - float param = max(dot(_215, _201), 0.0); - vec3 param_1 = mix(vec3(0.039999999105930328369140625), color.xyz, vec3(_178)); - vec3 _232 = fresnelSchlick(param, param_1); - vec3 param_2 = _192; - vec3 param_3 = _215; - float param_4 = _172; - vec3 param_5 = _192; - vec3 param_6 = _201; - vec3 param_7 = _210; - float param_8 = _172; - float _267 = max(dot(_192, _210), 0.0); - light += ((((((vec3(1.0) - _232) * (1.0 - _178)) * color.xyz) * vec3(0.3183410167694091796875)) + ((_232 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * max(dot(_192, _201), 0.0)) * _267) + 9.9999997473787516355514526367188e-05))) * _267); + vec3 _197 = (color.xyz * emittance) * 5.0; + vec3 _202 = normalize(fnormal.xyz); + vec3 _211 = normalize(cam - pos.xyz); + vec3 _220 = normalize(_215.sunPosition); + vec3 _225 = normalize(_211 + _220); + float param = max(dot(_225, _211), 0.0); + vec3 param_1 = mix(vec3(0.039999999105930328369140625), color.xyz, vec3(metallic)); + vec3 _242 = fresnelSchlick(param, param_1); + vec3 param_2 = _202; + vec3 param_3 = _225; + float param_4 = roughness; + vec3 param_5 = _202; + vec3 param_6 = _211; + vec3 param_7 = _220; + float param_8 = roughness; + float _277 = max(dot(_202, _220), 0.0); + light += ((((((vec3(1.0) - _242) * (1.0 - metallic)) * color.xyz) * vec3(0.3183410167694091796875)) + ((_242 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * max(dot(_202, _211), 0.0)) * _277) + 9.9999997473787516355514526367188e-05))) * _277); if (trixel_fs_params[0].x == 1) { - frag_color = vec4((_192 * 0.5) + vec3(0.5), 1.0); + frag_color = vec4((_202 * 0.5) + vec3(0.5), 1.0); } else { if (trixel_fs_params[0].x == 2) { - frag_color = vec4((color.xyz * ((_267 * 0.60000002384185791015625) + 0.4000000059604644775390625)) + _187, 1.0); + frag_color = vec4((color.xyz * ((_277 * 0.60000002384185791015625) + 0.4000000059604644775390625)) + _197, 1.0); } else { if (trixel_fs_params[0].x == 3) { - frag_color = vec4(((color.xyz * ((_192 * 0.5) + vec3(0.5))) * ((_267 * 0.4000000059604644775390625) + 0.60000002384185791015625)) + _187, 1.0); + frag_color = vec4(((color.xyz * ((_202 * 0.5) + vec3(0.5))) * ((_277 * 0.4000000059604644775390625) + 0.60000002384185791015625)) + _197, 1.0); } else { - frag_color = vec4(light + _187, 1.0); + frag_color = vec4(light + _197, 1.0); } } } if (vtrixel_state > 0.5) { - vec4 _390 = frag_color; - vec3 _394 = mix(_390.xyz, vec3(1.0, 1.0, 0.5), vec3(0.5)); - frag_color.x = _394.x; - frag_color.y = _394.y; - frag_color.z = _394.z; + vec4 _398 = frag_color; + vec3 _402 = mix(_398.xyz, vec3(1.0, 1.0, 0.5), vec3(0.5)); + frag_color.x = _402.x; + frag_color.y = _402.y; + frag_color.z = _402.z; } } @@ -279,7 +289,7 @@ fs_trixel_source_glsl430 := u8.[ 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74, 0x69,0x6d,0x65,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d, 0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f, - 0x6e,0x66,0x69,0x67,0x20,0x5f,0x32,0x30,0x35,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66, + 0x6e,0x66,0x69,0x67,0x20,0x5f,0x32,0x31,0x35,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66, 0x6f,0x72,0x6d,0x20,0x69,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x69,0x78,0x65,0x6c, 0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x6c, 0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d, @@ -355,139 +365,152 @@ fs_trixel_source_glsl430 := u8.[ 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x35,0x30,0x20,0x3d,0x20,0x69,0x6e, 0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x77,0x20, 0x2a,0x20,0x32,0x35,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x32,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28, - 0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x35, - 0x29,0x20,0x26,0x20,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38,0x35, - 0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36,0x33, - 0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30, - 0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38, - 0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x31,0x37,0x38,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28, - 0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20, - 0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37, - 0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x33,0x30, - 0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35, - 0x30,0x37,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x5f,0x31,0x38,0x37,0x20,0x3d,0x20,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78, - 0x79,0x7a,0x20,0x2a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35, - 0x30,0x20,0x3e,0x3e,0x20,0x31,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30, - 0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x35, - 0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39, - 0x32,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x66,0x6e, - 0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x30,0x31,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x61,0x6d,0x20,0x2d,0x20,0x70,0x6f,0x73,0x2e, - 0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f, - 0x32,0x31,0x30,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x5f,0x32,0x30,0x35,0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x31,0x35, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x30, - 0x31,0x20,0x2b,0x20,0x5f,0x32,0x31,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x6d,0x61,0x78, - 0x28,0x64,0x6f,0x74,0x28,0x5f,0x32,0x31,0x35,0x2c,0x20,0x5f,0x32,0x30,0x31,0x29, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31, - 0x30,0x35,0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32, - 0x35,0x29,0x2c,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76, - 0x65,0x63,0x33,0x28,0x5f,0x31,0x37,0x38,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x33,0x32,0x20,0x3d,0x20,0x66,0x72,0x65,0x73, + 0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d, + 0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e,0x30,0x35, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39, + 0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d, + 0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x28,0x5f, + 0x31,0x35,0x30,0x20,0x26,0x20,0x31,0x29,0x20,0x21,0x3d,0x20,0x30,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6d,0x69, + 0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28, + 0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x31,0x29,0x20,0x26,0x20,0x31,0x32,0x37, + 0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x37,0x38,0x37,0x34,0x30,0x31,0x35,0x37, + 0x31,0x38,0x36,0x39,0x38,0x35,0x30,0x31,0x35,0x38,0x36,0x39,0x31,0x34,0x30,0x36, + 0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, + 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x6d,0x61,0x78, + 0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20, + 0x35,0x29,0x20,0x26,0x20,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38, + 0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36, + 0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33, + 0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20, + 0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33, + 0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, + 0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78, + 0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31, + 0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x37,0x20,0x3d, + 0x20,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x65,0x6d, + 0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x29,0x20,0x2a,0x20,0x35,0x2e,0x30,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x30,0x32,0x20,0x3d,0x20, + 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x66,0x6e,0x6f,0x72,0x6d,0x61, + 0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, + 0x20,0x5f,0x32,0x31,0x31,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a, + 0x65,0x28,0x63,0x61,0x6d,0x20,0x2d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x29, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x32,0x30,0x20, + 0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x31,0x35, + 0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x32,0x35,0x20,0x3d,0x20,0x6e, + 0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x31,0x31,0x20,0x2b,0x20, + 0x5f,0x32,0x32,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74, + 0x28,0x5f,0x32,0x32,0x35,0x2c,0x20,0x5f,0x32,0x31,0x31,0x29,0x2c,0x20,0x30,0x2e, + 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, + 0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28, + 0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33, + 0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20, + 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, + 0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x34,0x32,0x20,0x3d,0x20,0x66,0x72,0x65,0x73, 0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72,0x61,0x6d, 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, 0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f, - 0x31,0x39,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, - 0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x32,0x31,0x35,0x3b,0x0a,0x20,0x20, + 0x32,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x32,0x32,0x35,0x3b,0x0a,0x20,0x20, 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20, - 0x3d,0x20,0x5f,0x31,0x37,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x36,0x20,0x3d,0x20,0x5f,0x32,0x30,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x32,0x31, - 0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x5f,0x31,0x37,0x32,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x36,0x37,0x20,0x3d,0x20,0x6d,0x61, - 0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x39,0x32,0x2c,0x20,0x5f,0x32,0x31,0x30, - 0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x69,0x67, - 0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33, - 0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x32,0x33,0x32,0x29,0x20,0x2a,0x20, - 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x37,0x38,0x29,0x29,0x20,0x2a,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x76,0x65,0x63, - 0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39, - 0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28, - 0x28,0x5f,0x32,0x33,0x32,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72,0x69,0x62, - 0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, - 0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d, - 0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x76,0x65,0x63,0x33, - 0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74, - 0x28,0x5f,0x31,0x39,0x32,0x2c,0x20,0x5f,0x32,0x30,0x31,0x29,0x2c,0x20,0x30,0x2e, - 0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x36,0x37,0x29,0x20,0x2b,0x20,0x39,0x2e, - 0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36, - 0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65, - 0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x36,0x37,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x66, - 0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x20,0x3d,0x3d, - 0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x28,0x5f,0x31,0x39,0x32,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29, - 0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c, - 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x66,0x73,0x5f,0x70, - 0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x32,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e, - 0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x36,0x37,0x20,0x2a,0x20,0x30, - 0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37, - 0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x34,0x30, - 0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37, - 0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x29,0x20,0x2b,0x20,0x5f,0x31,0x38,0x37, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f, - 0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x20,0x3d, - 0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, - 0x76,0x65,0x63,0x34,0x28,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a, - 0x20,0x2a,0x20,0x28,0x28,0x5f,0x31,0x39,0x32,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29, - 0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x28,0x28,0x5f,0x32,0x36,0x37,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30, - 0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33, - 0x39,0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30, - 0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36, - 0x32,0x35,0x29,0x29,0x20,0x2b,0x20,0x5f,0x31,0x38,0x37,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73, - 0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20, + 0x5f,0x32,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f,0x32,0x31,0x31,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x20, + 0x3d,0x20,0x5f,0x32,0x32,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67, + 0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x5f,0x32,0x37,0x37,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28, + 0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32,0x32,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20, + 0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20, + 0x2d,0x20,0x5f,0x32,0x34,0x32,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d, + 0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x20,0x2a,0x20,0x63,0x6f, + 0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28, + 0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39,0x34,0x30, + 0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f, + 0x32,0x34,0x32,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74, + 0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34, + 0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74, + 0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70,0x61,0x72, + 0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x28, + 0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f, + 0x32,0x30,0x32,0x2c,0x20,0x5f,0x32,0x31,0x31,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29, + 0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x37,0x29,0x20,0x2b,0x20,0x39,0x2e,0x39,0x39, + 0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35, + 0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30, + 0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x37,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x66,0x73,0x5f, + 0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x31, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63, - 0x34,0x28,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x5f,0x31,0x38,0x37,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x76,0x74,0x72,0x69, - 0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20,0x3e,0x20,0x30,0x2e,0x35,0x29, - 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x34,0x20,0x5f,0x33,0x39,0x30,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x33,0x20,0x5f,0x33,0x39,0x34,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f, - 0x33,0x39,0x30,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x35,0x29,0x2c,0x20,0x76,0x65, - 0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d, - 0x20,0x5f,0x33,0x39,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20, - 0x5f,0x33,0x39,0x34,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f, - 0x33,0x39,0x34,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a, - 0x00, + 0x34,0x28,0x28,0x5f,0x32,0x30,0x32,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b, + 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, + 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69, + 0x66,0x20,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72, + 0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, + 0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79, + 0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x37,0x37,0x20,0x2a,0x20,0x30,0x2e,0x36, + 0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31, + 0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x34,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33, + 0x39,0x30,0x36,0x32,0x35,0x29,0x29,0x20,0x2b,0x20,0x5f,0x31,0x39,0x37,0x2c,0x20, + 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x66,0x73, + 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x20,0x3d,0x3d,0x20, + 0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65, + 0x63,0x34,0x28,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a, + 0x20,0x28,0x28,0x5f,0x32,0x30,0x32,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b, + 0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x28, + 0x28,0x5f,0x32,0x37,0x37,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30, + 0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30, + 0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30, + 0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35, + 0x29,0x29,0x20,0x2b,0x20,0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28, + 0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e, + 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x76,0x74,0x72,0x69,0x78,0x65, + 0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20,0x3e,0x20,0x30,0x2e,0x35,0x29,0x0a,0x20, + 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63, + 0x34,0x20,0x5f,0x33,0x39,0x38,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, + 0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63, + 0x33,0x20,0x5f,0x34,0x30,0x32,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x33,0x39, + 0x38,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c, + 0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33, + 0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f, + 0x34,0x30,0x32,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, + 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x34, + 0x30,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72, + 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x34,0x30, + 0x32,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, ]; /* #version 300 es @@ -574,7 +597,7 @@ vs_trixel_source_glsl300es := u8.[ highp float time; }; - uniform trixel_world_config _205; + uniform trixel_world_config _215; uniform ivec4 trixel_fs_params[1]; in highp vec4 color; @@ -617,55 +640,65 @@ vs_trixel_source_glsl300es := u8.[ void main() { int _150 = int(round(color.w * 255.0)); - highp float _172 = max(float((_150 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - highp float _178 = float((_150 >> 3) & 3) * 0.3333333432674407958984375; + highp float emittance = 0.0; + highp float roughness = 0.0500000007450580596923828125; + highp float metallic = 0.0; + if ((_150 & 1) != 0) + { + emittance = float((_150 >> 1) & 127) * 0.0078740157186985015869140625; + } + else + { + roughness = max(float((_150 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); + metallic = float((_150 >> 3) & 3) * 0.3333333432674407958984375; + } highp vec3 light = color.xyz * 0.300000011920928955078125; - highp vec3 _187 = (color.xyz * (float((_150 >> 1) & 3) * 0.3333333432674407958984375)) * 5.0; - highp vec3 _192 = normalize(fnormal.xyz); - highp vec3 _201 = normalize(cam - pos.xyz); - highp vec3 _210 = normalize(_205.sunPosition); - highp vec3 _215 = normalize(_201 + _210); - highp float param = max(dot(_215, _201), 0.0); - highp vec3 param_1 = mix(vec3(0.039999999105930328369140625), color.xyz, vec3(_178)); - highp vec3 _232 = fresnelSchlick(param, param_1); - highp vec3 param_2 = _192; - highp vec3 param_3 = _215; - highp float param_4 = _172; - highp vec3 param_5 = _192; - highp vec3 param_6 = _201; - highp vec3 param_7 = _210; - highp float param_8 = _172; - highp float _267 = max(dot(_192, _210), 0.0); - light += ((((((vec3(1.0) - _232) * (1.0 - _178)) * color.xyz) * vec3(0.3183410167694091796875)) + ((_232 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * max(dot(_192, _201), 0.0)) * _267) + 9.9999997473787516355514526367188e-05))) * _267); + highp vec3 _197 = (color.xyz * emittance) * 5.0; + highp vec3 _202 = normalize(fnormal.xyz); + highp vec3 _211 = normalize(cam - pos.xyz); + highp vec3 _220 = normalize(_215.sunPosition); + highp vec3 _225 = normalize(_211 + _220); + highp float param = max(dot(_225, _211), 0.0); + highp vec3 param_1 = mix(vec3(0.039999999105930328369140625), color.xyz, vec3(metallic)); + highp vec3 _242 = fresnelSchlick(param, param_1); + highp vec3 param_2 = _202; + highp vec3 param_3 = _225; + highp float param_4 = roughness; + highp vec3 param_5 = _202; + highp vec3 param_6 = _211; + highp vec3 param_7 = _220; + highp float param_8 = roughness; + highp float _277 = max(dot(_202, _220), 0.0); + light += ((((((vec3(1.0) - _242) * (1.0 - metallic)) * color.xyz) * vec3(0.3183410167694091796875)) + ((_242 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / vec3(((4.0 * max(dot(_202, _211), 0.0)) * _277) + 9.9999997473787516355514526367188e-05))) * _277); if (trixel_fs_params[0].x == 1) { - frag_color = vec4((_192 * 0.5) + vec3(0.5), 1.0); + frag_color = vec4((_202 * 0.5) + vec3(0.5), 1.0); } else { if (trixel_fs_params[0].x == 2) { - frag_color = vec4((color.xyz * ((_267 * 0.60000002384185791015625) + 0.4000000059604644775390625)) + _187, 1.0); + frag_color = vec4((color.xyz * ((_277 * 0.60000002384185791015625) + 0.4000000059604644775390625)) + _197, 1.0); } else { if (trixel_fs_params[0].x == 3) { - frag_color = vec4(((color.xyz * ((_192 * 0.5) + vec3(0.5))) * ((_267 * 0.4000000059604644775390625) + 0.60000002384185791015625)) + _187, 1.0); + frag_color = vec4(((color.xyz * ((_202 * 0.5) + vec3(0.5))) * ((_277 * 0.4000000059604644775390625) + 0.60000002384185791015625)) + _197, 1.0); } else { - frag_color = vec4(light + _187, 1.0); + frag_color = vec4(light + _197, 1.0); } } } if (vtrixel_state > 0.5) { - highp vec4 _390 = frag_color; - highp vec3 _394 = mix(_390.xyz, vec3(1.0, 1.0, 0.5), vec3(0.5)); - frag_color.x = _394.x; - frag_color.y = _394.y; - frag_color.z = _394.z; + highp vec4 _398 = frag_color; + highp vec3 _402 = mix(_398.xyz, vec3(1.0, 1.0, 0.5), vec3(0.5)); + frag_color.x = _402.x; + frag_color.y = _402.y; + frag_color.z = _402.z; } } @@ -703,7 +736,7 @@ fs_trixel_source_glsl300es := u8.[ 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69, 0x6d,0x65,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, 0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e, - 0x66,0x69,0x67,0x20,0x5f,0x32,0x30,0x35,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f, + 0x66,0x69,0x67,0x20,0x5f,0x32,0x31,0x35,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f, 0x72,0x6d,0x20,0x69,0x76,0x65,0x63,0x34,0x20,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f, 0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x31,0x5d,0x3b,0x0a,0x69,0x6e, 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x63,0x6f,0x6c,0x6f, @@ -784,146 +817,161 @@ fs_trixel_source_glsl300es := u8.[ 0x20,0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x35,0x30,0x20,0x3d,0x20,0x69,0x6e, 0x74,0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x77,0x20, 0x2a,0x20,0x32,0x35,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x32,0x20, - 0x3d,0x20,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35, - 0x30,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26,0x20,0x37,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34, - 0x37,0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30, - 0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35, - 0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, - 0x37,0x38,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30, - 0x20,0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e, - 0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37, - 0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20, - 0x3d,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e, - 0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39, - 0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x38,0x37,0x20,0x3d,0x20, - 0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x66,0x6c, - 0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x31,0x29,0x20, + 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x74,0x74, + 0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x6f,0x75,0x67, + 0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30, + 0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33, + 0x38,0x32,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, + 0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63, + 0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, + 0x28,0x5f,0x31,0x35,0x30,0x20,0x26,0x20,0x31,0x29,0x20,0x21,0x3d,0x20,0x30,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x31,0x29,0x20,0x26,0x20,0x31, + 0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x37,0x38,0x37,0x34,0x30,0x31, + 0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35,0x30,0x31,0x35,0x38,0x36,0x39,0x31,0x34, + 0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x6d, + 0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e, + 0x3e,0x20,0x35,0x29,0x20,0x26,0x20,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x31,0x34, + 0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33,0x35,0x34,0x37,0x39,0x37, + 0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30,0x2e,0x30,0x35,0x30,0x30, + 0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30,0x35,0x39,0x36,0x39, + 0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x20,0x3d,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x33,0x29,0x20, 0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33, 0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33, - 0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x32,0x20, - 0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x66,0x6e,0x6f,0x72, - 0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x30,0x31,0x20,0x3d,0x20, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x61,0x6d,0x20,0x2d,0x20, - 0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x31,0x30,0x20,0x3d,0x20, - 0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x30,0x35,0x2e,0x73, - 0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x31,0x35, - 0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x30, - 0x31,0x20,0x2b,0x20,0x5f,0x32,0x31,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x32,0x31,0x35,0x2c, - 0x20,0x5f,0x32,0x30,0x31,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76,0x65,0x63,0x33,0x28, - 0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33, - 0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20, - 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, - 0x5f,0x31,0x37,0x38,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x33,0x32,0x20,0x3d,0x20,0x66,0x72, - 0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70,0x61,0x72, - 0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x32,0x31,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x34,0x20,0x3d,0x20,0x5f,0x31,0x37,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x35,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x36,0x20,0x3d,0x20,0x5f,0x32,0x30,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, - 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37, - 0x20,0x3d,0x20,0x5f,0x32,0x31,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38, - 0x20,0x3d,0x20,0x5f,0x31,0x37,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, - 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x36,0x37,0x20,0x3d,0x20, - 0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x39,0x32,0x2c,0x20,0x5f,0x32, - 0x31,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c, + 0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x68,0x69, + 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d, + 0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x33, + 0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35, + 0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, + 0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x31,0x39,0x37,0x20,0x3d,0x20,0x28, + 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x65,0x6d,0x69,0x74, + 0x74,0x61,0x6e,0x63,0x65,0x29,0x20,0x2a,0x20,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x30, + 0x32,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x66,0x6e, + 0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x31,0x31,0x20, + 0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x63,0x61,0x6d,0x20, + 0x2d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x32,0x30,0x20, + 0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x31,0x35, + 0x2e,0x73,0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32, + 0x32,0x35,0x20,0x3d,0x20,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f, + 0x32,0x31,0x31,0x20,0x2b,0x20,0x5f,0x32,0x32,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72, + 0x61,0x6d,0x20,0x3d,0x20,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x32,0x32, + 0x35,0x2c,0x20,0x5f,0x32,0x31,0x31,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x76,0x65,0x63, + 0x33,0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35, + 0x39,0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29, + 0x2c,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63, + 0x33,0x28,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x32,0x34, + 0x32,0x20,0x3d,0x20,0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69, + 0x63,0x6b,0x28,0x70,0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, + 0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x32,0x30, + 0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, + 0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x32,0x32,0x35, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67, + 0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, + 0x20,0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20, + 0x5f,0x32,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, + 0x76,0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20,0x5f, + 0x32,0x31,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, + 0x65,0x63,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x32, + 0x32,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x72,0x6f, + 0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67, + 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x37,0x37,0x20,0x3d,0x20, + 0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32, + 0x32,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c, 0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x76,0x65, - 0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x32,0x33,0x32,0x29,0x20, - 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x37,0x38,0x29,0x29,0x20, - 0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x29,0x20,0x2a,0x20,0x76, - 0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37, - 0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b, - 0x20,0x28,0x28,0x5f,0x32,0x33,0x32,0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72, - 0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79, - 0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x76,0x65, - 0x63,0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x6d,0x61,0x78,0x28,0x64, - 0x6f,0x74,0x28,0x5f,0x31,0x39,0x32,0x2c,0x20,0x5f,0x32,0x30,0x31,0x29,0x2c,0x20, - 0x30,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x36,0x37,0x29,0x20,0x2b,0x20, - 0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35, - 0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38, - 0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x36,0x37,0x29, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x74,0x72,0x69,0x78,0x65,0x6c, - 0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x20, - 0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, - 0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x5f,0x31,0x39,0x32,0x20,0x2a,0x20,0x30,0x2e, - 0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x66,0x73, - 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78,0x20,0x3d,0x3d,0x20, - 0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, - 0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x63,0x6f,0x6c,0x6f, - 0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x36,0x37,0x20,0x2a, - 0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38, - 0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e, - 0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34, - 0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x29,0x20,0x2b,0x20,0x5f,0x31, - 0x38,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x63,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x32,0x34,0x32,0x29,0x20, + 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69, + 0x63,0x29,0x29,0x20,0x2a,0x20,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x29, + 0x20,0x2a,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x33,0x31,0x38,0x33,0x34,0x31, + 0x30,0x31,0x36,0x37,0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39,0x36,0x38,0x37,0x35, + 0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x32,0x34,0x32,0x20,0x2a,0x20,0x28,0x44, + 0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47,0x58,0x28,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x2c, + 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47,0x65,0x6f,0x6d, + 0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70,0x61,0x72,0x61, + 0x6d,0x5f,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29,0x29,0x29,0x20, + 0x2f,0x20,0x76,0x65,0x63,0x33,0x28,0x28,0x28,0x34,0x2e,0x30,0x20,0x2a,0x20,0x6d, + 0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32,0x31, + 0x31,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x37, + 0x29,0x20,0x2b,0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33, + 0x37,0x38,0x37,0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33, + 0x36,0x37,0x31,0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f, + 0x32,0x37,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x74,0x72, + 0x69,0x78,0x65,0x6c,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30, + 0x5d,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, + 0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x5f,0x32,0x30,0x32,0x20, + 0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, + 0x35,0x29,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x74,0x72,0x69,0x78,0x65, 0x6c,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x30,0x5d,0x2e,0x78, - 0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, - 0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x28,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78, - 0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x31,0x39,0x32,0x20,0x2a,0x20,0x30,0x2e, - 0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29, - 0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x36,0x37,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30, - 0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37, - 0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30,0x2e,0x36,0x30,0x30, - 0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31, - 0x35,0x36,0x32,0x35,0x29,0x29,0x20,0x2b,0x20,0x5f,0x31,0x38,0x37,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, - 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76, - 0x65,0x63,0x34,0x28,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x5f,0x31,0x38,0x37, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x76,0x74, - 0x72,0x69,0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20,0x3e,0x20,0x30,0x2e, - 0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x5f,0x33,0x39,0x30, - 0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, - 0x33,0x20,0x5f,0x33,0x39,0x34,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x33,0x39, - 0x30,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28,0x31,0x2e,0x30,0x2c, - 0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x35,0x29,0x2c,0x20,0x76,0x65,0x63,0x33, - 0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20,0x3d,0x20,0x5f, - 0x33,0x39,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, - 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x33, - 0x39,0x34,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x33,0x39, - 0x34,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, + 0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61, + 0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28, + 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32, + 0x37,0x37,0x20,0x2a,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33, + 0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20, + 0x2b,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30, + 0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x29,0x20, + 0x2b,0x20,0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x74, + 0x72,0x69,0x78,0x65,0x6c,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b, + 0x30,0x5d,0x2e,0x78,0x20,0x3d,0x3d,0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, + 0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x28,0x28,0x63,0x6f,0x6c, + 0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x30,0x32,0x20, + 0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x76,0x65,0x63,0x33,0x28,0x30,0x2e, + 0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x37,0x37,0x20,0x2a,0x20, + 0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36, + 0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x20,0x2b,0x20,0x30, + 0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37, + 0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x29,0x20,0x2b,0x20,0x5f,0x31,0x39, + 0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x20, + 0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, + 0x20,0x28,0x76,0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20, + 0x3e,0x20,0x30,0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20, + 0x5f,0x33,0x39,0x38,0x20,0x3d,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, + 0x72,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70, + 0x20,0x76,0x65,0x63,0x33,0x20,0x5f,0x34,0x30,0x32,0x20,0x3d,0x20,0x6d,0x69,0x78, + 0x28,0x5f,0x33,0x39,0x38,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x76,0x65,0x63,0x33,0x28, + 0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x35,0x29,0x2c,0x20, + 0x76,0x65,0x63,0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78, + 0x20,0x3d,0x20,0x5f,0x34,0x30,0x32,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x79,0x20, + 0x3d,0x20,0x5f,0x34,0x30,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d, + 0x20,0x5f,0x34,0x30,0x32,0x2e,0x7a,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d, + 0x0a,0x0a,0x00, ]; /* #include @@ -1106,59 +1154,69 @@ vs_trixel_source_metal_macos := u8.[ return GeometrySchlickGGX(param_2, param_3) * GeometrySchlickGGX(param, param_1); } - fragment main0_out main0(main0_in in [[stage_in]], constant trixel_world_config& _205 [[buffer(0)]], constant trixel_fs_params& _303 [[buffer(1)]]) + fragment main0_out main0(main0_in in [[stage_in]], constant trixel_world_config& _215 [[buffer(0)]], constant trixel_fs_params& _313 [[buffer(1)]]) { main0_out out = {}; int _150 = int(round(in.color.w * 255.0)); - float _172 = fast::max(float((_150 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); - float _178 = float((_150 >> 3) & 3) * 0.3333333432674407958984375; - float3 light = in.color.xyz * 0.300000011920928955078125; - float3 _187 = (in.color.xyz * (float((_150 >> 1) & 3) * 0.3333333432674407958984375)) * 5.0; - float3 _192 = fast::normalize(in.fnormal.xyz); - float3 _201 = fast::normalize(in.cam - in.pos.xyz); - float3 _210 = fast::normalize(float3(_205.sunPosition)); - float3 _215 = fast::normalize(_201 + _210); - float param = fast::max(dot(_215, _201), 0.0); - float3 param_1 = mix(float3(0.039999999105930328369140625), in.color.xyz, float3(_178)); - float3 _232 = fresnelSchlick(param, param_1); - float3 param_2 = _192; - float3 param_3 = _215; - float param_4 = _172; - float3 param_5 = _192; - float3 param_6 = _201; - float3 param_7 = _210; - float param_8 = _172; - float _267 = fast::max(dot(_192, _210), 0.0); - light += ((((((float3(1.0) - _232) * (1.0 - _178)) * in.color.xyz) * float3(0.3183410167694091796875)) + ((_232 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / float3(((4.0 * fast::max(dot(_192, _201), 0.0)) * _267) + 9.9999997473787516355514526367188e-05))) * _267); - if (_303.view_mode == 1) + float emittance = 0.0; + float roughness = 0.0500000007450580596923828125; + float metallic = 0.0; + if ((_150 & 1) != 0) { - out.frag_color = float4((_192 * 0.5) + float3(0.5), 1.0); + emittance = float((_150 >> 1) & 127) * 0.0078740157186985015869140625; } else { - if (_303.view_mode == 2) + roughness = fast::max(float((_150 >> 5) & 7) * 0.14285714924335479736328125, 0.0500000007450580596923828125); + metallic = float((_150 >> 3) & 3) * 0.3333333432674407958984375; + } + float3 light = in.color.xyz * 0.300000011920928955078125; + float3 _197 = (in.color.xyz * emittance) * 5.0; + float3 _202 = fast::normalize(in.fnormal.xyz); + float3 _211 = fast::normalize(in.cam - in.pos.xyz); + float3 _220 = fast::normalize(float3(_215.sunPosition)); + float3 _225 = fast::normalize(_211 + _220); + float param = fast::max(dot(_225, _211), 0.0); + float3 param_1 = mix(float3(0.039999999105930328369140625), in.color.xyz, float3(metallic)); + float3 _242 = fresnelSchlick(param, param_1); + float3 param_2 = _202; + float3 param_3 = _225; + float param_4 = roughness; + float3 param_5 = _202; + float3 param_6 = _211; + float3 param_7 = _220; + float param_8 = roughness; + float _277 = fast::max(dot(_202, _220), 0.0); + light += ((((((float3(1.0) - _242) * (1.0 - metallic)) * in.color.xyz) * float3(0.3183410167694091796875)) + ((_242 * (DistributionGGX(param_2, param_3, param_4) * GeometrySmith(param_5, param_6, param_7, param_8))) / float3(((4.0 * fast::max(dot(_202, _211), 0.0)) * _277) + 9.9999997473787516355514526367188e-05))) * _277); + if (_313.view_mode == 1) + { + out.frag_color = float4((_202 * 0.5) + float3(0.5), 1.0); + } + else + { + if (_313.view_mode == 2) { - out.frag_color = float4((in.color.xyz * ((_267 * 0.60000002384185791015625) + 0.4000000059604644775390625)) + _187, 1.0); + out.frag_color = float4((in.color.xyz * ((_277 * 0.60000002384185791015625) + 0.4000000059604644775390625)) + _197, 1.0); } else { - if (_303.view_mode == 3) + if (_313.view_mode == 3) { - out.frag_color = float4(((in.color.xyz * ((_192 * 0.5) + float3(0.5))) * ((_267 * 0.4000000059604644775390625) + 0.60000002384185791015625)) + _187, 1.0); + out.frag_color = float4(((in.color.xyz * ((_202 * 0.5) + float3(0.5))) * ((_277 * 0.4000000059604644775390625) + 0.60000002384185791015625)) + _197, 1.0); } else { - out.frag_color = float4(light + _187, 1.0); + out.frag_color = float4(light + _197, 1.0); } } } if (in.vtrixel_state > 0.5) { - float4 _390 = out.frag_color; - float3 _394 = mix(_390.xyz, float3(1.0, 1.0, 0.5), float3(0.5)); - out.frag_color.x = _394.x; - out.frag_color.y = _394.y; - out.frag_color.z = _394.z; + float4 _398 = out.frag_color; + float3 _402 = mix(_398.xyz, float3(1.0, 1.0, 0.5), float3(0.5)); + out.frag_color.x = _402.x; + out.frag_color.y = _402.y; + out.frag_color.z = _402.z; } return out; } @@ -1299,158 +1357,172 @@ fs_trixel_source_metal_macos := u8.[ 0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d, 0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x74,0x72,0x69,0x78, 0x65,0x6c,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26, - 0x20,0x5f,0x32,0x30,0x35,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30, + 0x20,0x5f,0x32,0x31,0x35,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30, 0x29,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x74,0x72, 0x69,0x78,0x65,0x6c,0x5f,0x66,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x26,0x20, - 0x5f,0x33,0x30,0x33,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x31,0x29, + 0x5f,0x33,0x31,0x33,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x31,0x29, 0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f, 0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20, 0x20,0x20,0x69,0x6e,0x74,0x20,0x5f,0x31,0x35,0x30,0x20,0x3d,0x20,0x69,0x6e,0x74, 0x28,0x72,0x6f,0x75,0x6e,0x64,0x28,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2e, 0x77,0x20,0x2a,0x20,0x32,0x35,0x35,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x32,0x20,0x3d,0x20,0x66,0x61, - 0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f, - 0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26,0x20,0x37,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33,0x33, - 0x35,0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20,0x30, - 0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38, - 0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x38,0x20,0x3d, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20, - 0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33,0x33,0x33,0x33, - 0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39,0x35,0x38,0x39, - 0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c, - 0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30, - 0x30,0x30,0x31,0x31,0x39,0x32,0x30,0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38, - 0x31,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, - 0x5f,0x31,0x38,0x37,0x20,0x3d,0x20,0x28,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72, - 0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f, - 0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x31,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x33,0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34, - 0x34,0x30,0x37,0x39,0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x20,0x2a, - 0x20,0x35,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x5f,0x31,0x39,0x32,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f, - 0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d, - 0x61,0x6c,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x33,0x20,0x5f,0x32,0x30,0x31,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a, - 0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x69,0x6e,0x2e,0x63,0x61, - 0x6d,0x20,0x2d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x31,0x30, - 0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69, - 0x7a,0x65,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x32,0x30,0x35,0x2e,0x73, - 0x75,0x6e,0x50,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x31,0x35,0x20,0x3d,0x20, - 0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28, - 0x5f,0x32,0x30,0x31,0x20,0x2b,0x20,0x5f,0x32,0x31,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20, - 0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x32, - 0x31,0x35,0x2c,0x20,0x5f,0x32,0x30,0x31,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61, - 0x6d,0x5f,0x31,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x28,0x30,0x2e,0x30,0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35,0x39, - 0x33,0x30,0x33,0x32,0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29,0x2c, - 0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x31,0x37,0x38,0x29,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x33,0x32,0x20,0x3d,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65, + 0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x30,0x2e, + 0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35,0x38,0x30, + 0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63, + 0x20,0x3d,0x20,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, + 0x28,0x5f,0x31,0x35,0x30,0x20,0x26,0x20,0x31,0x29,0x20,0x21,0x3d,0x20,0x30,0x29, + 0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x28,0x28,0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x31,0x29,0x20,0x26,0x20,0x31, + 0x32,0x37,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x37,0x38,0x37,0x34,0x30,0x31, + 0x35,0x37,0x31,0x38,0x36,0x39,0x38,0x35,0x30,0x31,0x35,0x38,0x36,0x39,0x31,0x34, + 0x30,0x36,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e,0x65,0x73,0x73,0x20,0x3d,0x20,0x66, + 0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28, + 0x5f,0x31,0x35,0x30,0x20,0x3e,0x3e,0x20,0x35,0x29,0x20,0x26,0x20,0x37,0x29,0x20, + 0x2a,0x20,0x30,0x2e,0x31,0x34,0x32,0x38,0x35,0x37,0x31,0x34,0x39,0x32,0x34,0x33, + 0x33,0x35,0x34,0x37,0x39,0x37,0x33,0x36,0x33,0x32,0x38,0x31,0x32,0x35,0x2c,0x20, + 0x30,0x2e,0x30,0x35,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x37,0x34,0x35,0x30,0x35, + 0x38,0x30,0x35,0x39,0x36,0x39,0x32,0x33,0x38,0x32,0x38,0x31,0x32,0x35,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69, + 0x63,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x28,0x5f,0x31,0x35,0x30,0x20, + 0x3e,0x3e,0x20,0x33,0x29,0x20,0x26,0x20,0x33,0x29,0x20,0x2a,0x20,0x30,0x2e,0x33, + 0x33,0x33,0x33,0x33,0x33,0x33,0x34,0x33,0x32,0x36,0x37,0x34,0x34,0x30,0x37,0x39, + 0x35,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x6c,0x69,0x67,0x68,0x74, + 0x20,0x3d,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20, + 0x2a,0x20,0x30,0x2e,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x31,0x39,0x32,0x30, + 0x39,0x32,0x38,0x39,0x35,0x35,0x30,0x37,0x38,0x31,0x32,0x35,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x31,0x39,0x37,0x20,0x3d,0x20, + 0x28,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20, + 0x65,0x6d,0x69,0x74,0x74,0x61,0x6e,0x63,0x65,0x29,0x20,0x2a,0x20,0x35,0x2e,0x30, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x30, + 0x32,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c, + 0x69,0x7a,0x65,0x28,0x69,0x6e,0x2e,0x66,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x2e,0x78, + 0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, + 0x5f,0x32,0x31,0x31,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72, + 0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x69,0x6e,0x2e,0x63,0x61,0x6d,0x20,0x2d,0x20, + 0x69,0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78,0x79,0x7a,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x32,0x30,0x20,0x3d,0x20,0x66, + 0x61,0x73,0x74,0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x66, + 0x6c,0x6f,0x61,0x74,0x33,0x28,0x5f,0x32,0x31,0x35,0x2e,0x73,0x75,0x6e,0x50,0x6f, + 0x73,0x69,0x74,0x69,0x6f,0x6e,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x32,0x35,0x20,0x3d,0x20,0x66,0x61,0x73,0x74, + 0x3a,0x3a,0x6e,0x6f,0x72,0x6d,0x61,0x6c,0x69,0x7a,0x65,0x28,0x5f,0x32,0x31,0x31, + 0x20,0x2b,0x20,0x5f,0x32,0x32,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x66,0x61,0x73,0x74, + 0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x32,0x32,0x35,0x2c,0x20, + 0x5f,0x32,0x31,0x31,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20, + 0x3d,0x20,0x6d,0x69,0x78,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x30, + 0x33,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x31,0x30,0x35,0x39,0x33,0x30,0x33,0x32, + 0x38,0x33,0x36,0x39,0x31,0x34,0x30,0x36,0x32,0x35,0x29,0x2c,0x20,0x69,0x6e,0x2e, + 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x33,0x28,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x32,0x34,0x32,0x20,0x3d,0x20, 0x66,0x72,0x65,0x73,0x6e,0x65,0x6c,0x53,0x63,0x68,0x6c,0x69,0x63,0x6b,0x28,0x70, 0x61,0x72,0x61,0x6d,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x32,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x5f,0x32,0x20,0x3d,0x20,0x5f,0x32,0x30,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, 0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20, - 0x5f,0x32,0x31,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x5f,0x31,0x37,0x32,0x3b,0x0a, + 0x5f,0x32,0x32,0x35,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e, + 0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x35,0x20,0x3d,0x20,0x5f,0x32,0x30,0x32,0x3b,0x0a, 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x35,0x20,0x3d,0x20,0x5f,0x31,0x39,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x20,0x3d,0x20, - 0x5f,0x32,0x30,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20,0x5f,0x32,0x31,0x30,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x5f,0x38,0x20,0x3d,0x20,0x5f,0x31,0x37,0x32,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x36,0x37,0x20,0x3d,0x20,0x66,0x61,0x73,0x74, - 0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f,0x74,0x28,0x5f,0x31,0x39,0x32,0x2c,0x20, - 0x5f,0x32,0x31,0x30,0x29,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28, - 0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x32, - 0x33,0x32,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x37, - 0x38,0x29,0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78, - 0x79,0x7a,0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x33, - 0x31,0x38,0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39,0x34,0x30,0x39,0x31,0x37, - 0x39,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x32,0x33,0x32, - 0x20,0x2a,0x20,0x28,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e, - 0x47,0x47,0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72, - 0x61,0x6d,0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a, - 0x20,0x47,0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c, - 0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, - 0x38,0x29,0x29,0x29,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x28,0x28, - 0x34,0x2e,0x30,0x20,0x2a,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28, - 0x64,0x6f,0x74,0x28,0x5f,0x31,0x39,0x32,0x2c,0x20,0x5f,0x32,0x30,0x31,0x29,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x36,0x37,0x29,0x20,0x2b, - 0x20,0x39,0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37, - 0x35,0x31,0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31, - 0x38,0x38,0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x36,0x37, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x30,0x33,0x2e, - 0x76,0x69,0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a, - 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75, - 0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x5f,0x31,0x39,0x32,0x20,0x2a,0x20,0x30,0x2e, - 0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x30,0x33,0x2e,0x76,0x69, - 0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x69,0x6e,0x2e, - 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32, - 0x36,0x37,0x20,0x2a,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33, - 0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20, - 0x2b,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30, - 0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x29,0x20, - 0x2b,0x20,0x5f,0x31,0x38,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f, - 0x33,0x30,0x33,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d, - 0x20,0x33,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x5f,0x36,0x20,0x3d,0x20,0x5f,0x32,0x31,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x33,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x37,0x20,0x3d,0x20, + 0x5f,0x32,0x32,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x20,0x3d,0x20,0x72,0x6f,0x75,0x67,0x68,0x6e, + 0x65,0x73,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, + 0x32,0x37,0x37,0x20,0x3d,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28, + 0x64,0x6f,0x74,0x28,0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32,0x32,0x30,0x29,0x2c, + 0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6c,0x69,0x67,0x68,0x74, + 0x20,0x2b,0x3d,0x20,0x28,0x28,0x28,0x28,0x28,0x28,0x66,0x6c,0x6f,0x61,0x74,0x33, + 0x28,0x31,0x2e,0x30,0x29,0x20,0x2d,0x20,0x5f,0x32,0x34,0x32,0x29,0x20,0x2a,0x20, + 0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x6d,0x65,0x74,0x61,0x6c,0x6c,0x69,0x63,0x29, + 0x29,0x20,0x2a,0x20,0x69,0x6e,0x2e,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a, + 0x29,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x33,0x31,0x38, + 0x33,0x34,0x31,0x30,0x31,0x36,0x37,0x36,0x39,0x34,0x30,0x39,0x31,0x37,0x39,0x36, + 0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x32,0x34,0x32,0x20,0x2a, + 0x20,0x28,0x44,0x69,0x73,0x74,0x72,0x69,0x62,0x75,0x74,0x69,0x6f,0x6e,0x47,0x47, + 0x58,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x33,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x34,0x29,0x20,0x2a,0x20,0x47, + 0x65,0x6f,0x6d,0x65,0x74,0x72,0x79,0x53,0x6d,0x69,0x74,0x68,0x28,0x70,0x61,0x72, + 0x61,0x6d,0x5f,0x35,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x36,0x2c,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x37,0x2c,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x38,0x29, + 0x29,0x29,0x20,0x2f,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x28,0x28,0x34,0x2e, + 0x30,0x20,0x2a,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x61,0x78,0x28,0x64,0x6f, + 0x74,0x28,0x5f,0x32,0x30,0x32,0x2c,0x20,0x5f,0x32,0x31,0x31,0x29,0x2c,0x20,0x30, + 0x2e,0x30,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x37,0x29,0x20,0x2b,0x20,0x39, + 0x2e,0x39,0x39,0x39,0x39,0x39,0x39,0x37,0x34,0x37,0x33,0x37,0x38,0x37,0x35,0x31, + 0x36,0x33,0x35,0x35,0x35,0x31,0x34,0x35,0x32,0x36,0x33,0x36,0x37,0x31,0x38,0x38, + 0x65,0x2d,0x30,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x5f,0x32,0x37,0x37,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x31,0x33,0x2e,0x76,0x69, + 0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e, + 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x34,0x28,0x28,0x5f,0x32,0x30,0x32,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29, + 0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x30,0x2e,0x35,0x29,0x2c,0x20, + 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x31,0x33,0x2e,0x76,0x69,0x65,0x77, + 0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x32,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, - 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x28,0x69,0x6e,0x2e,0x63, - 0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x31,0x39, - 0x32,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x36, - 0x37,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39, - 0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29, - 0x20,0x2b,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34, - 0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x29,0x20,0x2b, - 0x20,0x5f,0x31,0x38,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72, - 0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x34,0x28,0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x5f,0x31,0x38,0x37,0x2c,0x20, - 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x2e,0x76, - 0x74,0x72,0x69,0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20,0x3e,0x20,0x30, - 0x2e,0x35,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x33,0x39,0x30,0x20,0x3d,0x20, - 0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f, - 0x33,0x39,0x34,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x33,0x39,0x30,0x2e,0x78, - 0x79,0x7a,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x33,0x28,0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e, - 0x78,0x20,0x3d,0x20,0x5f,0x33,0x39,0x34,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, - 0x6f,0x72,0x2e,0x79,0x20,0x3d,0x20,0x5f,0x33,0x39,0x34,0x2e,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f, - 0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x33,0x39,0x34,0x2e,0x7a, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75, - 0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, + 0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x69,0x6e,0x2e,0x63,0x6f, + 0x6c,0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x37,0x37, + 0x20,0x2a,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34, + 0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2b,0x20, + 0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36, + 0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x29,0x20,0x2b,0x20, + 0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c, + 0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x33,0x31, + 0x33,0x2e,0x76,0x69,0x65,0x77,0x5f,0x6d,0x6f,0x64,0x65,0x20,0x3d,0x3d,0x20,0x33, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x28,0x28,0x69,0x6e,0x2e,0x63,0x6f,0x6c, + 0x6f,0x72,0x2e,0x78,0x79,0x7a,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x30,0x32,0x20, + 0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, + 0x30,0x2e,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x28,0x28,0x5f,0x32,0x37,0x37,0x20, + 0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30, + 0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x20,0x2b, + 0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38, + 0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x29,0x20,0x2b,0x20,0x5f, + 0x31,0x39,0x37,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67, + 0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28, + 0x6c,0x69,0x67,0x68,0x74,0x20,0x2b,0x20,0x5f,0x31,0x39,0x37,0x2c,0x20,0x31,0x2e, + 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, + 0x7d,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x69,0x6e,0x2e,0x76,0x74,0x72, + 0x69,0x78,0x65,0x6c,0x5f,0x73,0x74,0x61,0x74,0x65,0x20,0x3e,0x20,0x30,0x2e,0x35, + 0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x34,0x20,0x5f,0x33,0x39,0x38,0x20,0x3d,0x20,0x6f,0x75, + 0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x20,0x5f,0x34,0x30, + 0x32,0x20,0x3d,0x20,0x6d,0x69,0x78,0x28,0x5f,0x33,0x39,0x38,0x2e,0x78,0x79,0x7a, + 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e, + 0x30,0x2c,0x20,0x30,0x2e,0x35,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x33,0x28, + 0x30,0x2e,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f, + 0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x2e,0x78,0x20, + 0x3d,0x20,0x5f,0x34,0x30,0x32,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x2e,0x79,0x20,0x3d,0x20,0x5f,0x34,0x30,0x32,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f, + 0x6c,0x6f,0x72,0x2e,0x7a,0x20,0x3d,0x20,0x5f,0x34,0x30,0x32,0x2e,0x7a,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, ]; trixel_shader_desc :: (backend: sg_backend) -> sg_shader_desc { desc: sg_shader_desc; @@ -1480,49 +1552,49 @@ trixel_shader_desc :: (backend: sg_backend) -> sg_shader_desc { desc.uniform_blocks[1].size = 160; desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_205.skyBase"; + desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_215.skyBase"; desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_205.skyTop"; + desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_215.skyTop"; desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_205.sunDisk"; + desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_215.sunDisk"; desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_205.horizonHalo"; + desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_215.horizonHalo"; desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_205.sunHalo"; + desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_215.sunHalo"; desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_205.sunLightColor"; + desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_215.sunLightColor"; desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_205.sunPosition"; + desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_215.sunPosition"; desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_205.sunIntensity"; + desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_215.sunIntensity"; desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_205.skyIntensity"; + desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_215.skyIntensity"; desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_205.hasClouds"; + desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_215.hasClouds"; desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_205.planeHeight"; + desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_215.planeHeight"; desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_205.animatePlaneHeight"; + desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_215.animatePlaneHeight"; desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_205.waterColor"; + desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_215.waterColor"; desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_205.deepColor"; + desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_215.deepColor"; desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_205.time"; + desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_215.time"; desc.uniform_blocks[2].stage = .FRAGMENT; desc.uniform_blocks[2].layout = .STD140; desc.uniform_blocks[2].size = 16; @@ -1553,49 +1625,49 @@ trixel_shader_desc :: (backend: sg_backend) -> sg_shader_desc { desc.uniform_blocks[1].size = 160; desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_205.skyBase"; + desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_215.skyBase"; desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_205.skyTop"; + desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_215.skyTop"; desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_205.sunDisk"; + desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_215.sunDisk"; desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_205.horizonHalo"; + desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_215.horizonHalo"; desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_205.sunHalo"; + desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_215.sunHalo"; desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_205.sunLightColor"; + desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_215.sunLightColor"; desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_205.sunPosition"; + desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_215.sunPosition"; desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_205.sunIntensity"; + desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_215.sunIntensity"; desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_205.skyIntensity"; + desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_215.skyIntensity"; desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_205.hasClouds"; + desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_215.hasClouds"; desc.uniform_blocks[1].glsl_uniforms[10].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_205.planeHeight"; + desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_215.planeHeight"; desc.uniform_blocks[1].glsl_uniforms[11].type = .INT; desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_205.animatePlaneHeight"; + desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_215.animatePlaneHeight"; desc.uniform_blocks[1].glsl_uniforms[12].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_205.waterColor"; + desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_215.waterColor"; desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_205.deepColor"; + desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_215.deepColor"; desc.uniform_blocks[1].glsl_uniforms[14].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[14].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_205.time"; + desc.uniform_blocks[1].glsl_uniforms[14].glsl_name = "_215.time"; desc.uniform_blocks[2].stage = .FRAGMENT; desc.uniform_blocks[2].layout = .STD140; desc.uniform_blocks[2].size = 16; diff --git a/src/shaders/shader_trile.glsl b/src/shaders/shader_trile.glsl index 484cb23..f08dc26 100644 --- a/src/shaders/shader_trile.glsl +++ b/src/shaders/shader_trile.glsl @@ -490,10 +490,17 @@ void main() { vec3 albedo = trixel_material.xyz; int packedMaterial = int(round(trixel_material.w * 255.0)); - float emittance = float((packedMaterial >> 1) & 0x3) / 3.0; - int roughnessInt = (packedMaterial >> 5) & 0x7; - float roughness = max(float(roughnessInt) / 7.0, 0.05); - float metallic = float((packedMaterial >> 3) & 0x3) / 3.0; + float emittance = 0.0; + int roughnessInt = 0; + float roughness = 0.05; + float metallic = 0.0; + if ((packedMaterial & 0x1) != 0) { + emittance = float((packedMaterial >> 1) & 0x7F) / 127.0; + } else { + roughnessInt = (packedMaterial >> 5) & 0x7; + roughness = max(float(roughnessInt) / 7.0, 0.05); + metallic = float((packedMaterial >> 3) & 0x3) / 3.0; + } // Snap normal to nearest axis to avoid interpolation noise vec3 absN = abs(fnormal.xyz); diff --git a/src/shaders/shader_trixel.glsl b/src/shaders/shader_trixel.glsl index 0d280ab..7ed2ebb 100644 --- a/src/shaders/shader_trixel.glsl +++ b/src/shaders/shader_trixel.glsl @@ -100,10 +100,17 @@ void main() { // Get the material info. vec3 albedo = color.xyz; int packedMaterial = int(round(color.w*255.0)); - float emittance = float((packedMaterial >> 1) & 0x3) / 3.0; - int roughnessInt = (packedMaterial >> 5) & 0x7; - float roughness = max(float(roughnessInt) / 7.0, 0.05); - float metallic = float((packedMaterial >> 3) & 0x3) / 3.0; + float emittance = 0.0; + int roughnessInt = 0; + float roughness = 0.05; + float metallic = 0.0; + if ((packedMaterial & 0x1) != 0) { + emittance = float((packedMaterial >> 1) & 0x7F) / 127.0; + } else { + roughnessInt = (packedMaterial >> 5) & 0x7; + roughness = max(float(roughnessInt) / 7.0, 0.05); + metallic = float((packedMaterial >> 3) & 0x3) / 3.0; + } // Ambient light. vec3 light = 0.3 * albedo; diff --git a/src/trile.jai b/src/trile.jai index 88380d7..e26a210 100644 --- a/src/trile.jai +++ b/src/trile.jai @@ -136,10 +136,9 @@ ltriles :: () { } @Command Material :: struct { - addRoughness : u8 = 0; roughness : u8 = 4; metallic : u8 = 0; - emittance : u8 = 0; + emittance : u8 = 0; // 0 = not emissive; 1-127 = emissive (replaces roughness/metallic in encoding) color : Vector3 = .{1.0, 0.0, 1.0}; } @@ -174,12 +173,14 @@ TrixelSerialize :: [5]u8; TrileSerialize :: struct { name : string = "test"; - trixels : [16][16][16] TrixelSerialize; + version : int = 0; + trixels : [16][16][16] TrixelSerialize; }; trile_to_serialize_form :: (t: Trile) -> TrileSerialize { ts := TrileSerialize.{ - name = t.name, + name = t.name, + version = 1, }; for i: 0..15 { for j: 0..15 { @@ -193,16 +194,27 @@ trile_to_serialize_form :: (t: Trile) -> TrileSerialize { } trile_from_serialize_form :: (ts: TrileSerialize) -> Trile { - t := Trile.{ - name = sprint("%",ts.name) - }; + t := Trile.{ name = sprint("%", ts.name) }; for i: 0..15 { for j: 0..15 { for k: 0..15 { matinfo := ts.trixels[i][j][k]; - mat := material_from_rgba(matinfo[1], matinfo[2], matinfo[3], matinfo[4]); + mat : Material; + if ts.version == 0 { + // Old format: bit 0=addRoughness(unused), bits 1-2=emittance(0-3), bits 3-4=metallic, bits 5-7=roughness + packed := matinfo[4]; + old_emittance := (packed >> 1) & 0x3; + mat.metallic = (packed >> 3) & 0x3; + mat.roughness = (packed >> 5) & 0x7; + mat.emittance = old_emittance * 42; // scale 0-3 → 0,42,84,126 + mat.color.x = cast(float) matinfo[1] / 255.0; + mat.color.y = cast(float) matinfo[2] / 255.0; + mat.color.z = cast(float) matinfo[3] / 255.0; + } else { + mat = material_from_rgba(matinfo[1], matinfo[2], matinfo[3], matinfo[4]); + } t.trixels[i][j][k].material = mat; - t.trixels[i][j][k].empty = matinfo[0] == 0; + t.trixels[i][j][k].empty = matinfo[0] == 0; } } } @@ -210,8 +222,12 @@ trile_from_serialize_form :: (ts: TrileSerialize) -> Trile { } material_encode_to_char :: (mat: Material) -> u8 { - return (mat.addRoughness & 0x1) | ((mat.emittance & 0x3) << 1) | - ((mat.metallic & 0x3) << 3) | ((mat.roughness & 0x7) << 5); + if mat.emittance > 0 { + // Emissive mode: bit 0 = 1, bits 1-7 = emittance (0-127) + return 0x1 | ((mat.emittance & 0x7F) << 1); + } + // Material mode: bit 0 = 0, bits 3-4 = metallic, bits 5-7 = roughness + return ((mat.metallic & 0x3) << 3) | ((mat.roughness & 0x7) << 5); } material_encode_to_float :: (mat: Material) -> float { @@ -220,9 +236,12 @@ material_encode_to_float :: (mat: Material) -> float { material_decode_from_char :: (packedMaterial: u8) -> Material { mat : Material; - mat.emittance = (packedMaterial >> 1) & 3; - mat.roughness = (packedMaterial >> 5) & 7; - mat.metallic = (packedMaterial >> 3) & 3; + if packedMaterial & 0x1 { + mat.emittance = (packedMaterial >> 1) & 0x7F; + } else { + mat.roughness = (packedMaterial >> 5) & 7; + mat.metallic = (packedMaterial >> 3) & 3; + } return mat; }