#define TEast 0
#define TWest 1
#define TGuerrila 2
#define TCivilian 3
#define TSideUnknown 4
#define TEnemy 5
#define TFriendly 6
#define TLogic 7
#define true 1
#define false 0
#define private 0
#define protected 1
#define public 2
class DefaultEventhandlers;
class CfgPatches
{
class Ares_Dingo
{
units[] = {};
weapons[] = {};
requiredVersion = 1.50;
requiredAddons[] = {"A3_Soft_F"};
};
};
class WeaponFireGun;
class WeaponCloudsGun;
class WeaponFireMGun;
class WeaponCloudsMGun;
class RCWSOptics;
class CfgVehicles
{
class LandVehicle; // External class reference
class Car : LandVehicle
{
class NewTurret; // External class reference
};
class Car_F : Car
{
class AnimationSources; // External class reference
class Turrets
{
class MainTurret : NewTurret {};
};
class HitPoints
{
class HitLFWheel; // External class reference
class HitLF2Wheel; // External class reference
class HitRFWheel; // External class reference
class HitRF2Wheel; // External class reference
class HitGlass1; // External class reference
class HitGlass2; // External class reference
class HitGlass3; // External class reference
class HitGlass4; // External class reference
class HitGlass5; // External class reference
};
};
class Dingo_Base: Car_F
{
mapSize = 5;
author = "Ares Military and BIS";
displayName = "Dingo2A2";
nameSound = "veh_car";
scope = private;
side = TWest;
faction = BLU_F;
class Library
{
libTextDesc = "$STR_A3_CfgVehicles_MRAP_01_Base_Library0";
};
model = "\Dingo\Dingo2A2.p3d";
Picture = "\Dingo\data\UI\pictures\Dingo_Picture.paa";
Icon = "\Dingo\data\UI\icons\Dingo_Icon.paa"; transportMaxBackpacks = 6;
vehicleClass = "Car";
transportSoldier = 5;
crewVulnerable = false;
crewCrashProtection = 0.15;
armor = 40;
cost = 100000;
threat[] = {0.8, 0.6, 0.3};
class Damage
{
tex[] = {};
mat[] = {};
};
HiddenSelections[] = {camo1,camo2,camo3};
HiddenSelectionsTextures[] = {"\Dingo\data\TestTexture_co.paa", "\Dingo\data\TestTexture_co.paa", "\Dingo\data\TestTexture_co.paa"};
class AnimationSources: AnimationSources
{
class HitGlass1;
class HitGlass5 : HitGlass1
{
hitpoint="HitGlass5";
};
};
class HitPoints: HitPoints
{
class HitEngine
{
armor=0.5;
material=-1;
name="engine";
visual="";
passThrough=1;
};
class HitGlass1 : HitGlass1
{
armor=1;
};
class HitGlass2 : HitGlass2
{
armor=1;
};
class HitGlass3 : HitGlass3
{
armor=1;
};
class HitGlass4 : HitGlass4
{
armor=1;
};
class HitGlass5 : HitGlass4
{
name="glass5";
visual="glass5";
};
class HitLFWheel : HitLFWheel
{
armor = 0.12;
explosionShielding = 0.8;
};
class HitLF2Wheel : HitLF2Wheel
{
armor = 0.12;
explosionShielding = 0.8;
};
class HitRFWheel : HitRFWheel
{
armor = 0.12;
explosionShielding = 0.8;
};
class HitRF2Wheel : HitRF2Wheel
{
armor = 0.12;
explosionShielding = 0.8;
};
class HitFuel
{
armor=0.14;
material=-1;
name="fueltank";
visual="";
passThrough=1;
};
};
wheelDamageThreshold = 0.7;
wheelDestroyThreshold = 0.99;
wheelDamageRadiusCoef = 0.95;
wheelDestroyRadiusCoef = 0.45;
crew = "B_Soldier_F";
typicalCargo[] = {"B_Soldier_F","B_Soldier_F","B_Soldier_F", "B_Soldier_F", "B_Soldier_F"};
driverAction = "driver_MRAP_01";
cargoAction[] = {"passenger_MRAP_01_front", "passenger_MRAP_01_back", "passenger_generic01_foldhands", "passenger_generic01_foldhands"};
cargoIsCoDriver[] = {true,false,false,false,false};
getInAction = "GetInMRAP_01";
getOutAction = "GetOutMRAP_01";
cargoGetInAction[] = {"GetInMRAP_01_cargo"};
cargoGetOutAction[] = {"GetOutMRAP_01"};
castDriverShadow = false;
commanderCanSee = 31;
hideWeaponsDriver = true;
hideWeaponsCargo = true;
driverDoor = "";
cargoDoors[] = {};
terrainCoef = 2.0;
turnCoef = 4;
steerAheadSimul = 0.4;
steerAheadPlan = 0.2;
predictTurnPlan = 0.9;
predictTurnSimul = 0.5;
precision = 15;
smokeLauncherGrenadeCount = 8;
smokeLauncherVelocity = 14;
smokeLauncherOnTurret = 0;
smokeLauncherAngle = 360;
weapons[] = {"TruckHorn2"};
magazines[] = {};
attenuationEffectType = "CarAttenuation";
soundGetIn[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\getin", 0.562341, 1};
soundGetOut[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\getout", 0.562341, 1, 40};
soundDammage[] = {"", 0.562341, 1};
soundEngineOnInt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_start", 0.354813, 1.0};
soundEngineOnExt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_start", 1.0, 1.0, 200};
soundEngineOffInt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_stop", 0.354813, 1.0};
soundEngineOffExt[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_stop", 1.0, 1.0, 200};
buildCrash0[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_01", 1.77828, 1, 200};
buildCrash1[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_02", 1.77828, 1, 200};
buildCrash2[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_03", 1.77828, 1, 200};
buildCrash3[] = {"A3\sounds_f\Vehicles\soft\noises\crash_building_04", 1.77828, 1, 200};
soundBuildingCrash[] = {"buildCrash0", 0.25, "buildCrash1", 0.25, "buildCrash2", 0.25, "buildCrash3", 0.25};
WoodCrash0[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_01", 1.77828, 1, 200};
WoodCrash1[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_02", 1.77828, 1, 200};
WoodCrash2[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_03", 1.77828, 1, 200};
WoodCrash3[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_04", 1.77828, 1, 200};
WoodCrash4[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_05", 1.77828, 1, 200};
WoodCrash5[] = {"A3\sounds_f\Vehicles\soft\noises\crash_mix_wood_06", 1.77828, 1, 200};
soundWoodCrash[] = {"woodCrash0", 0.166, "woodCrash1", 0.166, "woodCrash2", 0.166, "woodCrash3", 0.166, "woodCrash4", 0.166, "woodCrash5", 0.166};
ArmorCrash0[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_01", 1.77828, 1, 200};
ArmorCrash1[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_02", 1.77828, 1, 200};
ArmorCrash2[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_03", 1.77828, 1, 200};
ArmorCrash3[] = {"A3\sounds_f\Vehicles\soft\noises\crash_vehicle_04", 1.77828, 1, 200};
soundArmorCrash[] = {"ArmorCrash0", 0.25, "ArmorCrash1", 0.25, "ArmorCrash2", 0.25, "ArmorCrash3", 0.25};
class Sounds {
class Idle_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_idle", 0.398107, 1, 150};
frequency = "0.95 + ((rpm/ 4500) factor[(800/ 4500),(1400/ 4500)])*0.15";
volume = "engineOn*camPos*(((rpm/ 4500) factor[(600/ 4500),(1100/ 4500)]) * ((rpm/ 4500) factor[(1800/ 4500),(1300/ 4500)]))";
};
class Engine {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_low1", db-7, 1, 250};
frequency = "0.9 + ((rpm/ 4500) factor[(1400/ 4500),(2100/ 4500)])*0.2";
volume = "engineOn*camPos*(((rpm/ 4500) factor[(1400/ 4500),(1800/ 4500)]) * ((rpm/ 4500) factor[(2300/ 4500),(2000/ 4500)]))";
};
class Engine1_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_low2", 0.562341, 1, 300};
frequency = "0.9 + ((rpm/ 4500) factor[(2100/ 4500),(2800/ 4500)])*0.2";
volume = "engineOn*camPos*(((rpm/ 4500) factor[(1900/ 4500),(2300/ 4500)]) * ((rpm/ 4500) factor[(3000/ 4500),(2500/ 4500)]))";
};
class Engine2_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_mid", db-3, 1, 350};
frequency = "0.9 + ((rpm/ 4500) factor[(2800/ 4500),(3600/ 4500)])*0.2";
volume = "engineOn*camPos*(((rpm/ 4500) factor[(2500/ 4500),(3100/ 4500)]) * ((rpm/ 4500) factor[(4500/ 4500),(3700/ 4500)]))";
};
class Engine3_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_high", db0, 1, 400};
frequency = "0.95 + ((rpm/ 4500) factor[(3600/ 4500),(4500/ 4500)])*0.1";
volume = "engineOn*camPos*((rpm/ 4500) factor[(3800/ 4500),(4500/ 4500)])";
};
class IdleThrust {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_exhaust_idle", 0.562341, 1, 200};
frequency = "0.95 + ((rpm/ 4500) factor[(800/ 4500),(1400/ 4500)])*0.15";
volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(600/ 4500),(1100/ 4500)]) * ((rpm/ 4500) factor[(1800/ 4500),(1300/ 4500)]))";
};
class EngineThrust {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_exhaust_low1", db-3, 1, 350};
frequency = "0.9 + ((rpm/ 4500) factor[(1400/ 4500),(2100/ 4500)])*0.2";
volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(1400/ 4500),(1800/ 4500)]) * ((rpm/ 4500) factor[(2300/ 4500),(2000/ 4500)]))";
};
class Engine1_Thrust_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_exhaust_low2", db-1, 1, 400};
frequency = "0.9 + ((rpm/ 4500) factor[(2100/ 4500),(2800/ 4500)])*0.2";
volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(1900/ 4500),(2300/ 4500)]) * ((rpm/ 4500) factor[(3000/ 4500),(2500/ 4500)]))";
};
class Engine2_Thrust_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_exhaust_mid", db1, 1, 425};
frequency = "0.9 + ((rpm/ 4500) factor[(2800/ 4500),(3600/ 4500)])*0.2";
volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(2500/ 4500),(3100/ 4500)]) * ((rpm/ 4500) factor[(4500/ 4500),(3700/ 4500)]))";
};
class Engine3_Thrust_ext {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_ext_exhaust_high", db2, 1, 450};
frequency = "0.95 + ((rpm/ 4500) factor[(3600/ 4500),(4500/ 4500)])*0.1";
volume = "engineOn*camPos*(0.4+(0.6*(thrust factor[0.1,1])))*((rpm/ 4500) factor[(3800/ 4500),(4500/ 4500)])";
};
class Idle_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_idle", db-12, 1};
frequency = "0.95 + ((rpm/ 4500) factor[(800/ 4500),(1400/ 4500)])*0.15";
volume = "engineOn*(1-camPos)*(((rpm/ 4500) factor[(600/ 4500),(1100/ 4500)]) * ((rpm/ 4500) factor[(1800/ 4500),(1300/ 4500)]))";
};
class Engine_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_low1", db-10, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(1400/ 4500),(2100/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(((rpm/ 4500) factor[(1400/ 4500),(1800/ 4500)]) * ((rpm/ 4500) factor[(2300/ 4500),(2000/ 4500)]))";
};
class Engine1_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_low2", 0.398107, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(2100/ 4500),(2800/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(((rpm/ 4500) factor[(1900/ 4500),(2300/ 4500)]) * ((rpm/ 4500) factor[(3000/ 4500),(2500/ 4500)]))";
};
class Engine2_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_mid", db-6, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(2800/ 4500),(3600/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(((rpm/ 4500) factor[(2500/ 4500),(3100/ 4500)]) * ((rpm/ 4500) factor[(4500/ 4500),(3700/ 4500)]))";
};
class Engine3_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_high", 0.630957, 1};
frequency = "0.95 + ((rpm/ 4500) factor[(3600/ 4500),(4500/ 4500)])*0.1";
volume = "engineOn*(1-camPos)*((rpm/ 4500) factor[(3800/ 4500),(4500/ 4500)])";
};
class IdleThrust_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_exhaust_idle", db-9, 1};
frequency = "0.95 + ((rpm/ 4500) factor[(800/ 4500),(1400/ 4500)])*0.15";
volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(600/ 4500),(1100/ 4500)]) * ((rpm/ 4500) factor[(1800/ 4500),(1300/ 4500)]))";
};
class EngineThrust_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_exhaust_low1", db-7, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(1400/ 4500),(2100/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(1400/ 4500),(1800/ 4500)]) * ((rpm/ 4500) factor[(2300/ 4500),(2000/ 4500)]))";
};
class Engine1_Thrust_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_exhaust_low2", 0.562341, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(2100/ 4500),(2800/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(1900/ 4500),(2300/ 4500)]) * ((rpm/ 4500) factor[(3000/ 4500),(2500/ 4500)]))";
};
class Engine2_Thrust_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_exhaust_mid", db-3, 1};
frequency = "0.9 + ((rpm/ 4500) factor[(2800/ 4500),(3600/ 4500)])*0.2";
volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*(((rpm/ 4500) factor[(2500/ 4500),(3100/ 4500)]) * ((rpm/ 4500) factor[(4500/ 4500),(3700/ 4500)]))";
};
class Engine3_Thrust_int {
sound[] = {"A3\Sounds_F\vehicles\soft\MRAP_01\MRAP_01_int_exhaust_high", db-2, 1};
frequency = "0.95 + ((rpm/ 4500) factor[(3600/ 4500),(4500/ 4500)])*0.1";
volume = "engineOn*(1-camPos)*(0.4+(0.6*(thrust factor[0.1,1])))*((rpm/ 4500) factor[(3800/ 4500),(4500/ 4500)])";
};
class Movement {
sound = "soundEnviron";
frequency = "1";
volume = "0";
};
class TiresRockOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_dirt_soft_1", db3, 1.0, 60};
frequency = "1";
volume = "camPos*rock*(speed factor[2, 20])";
};
class TiresSandOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext-tires-sand1", db3, 1.0, 60};
frequency = "1";
volume = "camPos*sand*(speed factor[2, 20])";
};
class TiresGrassOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_dirt_soft_2", db2, 1.0, 60};
frequency = "1";
volume = "camPos*grass*(speed factor[2, 20])";
};
class TiresMudOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext-tires-mud2", db1, 1.0, 60};
frequency = "1";
volume = "camPos*mud*(speed factor[2, 20])";
};
class TiresGravelOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_gravel_1", db2, 1.0, 60};
frequency = "1";
volume = "camPos*gravel*(speed factor[2, 20])";
};
class TiresAsphaltOut {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\ext_tires_asfalt_2", db1, 1.0, 60};
frequency = "1";
volume = "camPos*asphalt*(speed factor[2, 20])";
};
class NoiseOut {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\noise_ext_car_3", db1, 1.0, 90};
frequency = "1";
volume = "camPos*(damper0 max 0.02)*(speed factor[0, 8])";
};
class TiresRockIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_dirt_soft_1", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*rock*(speed factor[2, 20])";
};
class TiresSandIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int-tires-sand2", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*sand*(speed factor[2, 20])";
};
class TiresGrassIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_dirt_soft_2", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*grass*(speed factor[2, 20])";
};
class TiresMudIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int-tires-mud2", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*mud*(speed factor[2, 20])";
};
class TiresGravelIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_gravel_1", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*gravel*(speed factor[2, 20])";
};
class TiresAsphaltIn {
sound[] = {"A3\Sounds_F\vehicles\soft\tires\int_tires_asfalt_2", db-3, 1.0};
frequency = "1";
volume = "(1-camPos)*asphalt*(speed factor[2, 20])";
};
class NoiseIn {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\noise_int_car_3", 0.562341, 1.0};
frequency = "1";
volume = "(damper0 max 0.1)*(speed factor[0, 8])*(1-camPos)";
};
class breaking_ext_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04", db-3, 1, 80};
frequency = 1;
volume = "engineOn*camPos*asphalt*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 10])";
};
class acceleration_ext_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02", db-3, 1, 80};
frequency = 1;
volume = "engineOn*camPos*asphalt*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
};
class turn_left_ext_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02", db-3, 1, 80};
frequency = 1;
volume = "engineOn*camPos*asphalt*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
};
class turn_right_ext_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02", db-3, 1, 80};
frequency = 1;
volume = "engineOn*camPos*asphalt*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
};
class breaking_ext_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_14_dirt_breaking", db-3, 1, 60};
frequency = 1;
volume = "engineOn*camPos*(1-asphalt)*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 10])";
};
class acceleration_ext_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\acceleration_dirt_ext_1", db-3, 1, 60};
frequency = 1;
volume = "engineOn*camPos*(1-asphalt)*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
};
class turn_left_ext_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_18_dirt", db-3, 1, 60};
frequency = 1;
volume = "engineOn*camPos*(1-asphalt)*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
};
class turn_right_ext_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_18_dirt", db-3, 1, 60};
frequency = 1;
volume = "engineOn*camPos*(1-asphalt)*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
};
class breaking_int_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_04_int", db-10, 1};
frequency = 1;
volume = "engineOn*asphalt*(1-camPos)*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 6])";
};
class acceleration_int_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int", db-10, 1};
frequency = 1;
volume = "engineOn*asphalt*(1-camPos)*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
};
class turn_left_int_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int", db-10, 1};
frequency = 1;
volume = "engineOn*asphalt*(1-camPos)*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
};
class turn_right_int_road {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_loop_02_int", db-10, 1};
frequency = 1;
volume = "engineOn*asphalt*(1-camPos)*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
};
class breaking_int_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_14_dirt_breaking_int", db-10, 1};
frequency = 1;
volume = "engineOn*(1-asphalt)*(1-camPos)*(LongSlipDrive Factor[-0.15, -0.3])*(Speed Factor[2, 6])";
};
class acceleration_int_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\acceleration_dirt_int_1", db-10, 1};
frequency = 1;
volume = "engineOn*(1-asphalt)*(1-camPos)*(LongSlipDrive Factor[0.15, 0.3])*(Speed Factor[10, 0])";
};
class turn_left_int_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_18_dirt_int", db-10, 1};
frequency = 1;
volume = "engineOn*(1-asphalt)*(1-camPos)*(latSlipDrive Factor[0.15, 0.3])*(Speed Factor[0, 10])";
};
class turn_right_int_dirt {
sound[] = {"A3\Sounds_F\vehicles\soft\noises\slipping_tires_18_dirt_int", db-10, 1};
frequency = 1;
volume = "engineOn*(1-asphalt)*(1-camPos)*(latSlipDrive Factor[-0.15, -0.3])*(Speed Factor[0, 10])";
};
};
thrustDelay = 0.1;
brakeIdleSpeed = 1.78;
maxSpeed = 115;
fuelCapacity = 94;
wheelCircumference = 3.5168;
antiRollbarForceCoef = 12;
antiRollbarForceLimit = 10;
antiRollbarSpeedMin = 20;
antiRollbarSpeedMax = 50;
idleRpm = 800;
redRpm = 4500;
class complexGearbox
{
GearboxRatios[] = {"R1", -3.182, "N", 0, "D1", 4.182, "D2", 2.318, "D3", 1.85, "D4", 1.65, "D5", 1.45};
TransmissionRatios[] = {"High", 5.539};
gearBoxMode = "auto";
moveOffGear = 1;
driveString = "D";
neutralString = "N";
reverseString = "R";
};
simulation = "carx";
dampersBumpCoef = 6.0;
differentialType = "all_limited";
frontRearSplit = 0.5;
frontBias = 1.3;
rearBias = 1.3;
centreBias = 1.3;
clutchStrength = 20.0;
enginePower = 276;
maxOmega = 471;
peakTorque = 1253;
dampingRateFullThrottle = 0.08;
dampingRateZeroThrottleClutchEngaged = 2.0;
dampingRateZeroThrottleClutchDisengaged = 0.35;
torqueCurve[] = {{0.0, 0.0}, {0.178, 0.5}, {0.25, 0.85}, {0.4, 0.9}, {0.5, 1.0}, {0.725, 0.95}, {0.85, 0.6}, {1.0, 0.3}};
changeGearMinEffectivity[] = {0.95, 0.15, 0.95, 0.95, 0.95, 0.95, 0.95};
switchTime = 0.31;
latency = 1.0;
class Wheels
{
class LF
{
boneName = "wheel_1_1";
steering = 1;
side = "left";
center = "Wheel_1_1_Axis";
boundary = "Wheel_1_1_bound";
width = 0.2;
mass = 150;
MOI = 40;
dampingRate = 0.1;
dampingRateDamaged = 1.0;
dampingRateDestroyed = 1000.0;
maxBrakeTorque = 22500;
maxHandBrakeTorque = 0;
suspTravelDirection[] = {0, -1, 0};
suspForceAppPointOffset = "Wheel_1_1_Axis";
tireForceAppPointOffset = "Wheel_1_1_Axis";
maxCompression = 0.15;
mMaxDroop = 0.15;
sprungMass = 2066;
springStrength = 201234;
springDamperRate = 20600.6;
longitudinalStiffnessPerUnitGravity = 5000;
latStiffX = 25;
latStiffY = 180;
frictionVsSlipGraph[] = {{0, 1}, {0.5, 1}, {1, 1}};
};
class LR : LF
{
boneName = "wheel_1_2";
steering = 0;
center = "Wheel_1_2_Axis";
boundary = "Wheel_1_2_bound";
suspForceAppPointOffset = "Wheel_1_2_Axis";
tireForceAppPointOffset = "Wheel_1_2_Axis";
maxHandBrakeTorque = 275000;
};
class RF : LF
{
boneName = "Wheel_2_1";
center = "Wheel_2_1_Axis";
boundary = "Wheel_2_1_bound";
suspForceAppPointOffset = "Wheel_2_1_Axis";
tireForceAppPointOffset = "Wheel_2_1_Axis";
steering = 1;
side = "right";
};
class RR : RF
{
boneName = "wheel_2_2";
steering = 0;
center = "Wheel_2_2_Axis";
boundary = "Wheel_2_2_bound";
suspForceAppPointOffset = "Wheel_2_2_Axis";
tireForceAppPointOffset = "Wheel_2_2_Axis";
maxHandBrakeTorque = 275000;
};
};
supplyRadius = 5;
transportMaxMagazines = 90;
class TransportMagazines
{
class _xx_30Rnd_65x39_caseless_mag
{
magazine = "30Rnd_65x39_caseless_mag";
count = 16;
};
class _xx_100Rnd_65x39_caseless_mag
{
magazine = "100Rnd_65x39_caseless_mag";
count = 8;
};
class _xx_HandGrenade
{
magazine = "HandGrenade";
count = 10;
};
class _xx_1Rnd_HE_Grenade_shell
{
magazine = "1Rnd_HE_Grenade_shell";
count = 10;
};
class _xx_1Rnd_Smoke_Grenade_shell
{
magazine = "1Rnd_Smoke_Grenade_shell";
count = 4;
};
class _xx_1Rnd_SmokeGreen_Grenade_shell
{
magazine = "1Rnd_SmokeGreen_Grenade_shell";
count = 4;
};
class _xx_1Rnd_SmokeOrange_Grenade_shell
{
magazine = "1Rnd_SmokeOrange_Grenade_shell";
count = 4;
};
class _xx_1Rnd_SmokeBlue_Grenade_shell
{
magazine = "1Rnd_SmokeBlue_Grenade_shell";
count = 4;
};
class _xx_16Rnd_9x21_Mag
{
magazine = "16Rnd_9x21_Mag";
count = 12;
};
class _xx_SmokeShell
{
magazine = "SmokeShell";
count = 4;
};
class _xx_SmokeShellGreen
{
magazine = "SmokeShellGreen";
count = 4;
};
class _xx_SmokeShellOrange
{
magazine = "SmokeShellOrange";
count = 4;
};
class _xx_SmokeShellBlue
{
magazine = "SmokeShellBlue";
count = 4;
};
class _xx_NLAW_F
{
magazine = NLAW_F;
count = 2;
};
};
class TransportItems
{
class _xx_FirstAidKit
{
name = "FirstAidKit";
count = 10;
};
};
class TransportWeapons
{
class _xx_arifle_MX_F
{
weapon = "arifle_MX_F";
count = 2;
};
};
enableGPS = true;
soundServo[] = {"A3\Sounds_F\vehicles\armor\noises\servo_best", db-40, 1.0,10};
radarType = 4;
};
class Dingo_F : Dingo_Base
{
scope = public;
class Turrets {};
};
};
I2RlZmluZSBURWFzdCAwCiNkZWZpbmUgVFdlc3QgMQojZGVmaW5lIFRHdWVycmlsYSAyCiNkZWZpbmUgVENpdmlsaWFuIDMKI2RlZmluZSBUU2lkZVVua25vd24gNAojZGVmaW5lIFRFbmVteSA1CiNkZWZpbmUgVEZyaWVuZGx5IDYKI2RlZmluZSBUTG9naWMgNwojZGVmaW5lIHRydWUgMQojZGVmaW5lIGZhbHNlIDAKI2RlZmluZSBwcml2YXRlIDAKI2RlZmluZSBwcm90ZWN0ZWQgMQojZGVmaW5lIHB1YmxpYyAyCgpjbGFzcyBEZWZhdWx0RXZlbnRoYW5kbGVyczsKCmNsYXNzIENmZ1BhdGNoZXMKewoJY2xhc3MgQXJlc19EaW5nbwoJewoJCXVuaXRzW10gPSB7fTsKCQl3ZWFwb25zW10gPSB7fTsKCQlyZXF1aXJlZFZlcnNpb24gPSAxLjUwOwoKCQlyZXF1aXJlZEFkZG9uc1tdID0geyJBM19Tb2Z0X0YifTsKCX07Cn07CgpjbGFzcyBXZWFwb25GaXJlR3VuOwpjbGFzcyBXZWFwb25DbG91ZHNHdW47CmNsYXNzIFdlYXBvbkZpcmVNR3VuOwpjbGFzcyBXZWFwb25DbG91ZHNNR3VuOwpjbGFzcyBSQ1dTT3B0aWNzOwoKY2xhc3MgQ2ZnVmVoaWNsZXMKewoJY2xhc3MgTGFuZFZlaGljbGU7CS8vIEV4dGVybmFsIGNsYXNzIHJlZmVyZW5jZQoJCgljbGFzcyBDYXIgOiBMYW5kVmVoaWNsZQoJewoJCWNsYXNzIE5ld1R1cnJldDsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgl9OwoJCgljbGFzcyBDYXJfRiA6IENhcgoJewoJCWNsYXNzIEFuaW1hdGlvblNvdXJjZXM7CS8vIEV4dGVybmFsIGNsYXNzIHJlZmVyZW5jZQoJCQoJCWNsYXNzIFR1cnJldHMKCQl7CgkJCWNsYXNzIE1haW5UdXJyZXQgOiBOZXdUdXJyZXQge307CgkJfTsKCQkKCQljbGFzcyBIaXRQb2ludHMKCQl7CgkJCWNsYXNzIEhpdExGV2hlZWw7CS8vIEV4dGVybmFsIGNsYXNzIHJlZmVyZW5jZQoJCQljbGFzcyBIaXRMRjJXaGVlbDsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdFJGV2hlZWw7CS8vIEV4dGVybmFsIGNsYXNzIHJlZmVyZW5jZQoJCQljbGFzcyBIaXRSRjJXaGVlbDsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdEdsYXNzMTsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdEdsYXNzMjsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdEdsYXNzMzsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdEdsYXNzNDsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJCWNsYXNzIEhpdEdsYXNzNTsJLy8gRXh0ZXJuYWwgY2xhc3MgcmVmZXJlbmNlCgkJfTsKCX07CgoJY2xhc3MgRGluZ29fQmFzZTogQ2FyX0YKCXsKCQltYXBTaXplID0gNTsKCQlhdXRob3IgPSAiQXJlcyBNaWxpdGFyeSBhbmQgQklTIjsKCQlkaXNwbGF5TmFtZSA9ICJEaW5nbzJBMiI7CgkJbmFtZVNvdW5kID0gInZlaF9jYXIiOwoJCXNjb3BlID0gcHJpdmF0ZTsKCQlzaWRlID0gVFdlc3Q7CgkJZmFjdGlvbiA9IEJMVV9GOwoKCQljbGFzcyBMaWJyYXJ5CgkJewoJCQlsaWJUZXh0RGVzYyA9ICIkU1RSX0EzX0NmZ1ZlaGljbGVzX01SQVBfMDFfQmFzZV9MaWJyYXJ5MCI7CgkJfTsKCgkJbW9kZWwgPSAiXERpbmdvXERpbmdvMkEyLnAzZCI7CgkJUGljdHVyZSA9ICJcRGluZ29cZGF0YVxVSVxwaWN0dXJlc1xEaW5nb19QaWN0dXJlLnBhYSI7CgkJSWNvbiA9ICJcRGluZ29cZGF0YVxVSVxpY29uc1xEaW5nb19JY29uLnBhYSI7CgkJdHJhbnNwb3J0TWF4QmFja3BhY2tzID0gNjsKCQl2ZWhpY2xlQ2xhc3MgPSAiQ2FyIjsKCQl0cmFuc3BvcnRTb2xkaWVyID0gNTsKCQljcmV3VnVsbmVyYWJsZSA9IGZhbHNlOwoJCWNyZXdDcmFzaFByb3RlY3Rpb24gPSAwLjE1OwoJCWFybW9yID0gNDA7CgkJY29zdCA9IDEwMDAwMDsKCgkJdGhyZWF0W10gPSB7MC44LCAwLjYsIDAuM307CgoJCWNsYXNzIERhbWFnZQoJCXsKCQkJdGV4W10gPSB7fTsKCQkJbWF0W10gPSB7fTsKCQl9OwoKCQlIaWRkZW5TZWxlY3Rpb25zW10gPSB7Y2FtbzEsY2FtbzIsY2FtbzN9OwoJCUhpZGRlblNlbGVjdGlvbnNUZXh0dXJlc1tdID0geyJcRGluZ29cZGF0YVxUZXN0VGV4dHVyZV9jby5wYWEiLCAiXERpbmdvXGRhdGFcVGVzdFRleHR1cmVfY28ucGFhIiwgIlxEaW5nb1xkYXRhXFRlc3RUZXh0dXJlX2NvLnBhYSJ9OwoKCQljbGFzcyBBbmltYXRpb25Tb3VyY2VzOiBBbmltYXRpb25Tb3VyY2VzCgkJewoJCQljbGFzcyBIaXRHbGFzczE7CgoJCQljbGFzcyBIaXRHbGFzczUgOiBIaXRHbGFzczEKCQkJewoJCQkJaGl0cG9pbnQ9IkhpdEdsYXNzNSI7CgkJCX07CgkJfTsKCiAJCWNsYXNzIEhpdFBvaW50czogSGl0UG9pbnRzCgkJewoJCQljbGFzcyBIaXRFbmdpbmUKCQkJewoJCQkJYXJtb3I9MC41OwoJCQkJbWF0ZXJpYWw9LTE7CgkJCQluYW1lPSJlbmdpbmUiOwoJCQkJdmlzdWFsPSIiOwoJCQkJcGFzc1Rocm91Z2g9MTsKCQkJfTsKCgkJCWNsYXNzIEhpdEdsYXNzMSA6IEhpdEdsYXNzMQoJCQl7CgkJCQlhcm1vcj0xOwoJCQl9OwoKCQkJY2xhc3MgSGl0R2xhc3MyIDogSGl0R2xhc3MyCgkJCXsKCQkJCWFybW9yPTE7CgkJCX07CgoJCQljbGFzcyBIaXRHbGFzczMgOiBIaXRHbGFzczMKCQkJewoJCQkJYXJtb3I9MTsKCQkJfTsKCgkJCWNsYXNzIEhpdEdsYXNzNCA6IEhpdEdsYXNzNAoJCQl7CgkJCQlhcm1vcj0xOwoJCQl9OwoKCQkJY2xhc3MgSGl0R2xhc3M1IDogSGl0R2xhc3M0CgkJCXsKCQkJCW5hbWU9ImdsYXNzNSI7CgkJCQl2aXN1YWw9ImdsYXNzNSI7CgkJCX07CgoJCQljbGFzcyBIaXRMRldoZWVsIDogSGl0TEZXaGVlbAoJCQl7CgkJCQlhcm1vciA9IDAuMTI7CgkJCQlleHBsb3Npb25TaGllbGRpbmcgPSAwLjg7CgkJCX07CgkJCQoJCQljbGFzcyBIaXRMRjJXaGVlbCA6IEhpdExGMldoZWVsCgkJCXsKCQkJCWFybW9yID0gMC4xMjsKCQkJCWV4cGxvc2lvblNoaWVsZGluZyA9IDAuODsKCQkJfTsKCQkJCgkJCWNsYXNzIEhpdFJGV2hlZWwgOiBIaXRSRldoZWVsCgkJCXsKCQkJCWFybW9yID0gMC4xMjsKCQkJCWV4cGxvc2lvblNoaWVsZGluZyA9IDAuODsKCQkJfTsKCQkJCgkJCWNsYXNzIEhpdFJGMldoZWVsIDogSGl0UkYyV2hlZWwKCQkJewoJCQkJYXJtb3IgPSAwLjEyOwoJCQkJZXhwbG9zaW9uU2hpZWxkaW5nID0gMC44OwoJCQl9OwoKCQkJY2xhc3MgSGl0RnVlbAoJCQl7CgkJCQlhcm1vcj0wLjE0OwoJCQkJbWF0ZXJpYWw9LTE7CgkJCQluYW1lPSJmdWVsdGFuayI7CgkJCQl2aXN1YWw9IiI7CgkJCQlwYXNzVGhyb3VnaD0xOwoJCQl9OwoJCX07CgoJCXdoZWVsRGFtYWdlVGhyZXNob2xkID0gMC43OwoJCXdoZWVsRGVzdHJveVRocmVzaG9sZCA9IDAuOTk7CgkJd2hlZWxEYW1hZ2VSYWRpdXNDb2VmID0gMC45NTsKCQl3aGVlbERlc3Ryb3lSYWRpdXNDb2VmID0gMC40NTsKCgkJY3JldyA9ICJCX1NvbGRpZXJfRiI7CgkJdHlwaWNhbENhcmdvW10gPSB7IkJfU29sZGllcl9GIiwiQl9Tb2xkaWVyX0YiLCJCX1NvbGRpZXJfRiIsICJCX1NvbGRpZXJfRiIsICJCX1NvbGRpZXJfRiJ9OwoJCWRyaXZlckFjdGlvbiA9ICJkcml2ZXJfTVJBUF8wMSI7CgkJY2FyZ29BY3Rpb25bXSA9IHsicGFzc2VuZ2VyX01SQVBfMDFfZnJvbnQiLCAicGFzc2VuZ2VyX01SQVBfMDFfYmFjayIsICJwYXNzZW5nZXJfZ2VuZXJpYzAxX2ZvbGRoYW5kcyIsICJwYXNzZW5nZXJfZ2VuZXJpYzAxX2ZvbGRoYW5kcyJ9OwoJCWNhcmdvSXNDb0RyaXZlcltdID0ge3RydWUsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2V9OwoJCWdldEluQWN0aW9uID0gIkdldEluTVJBUF8wMSI7CgkJZ2V0T3V0QWN0aW9uID0gIkdldE91dE1SQVBfMDEiOwoJCWNhcmdvR2V0SW5BY3Rpb25bXSA9IHsiR2V0SW5NUkFQXzAxX2NhcmdvIn07CgkJY2FyZ29HZXRPdXRBY3Rpb25bXSA9IHsiR2V0T3V0TVJBUF8wMSJ9OwoJCWNhc3REcml2ZXJTaGFkb3cgPSBmYWxzZTsKCQljb21tYW5kZXJDYW5TZWUgPSAzMTsKCQloaWRlV2VhcG9uc0RyaXZlciA9IHRydWU7CgkJaGlkZVdlYXBvbnNDYXJnbyA9IHRydWU7CgkJZHJpdmVyRG9vciA9ICIiOwoJCWNhcmdvRG9vcnNbXSA9IHt9OwoKCQl0ZXJyYWluQ29lZiA9IDIuMDsKCQl0dXJuQ29lZiA9IDQ7CiAgICAJc3RlZXJBaGVhZFNpbXVsID0gMC40OwoJCXN0ZWVyQWhlYWRQbGFuID0gMC4yOwoJCXByZWRpY3RUdXJuUGxhbiA9IDAuOTsKICAgICAgICBwcmVkaWN0VHVyblNpbXVsID0gMC41OwogICAgICAgIHByZWNpc2lvbiA9IDE1OwoKCQlzbW9rZUxhdW5jaGVyR3JlbmFkZUNvdW50ID0gODsKCQlzbW9rZUxhdW5jaGVyVmVsb2NpdHkgPSAxNDsKCQlzbW9rZUxhdW5jaGVyT25UdXJyZXQgPSAwOwoJCXNtb2tlTGF1bmNoZXJBbmdsZSA9IDM2MDsKCQl3ZWFwb25zW10gPSB7IlRydWNrSG9ybjIifTsKCQltYWdhemluZXNbXSA9IHt9OwoJCWF0dGVudWF0aW9uRWZmZWN0VHlwZSA9ICJDYXJBdHRlbnVhdGlvbiI7CgoJCXNvdW5kR2V0SW5bXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXGdldGluIiwgMC41NjIzNDEsIDF9OwoJCXNvdW5kR2V0T3V0W10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxnZXRvdXQiLCAwLjU2MjM0MSwgMSwgNDB9OwoJCXNvdW5kRGFtbWFnZVtdID0geyIiLCAwLjU2MjM0MSwgMX07CgkJc291bmRFbmdpbmVPbkludFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfc3RhcnQiLCAwLjM1NDgxMywgMS4wfTsKCQlzb3VuZEVuZ2luZU9uRXh0W10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2V4dF9zdGFydCIsIDEuMCwgMS4wLCAyMDB9OwoJCXNvdW5kRW5naW5lT2ZmSW50W10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2ludF9zdG9wIiwgMC4zNTQ4MTMsIDEuMH07CgkJc291bmRFbmdpbmVPZmZFeHRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfZXh0X3N0b3AiLCAxLjAsIDEuMCwgMjAwfTsKCQlidWlsZENyYXNoMFtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9idWlsZGluZ18wMSIsIDEuNzc4MjgsIDEsIDIwMH07CgkJYnVpbGRDcmFzaDFbXSA9IHsiQTNcc291bmRzX2ZcVmVoaWNsZXNcc29mdFxub2lzZXNcY3Jhc2hfYnVpbGRpbmdfMDIiLCAxLjc3ODI4LCAxLCAyMDB9OwoJCWJ1aWxkQ3Jhc2gyW10gPSB7IkEzXHNvdW5kc19mXFZlaGljbGVzXHNvZnRcbm9pc2VzXGNyYXNoX2J1aWxkaW5nXzAzIiwgMS43NzgyOCwgMSwgMjAwfTsKCQlidWlsZENyYXNoM1tdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9idWlsZGluZ18wNCIsIDEuNzc4MjgsIDEsIDIwMH07CgkJc291bmRCdWlsZGluZ0NyYXNoW10gPSB7ImJ1aWxkQ3Jhc2gwIiwgMC4yNSwgImJ1aWxkQ3Jhc2gxIiwgMC4yNSwgImJ1aWxkQ3Jhc2gyIiwgMC4yNSwgImJ1aWxkQ3Jhc2gzIiwgMC4yNX07CgkJV29vZENyYXNoMFtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wMSIsIDEuNzc4MjgsIDEsIDIwMH07CgkJV29vZENyYXNoMVtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wMiIsIDEuNzc4MjgsIDEsIDIwMH07CgkJV29vZENyYXNoMltdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wMyIsIDEuNzc4MjgsIDEsIDIwMH07CgkJV29vZENyYXNoM1tdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wNCIsIDEuNzc4MjgsIDEsIDIwMH07CgkJV29vZENyYXNoNFtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wNSIsIDEuNzc4MjgsIDEsIDIwMH07CgkJV29vZENyYXNoNVtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF9taXhfd29vZF8wNiIsIDEuNzc4MjgsIDEsIDIwMH07CgkJc291bmRXb29kQ3Jhc2hbXSA9IHsid29vZENyYXNoMCIsIDAuMTY2LCAid29vZENyYXNoMSIsIDAuMTY2LCAid29vZENyYXNoMiIsIDAuMTY2LCAid29vZENyYXNoMyIsIDAuMTY2LCAid29vZENyYXNoNCIsIDAuMTY2LCAid29vZENyYXNoNSIsIDAuMTY2fTsKCQlBcm1vckNyYXNoMFtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF92ZWhpY2xlXzAxIiwgMS43NzgyOCwgMSwgMjAwfTsKCQlBcm1vckNyYXNoMVtdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF92ZWhpY2xlXzAyIiwgMS43NzgyOCwgMSwgMjAwfTsKCQlBcm1vckNyYXNoMltdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF92ZWhpY2xlXzAzIiwgMS43NzgyOCwgMSwgMjAwfTsKCQlBcm1vckNyYXNoM1tdID0geyJBM1xzb3VuZHNfZlxWZWhpY2xlc1xzb2Z0XG5vaXNlc1xjcmFzaF92ZWhpY2xlXzA0IiwgMS43NzgyOCwgMSwgMjAwfTsKCQlzb3VuZEFybW9yQ3Jhc2hbXSA9IHsiQXJtb3JDcmFzaDAiLCAwLjI1LCAiQXJtb3JDcmFzaDEiLCAwLjI1LCAiQXJtb3JDcmFzaDIiLCAwLjI1LCAiQXJtb3JDcmFzaDMiLCAwLjI1fTsKCgkJY2xhc3MgU291bmRzIHsKCQkJY2xhc3MgSWRsZV9leHQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfZXh0X2lkbGUiLCAwLjM5ODEwNywgMSwgMTUwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoODAwLwk0NTAwKSwoMTQwMC8JNDUwMCldKSowLjE1IjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDYwMC8JNDUwMCksKDExMDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygxODAwLwk0NTAwKSwoMTMwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2V4dF9sb3cxIiwgZGItNywgMSwgMjUwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjkJKwkoKHJwbS8JNDUwMCkgZmFjdG9yWygxNDAwLwk0NTAwKSwoMjEwMC8JNDUwMCldKSowLjIiOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyooKChycG0vCTQ1MDApIGZhY3RvclsoMTQwMC8JNDUwMCksKDE4MDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygyMzAwLwk0NTAwKSwoMjAwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lMV9leHQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfZXh0X2xvdzIiLCAwLjU2MjM0MSwgMSwgMzAwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjkJKwkJKChycG0vCTQ1MDApIGZhY3RvclsoMjEwMC8JNDUwMCksKDI4MDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDE5MDAvCTQ1MDApLCgyMzAwLwk0NTAwKV0pCSoJKChycG0vCTQ1MDApIGZhY3RvclsoMzAwMC8JNDUwMCksKDI1MDAvCTQ1MDApXSkpIjsKCQkJfTsKCQkJCgkJCWNsYXNzIEVuZ2luZTJfZXh0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2V4dF9taWQiLCBkYi0zLCAxLCAzNTB9OwoJCQkJZnJlcXVlbmN5ID0gIjAuOQkrCSgocnBtLwk0NTAwKSBmYWN0b3JbKDI4MDAvCTQ1MDApLCgzNjAwLwk0NTAwKV0pKjAuMiI7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qY2FtUG9zKigoKHJwbS8JNDUwMCkgZmFjdG9yWygyNTAwLwk0NTAwKSwoMzEwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDQ1MDAvCTQ1MDApLCgzNzAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUzX2V4dCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9leHRfaGlnaCIsIGRiMCwgMSwgNDAwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMzYwMC8JNDUwMCksKDQ1MDAvCTQ1MDApXSkqMC4xIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKChycG0vCTQ1MDApIGZhY3RvclsoMzgwMC8JNDUwMCksKDQ1MDAvCTQ1MDApXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgSWRsZVRocnVzdCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9leHRfZXhoYXVzdF9pZGxlIiwgMC41NjIzNDEsIDEsIDIwMH07CgkJCQlmcmVxdWVuY3kgPSAiMC45NQkrCSgocnBtLwk0NTAwKSBmYWN0b3JbKDgwMC8JNDUwMCksKDE0MDAvCTQ1MDApXSkqMC4xNSI7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qY2FtUG9zKigwLjQrKDAuNioodGhydXN0IGZhY3RvclswLjEsMV0pKSkqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDYwMC8JNDUwMCksKDExMDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygxODAwLwk0NTAwKSwoMTMwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lVGhydXN0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2V4dF9leGhhdXN0X2xvdzEiLCBkYi0zLCAxLCAzNTB9OwoJCQkJZnJlcXVlbmN5ID0gIjAuOQkrCSgocnBtLwk0NTAwKSBmYWN0b3JbKDE0MDAvCTQ1MDApLCgyMTAwLwk0NTAwKV0pKjAuMiI7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qY2FtUG9zKigwLjQrKDAuNioodGhydXN0IGZhY3RvclswLjEsMV0pKSkqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDE0MDAvCTQ1MDApLCgxODAwLwk0NTAwKV0pCSoJKChycG0vCTQ1MDApIGZhY3RvclsoMjMwMC8JNDUwMCksKDIwMDAvCTQ1MDApXSkpIjsKCQkJfTsKCQkJCgkJCWNsYXNzIEVuZ2luZTFfVGhydXN0X2V4dCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9leHRfZXhoYXVzdF9sb3cyIiwgZGItMSwgMSwgNDAwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjkJKwkJKChycG0vCTQ1MDApIGZhY3RvclsoMjEwMC8JNDUwMCksKDI4MDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKDAuNCsoMC42Kih0aHJ1c3QgZmFjdG9yWzAuMSwxXSkpKSooKChycG0vCTQ1MDApIGZhY3RvclsoMTkwMC8JNDUwMCksKDIzMDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygzMDAwLwk0NTAwKSwoMjUwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lMl9UaHJ1c3RfZXh0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2V4dF9leGhhdXN0X21pZCIsIGRiMSwgMSwgNDI1fTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjkJKwkoKHJwbS8JNDUwMCkgZmFjdG9yWygyODAwLwk0NTAwKSwoMzYwMC8JNDUwMCldKSowLjIiOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyooMC40KygwLjYqKHRocnVzdCBmYWN0b3JbMC4xLDFdKSkpKigoKHJwbS8JNDUwMCkgZmFjdG9yWygyNTAwLwk0NTAwKSwoMzEwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDQ1MDAvCTQ1MDApLCgzNzAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUzX1RocnVzdF9leHQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfZXh0X2V4aGF1c3RfaGlnaCIsIGRiMiwgMSwgNDUwfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMzYwMC8JNDUwMCksKDQ1MDAvCTQ1MDApXSkqMC4xIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKDAuNCsoMC42Kih0aHJ1c3QgZmFjdG9yWzAuMSwxXSkpKSooKHJwbS8JNDUwMCkgZmFjdG9yWygzODAwLwk0NTAwKSwoNDUwMC8JNDUwMCldKSI7CgkJCX07CgkJCQoJCQljbGFzcyBJZGxlX2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfaWRsZSIsIGRiLTEyLCAxfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoODAwLwk0NTAwKSwoMTQwMC8JNDUwMCldKSowLjE1IjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigoKHJwbS8JNDUwMCkgZmFjdG9yWyg2MDAvCTQ1MDApLCgxMTAwLwk0NTAwKV0pCSoJKChycG0vCTQ1MDApIGZhY3RvclsoMTgwMC8JNDUwMCksKDEzMDAvCTQ1MDApXSkpIjsKCQkJfTsKCQkJCgkJCWNsYXNzIEVuZ2luZV9pbnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfaW50X2xvdzEiLCBkYi0xMCwgMX07CgkJCQlmcmVxdWVuY3kgPSAiMC45CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMTQwMC8JNDUwMCksKDIxMDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigoKHJwbS8JNDUwMCkgZmFjdG9yWygxNDAwLwk0NTAwKSwoMTgwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDIzMDAvCTQ1MDApLCgyMDAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUxX2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfbG93MiIsIDAuMzk4MTA3LCAxfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjkJKwkJKChycG0vCTQ1MDApIGZhY3RvclsoMjEwMC8JNDUwMCksKDI4MDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigoKHJwbS8JNDUwMCkgZmFjdG9yWygxOTAwLwk0NTAwKSwoMjMwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDMwMDAvCTQ1MDApLCgyNTAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUyX2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfbWlkIiwgZGItNiwgMX07CgkJCQlmcmVxdWVuY3kgPSAiMC45CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMjgwMC8JNDUwMCksKDM2MDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigoKHJwbS8JNDUwMCkgZmFjdG9yWygyNTAwLwk0NTAwKSwoMzEwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDQ1MDAvCTQ1MDApLCgzNzAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUzX2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfaGlnaCIsIDAuNjMwOTU3LCAxfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMzYwMC8JNDUwMCksKDQ1MDAvCTQ1MDApXSkqMC4xIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigocnBtLwk0NTAwKSBmYWN0b3JbKDM4MDAvCTQ1MDApLCg0NTAwLwk0NTAwKV0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIElkbGVUaHJ1c3RfaW50IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2ludF9leGhhdXN0X2lkbGUiLCBkYi05LCAxfTsKCQkJCWZyZXF1ZW5jeSA9ICIwLjk1CSsJKChycG0vCTQ1MDApIGZhY3RvclsoODAwLwk0NTAwKSwoMTQwMC8JNDUwMCldKSowLjE1IjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigwLjQrKDAuNioodGhydXN0IGZhY3RvclswLjEsMV0pKSkqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDYwMC8JNDUwMCksKDExMDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygxODAwLwk0NTAwKSwoMTMwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lVGhydXN0X2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfZXhoYXVzdF9sb3cxIiwgZGItNywgMX07CgkJCQlmcmVxdWVuY3kgPSAiMC45CSsJKChycG0vCTQ1MDApIGZhY3RvclsoMTQwMC8JNDUwMCksKDIxMDAvCTQ1MDApXSkqMC4yIjsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiooMS1jYW1Qb3MpKigwLjQrKDAuNioodGhydXN0IGZhY3RvclswLjEsMV0pKSkqKCgocnBtLwk0NTAwKSBmYWN0b3JbKDE0MDAvCTQ1MDApLCgxODAwLwk0NTAwKV0pCSoJKChycG0vCTQ1MDApIGZhY3RvclsoMjMwMC8JNDUwMCksKDIwMDAvCTQ1MDApXSkpIjsKCQkJfTsKCQkJCgkJCWNsYXNzIEVuZ2luZTFfVGhydXN0X2ludCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XE1SQVBfMDFcTVJBUF8wMV9pbnRfZXhoYXVzdF9sb3cyIiwgMC41NjIzNDEsIDF9OwoJCQkJZnJlcXVlbmN5ID0gIjAuOQkrCQkoKHJwbS8JNDUwMCkgZmFjdG9yWygyMTAwLwk0NTAwKSwoMjgwMC8JNDUwMCldKSowLjIiOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKigxLWNhbVBvcykqKDAuNCsoMC42Kih0aHJ1c3QgZmFjdG9yWzAuMSwxXSkpKSooKChycG0vCTQ1MDApIGZhY3RvclsoMTkwMC8JNDUwMCksKDIzMDAvCTQ1MDApXSkJKgkoKHJwbS8JNDUwMCkgZmFjdG9yWygzMDAwLwk0NTAwKSwoMjUwMC8JNDUwMCldKSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgRW5naW5lMl9UaHJ1c3RfaW50IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcTVJBUF8wMVxNUkFQXzAxX2ludF9leGhhdXN0X21pZCIsIGRiLTMsIDF9OwoJCQkJZnJlcXVlbmN5ID0gIjAuOQkrCSgocnBtLwk0NTAwKSBmYWN0b3JbKDI4MDAvCTQ1MDApLCgzNjAwLwk0NTAwKV0pKjAuMiI7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qKDEtY2FtUG9zKSooMC40KygwLjYqKHRocnVzdCBmYWN0b3JbMC4xLDFdKSkpKigoKHJwbS8JNDUwMCkgZmFjdG9yWygyNTAwLwk0NTAwKSwoMzEwMC8JNDUwMCldKQkqCSgocnBtLwk0NTAwKSBmYWN0b3JbKDQ1MDAvCTQ1MDApLCgzNzAwLwk0NTAwKV0pKSI7CgkJCX07CgkJCQoJCQljbGFzcyBFbmdpbmUzX1RocnVzdF9pbnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxNUkFQXzAxXE1SQVBfMDFfaW50X2V4aGF1c3RfaGlnaCIsIGRiLTIsIDF9OwoJCQkJZnJlcXVlbmN5ID0gIjAuOTUJKwkoKHJwbS8JNDUwMCkgZmFjdG9yWygzNjAwLwk0NTAwKSwoNDUwMC8JNDUwMCldKSowLjEiOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKigxLWNhbVBvcykqKDAuNCsoMC42Kih0aHJ1c3QgZmFjdG9yWzAuMSwxXSkpKSooKHJwbS8JNDUwMCkgZmFjdG9yWygzODAwLwk0NTAwKSwoNDUwMC8JNDUwMCldKSI7CgkJCX07CgkJCQoJCQljbGFzcyBNb3ZlbWVudCB7CgkJCQlzb3VuZCA9ICJzb3VuZEVudmlyb24iOwoJCQkJZnJlcXVlbmN5ID0gIjEiOwoJCQkJdm9sdW1lID0gIjAiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNSb2NrT3V0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcZXh0X3RpcmVzX2RpcnRfc29mdF8xIiwgZGIzLCAxLjAsIDYwfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICJjYW1Qb3Mqcm9jayooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNTYW5kT3V0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcZXh0LXRpcmVzLXNhbmQxIiwgZGIzLCAxLjAsIDYwfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICJjYW1Qb3Mqc2FuZCooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNHcmFzc091dCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGV4dF90aXJlc19kaXJ0X3NvZnRfMiIsIGRiMiwgMS4wLCA2MH07CgkJCQlmcmVxdWVuY3kgPSAiMSI7CgkJCQl2b2x1bWUgPSAiY2FtUG9zKmdyYXNzKihzcGVlZCBmYWN0b3JbMiwgMjBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyBUaXJlc011ZE91dCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGV4dC10aXJlcy1tdWQyIiwgZGIxLCAxLjAsIDYwfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICJjYW1Qb3MqbXVkKihzcGVlZCBmYWN0b3JbMiwgMjBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyBUaXJlc0dyYXZlbE91dCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGV4dF90aXJlc19ncmF2ZWxfMSIsIGRiMiwgMS4wLCA2MH07CgkJCQlmcmVxdWVuY3kgPSAiMSI7CgkJCQl2b2x1bWUgPSAiY2FtUG9zKmdyYXZlbCooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNBc3BoYWx0T3V0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcZXh0X3RpcmVzX2FzZmFsdF8yIiwgZGIxLCAxLjAsIDYwfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICJjYW1Qb3MqYXNwaGFsdCooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgTm9pc2VPdXQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcbm9pc2VfZXh0X2Nhcl8zIiwgZGIxLCAxLjAsIDkwfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICJjYW1Qb3MqKGRhbXBlcjAgbWF4IDAuMDIpKihzcGVlZCBmYWN0b3JbMCwgOF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIFRpcmVzUm9ja0luIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcaW50X3RpcmVzX2RpcnRfc29mdF8xIiwgZGItMywgMS4wfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICIoMS1jYW1Qb3MpKnJvY2sqKHNwZWVkIGZhY3RvclsyLCAyMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIFRpcmVzU2FuZEluIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcaW50LXRpcmVzLXNhbmQyIiwgZGItMywgMS4wfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICIoMS1jYW1Qb3MpKnNhbmQqKHNwZWVkIGZhY3RvclsyLCAyMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIFRpcmVzR3Jhc3NJbiB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGludF90aXJlc19kaXJ0X3NvZnRfMiIsIGRiLTMsIDEuMH07CgkJCQlmcmVxdWVuY3kgPSAiMSI7CgkJCQl2b2x1bWUgPSAiKDEtY2FtUG9zKSpncmFzcyooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNNdWRJbiB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGludC10aXJlcy1tdWQyIiwgZGItMywgMS4wfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICIoMS1jYW1Qb3MpKm11ZCooc3BlZWQgZmFjdG9yWzIsIDIwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgVGlyZXNHcmF2ZWxJbiB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XHRpcmVzXGludF90aXJlc19ncmF2ZWxfMSIsIGRiLTMsIDEuMH07CgkJCQlmcmVxdWVuY3kgPSAiMSI7CgkJCQl2b2x1bWUgPSAiKDEtY2FtUG9zKSpncmF2ZWwqKHNwZWVkIGZhY3RvclsyLCAyMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIFRpcmVzQXNwaGFsdEluIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcdGlyZXNcaW50X3RpcmVzX2FzZmFsdF8yIiwgZGItMywgMS4wfTsKCQkJCWZyZXF1ZW5jeSA9ICIxIjsKCQkJCXZvbHVtZSA9ICIoMS1jYW1Qb3MpKmFzcGhhbHQqKHNwZWVkIGZhY3RvclsyLCAyMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIE5vaXNlSW4gewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcbm9pc2VfaW50X2Nhcl8zIiwgMC41NjIzNDEsIDEuMH07CgkJCQlmcmVxdWVuY3kgPSAiMSI7CgkJCQl2b2x1bWUgPSAiKGRhbXBlcjAgbWF4IDAuMSkqKHNwZWVkIGZhY3RvclswLCA4XSkqKDEtY2FtUG9zKSI7CgkJCX07CgkJCQoJCQljbGFzcyBicmVha2luZ19leHRfcm9hZCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XG5vaXNlc1xzbGlwcGluZ190aXJlc19sb29wXzA0IiwgZGItMywgMSwgODB9OwoJCQkJZnJlcXVlbmN5ID0gMTsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqYXNwaGFsdCooTG9uZ1NsaXBEcml2ZSBGYWN0b3JbLTAuMTUsIC0wLjNdKSooU3BlZWQgRmFjdG9yWzIsIDEwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgYWNjZWxlcmF0aW9uX2V4dF9yb2FkIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzX2xvb3BfMDIiLCBkYi0zLCAxLCA4MH07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyphc3BoYWx0KihMb25nU2xpcERyaXZlIEZhY3RvclswLjE1LCAwLjNdKSooU3BlZWQgRmFjdG9yWzEwLCAwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgdHVybl9sZWZ0X2V4dF9yb2FkIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzX2xvb3BfMDIiLCBkYi0zLCAxLCA4MH07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyphc3BoYWx0KihsYXRTbGlwRHJpdmUgRmFjdG9yWzAuMTUsIDAuM10pKihTcGVlZCBGYWN0b3JbMCwgMTBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyB0dXJuX3JpZ2h0X2V4dF9yb2FkIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzX2xvb3BfMDIiLCBkYi0zLCAxLCA4MH07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyphc3BoYWx0KihsYXRTbGlwRHJpdmUgRmFjdG9yWy0wLjE1LCAtMC4zXSkqKFNwZWVkIEZhY3RvclswLCAxMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIGJyZWFraW5nX2V4dF9kaXJ0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzXzE0X2RpcnRfYnJlYWtpbmciLCBkYi0zLCAxLCA2MH07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyooMS1hc3BoYWx0KSooTG9uZ1NsaXBEcml2ZSBGYWN0b3JbLTAuMTUsIC0wLjNdKSooU3BlZWQgRmFjdG9yWzIsIDEwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgYWNjZWxlcmF0aW9uX2V4dF9kaXJ0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXGFjY2VsZXJhdGlvbl9kaXJ0X2V4dF8xIiwgZGItMywgMSwgNjB9OwoJCQkJZnJlcXVlbmN5ID0gMTsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbipjYW1Qb3MqKDEtYXNwaGFsdCkqKExvbmdTbGlwRHJpdmUgRmFjdG9yWzAuMTUsIDAuM10pKihTcGVlZCBGYWN0b3JbMTAsIDBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyB0dXJuX2xlZnRfZXh0X2RpcnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcc2xpcHBpbmdfdGlyZXNfMThfZGlydCIsIGRiLTMsIDEsIDYwfTsKCQkJCWZyZXF1ZW5jeSA9IDE7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qY2FtUG9zKigxLWFzcGhhbHQpKihsYXRTbGlwRHJpdmUgRmFjdG9yWzAuMTUsIDAuM10pKihTcGVlZCBGYWN0b3JbMCwgMTBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyB0dXJuX3JpZ2h0X2V4dF9kaXJ0IHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzXzE4X2RpcnQiLCBkYi0zLCAxLCA2MH07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmNhbVBvcyooMS1hc3BoYWx0KSoobGF0U2xpcERyaXZlIEZhY3RvclstMC4xNSwgLTAuM10pKihTcGVlZCBGYWN0b3JbMCwgMTBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyBicmVha2luZ19pbnRfcm9hZCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XG5vaXNlc1xzbGlwcGluZ190aXJlc19sb29wXzA0X2ludCIsIGRiLTEwLCAxfTsKCQkJCWZyZXF1ZW5jeSA9IDE7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qYXNwaGFsdCooMS1jYW1Qb3MpKihMb25nU2xpcERyaXZlIEZhY3RvclstMC4xNSwgLTAuM10pKihTcGVlZCBGYWN0b3JbMiwgNl0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIGFjY2VsZXJhdGlvbl9pbnRfcm9hZCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XG5vaXNlc1xzbGlwcGluZ190aXJlc19sb29wXzAyX2ludCIsIGRiLTEwLCAxfTsKCQkJCWZyZXF1ZW5jeSA9IDE7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qYXNwaGFsdCooMS1jYW1Qb3MpKihMb25nU2xpcERyaXZlIEZhY3RvclswLjE1LCAwLjNdKSooU3BlZWQgRmFjdG9yWzEwLCAwXSkiOwoJCQl9OwoJCQkKCQkJY2xhc3MgdHVybl9sZWZ0X2ludF9yb2FkIHsKCQkJCXNvdW5kW10gPSB7IkEzXFNvdW5kc19GXHZlaGljbGVzXHNvZnRcbm9pc2VzXHNsaXBwaW5nX3RpcmVzX2xvb3BfMDJfaW50IiwgZGItMTAsIDF9OwoJCQkJZnJlcXVlbmN5ID0gMTsKCQkJCXZvbHVtZSA9ICJlbmdpbmVPbiphc3BoYWx0KigxLWNhbVBvcykqKGxhdFNsaXBEcml2ZSBGYWN0b3JbMC4xNSwgMC4zXSkqKFNwZWVkIEZhY3RvclswLCAxMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIHR1cm5fcmlnaHRfaW50X3JvYWQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcc2xpcHBpbmdfdGlyZXNfbG9vcF8wMl9pbnQiLCBkYi0xMCwgMX07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKmFzcGhhbHQqKDEtY2FtUG9zKSoobGF0U2xpcERyaXZlIEZhY3RvclstMC4xNSwgLTAuM10pKihTcGVlZCBGYWN0b3JbMCwgMTBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyBicmVha2luZ19pbnRfZGlydCB7CgkJCQlzb3VuZFtdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xzb2Z0XG5vaXNlc1xzbGlwcGluZ190aXJlc18xNF9kaXJ0X2JyZWFraW5nX2ludCIsIGRiLTEwLCAxfTsKCQkJCWZyZXF1ZW5jeSA9IDE7CgkJCQl2b2x1bWUgPSAiZW5naW5lT24qKDEtYXNwaGFsdCkqKDEtY2FtUG9zKSooTG9uZ1NsaXBEcml2ZSBGYWN0b3JbLTAuMTUsIC0wLjNdKSooU3BlZWQgRmFjdG9yWzIsIDZdKSI7CgkJCX07CgkJCQoJCQljbGFzcyBhY2NlbGVyYXRpb25faW50X2RpcnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcYWNjZWxlcmF0aW9uX2RpcnRfaW50XzEiLCBkYi0xMCwgMX07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKigxLWFzcGhhbHQpKigxLWNhbVBvcykqKExvbmdTbGlwRHJpdmUgRmFjdG9yWzAuMTUsIDAuM10pKihTcGVlZCBGYWN0b3JbMTAsIDBdKSI7CgkJCX07CgkJCQoJCQljbGFzcyB0dXJuX2xlZnRfaW50X2RpcnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcc2xpcHBpbmdfdGlyZXNfMThfZGlydF9pbnQiLCBkYi0xMCwgMX07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKigxLWFzcGhhbHQpKigxLWNhbVBvcykqKGxhdFNsaXBEcml2ZSBGYWN0b3JbMC4xNSwgMC4zXSkqKFNwZWVkIEZhY3RvclswLCAxMF0pIjsKCQkJfTsKCQkJCgkJCWNsYXNzIHR1cm5fcmlnaHRfaW50X2RpcnQgewoJCQkJc291bmRbXSA9IHsiQTNcU291bmRzX0ZcdmVoaWNsZXNcc29mdFxub2lzZXNcc2xpcHBpbmdfdGlyZXNfMThfZGlydF9pbnQiLCBkYi0xMCwgMX07CgkJCQlmcmVxdWVuY3kgPSAxOwoJCQkJdm9sdW1lID0gImVuZ2luZU9uKigxLWFzcGhhbHQpKigxLWNhbVBvcykqKGxhdFNsaXBEcml2ZSBGYWN0b3JbLTAuMTUsIC0wLjNdKSooU3BlZWQgRmFjdG9yWzAsIDEwXSkiOwoJCQl9OwoJCX07CgoJCXRocnVzdERlbGF5ID0gMC4xOwoJCWJyYWtlSWRsZVNwZWVkID0gMS43ODsKCQltYXhTcGVlZCA9IDExNTsKCQlmdWVsQ2FwYWNpdHkgPSA5NDsKCQl3aGVlbENpcmN1bWZlcmVuY2UgPSAzLjUxNjg7CgkJYW50aVJvbGxiYXJGb3JjZUNvZWYgPSAxMjsKCQlhbnRpUm9sbGJhckZvcmNlTGltaXQgPSAxMDsKCQlhbnRpUm9sbGJhclNwZWVkTWluID0gMjA7CgkJYW50aVJvbGxiYXJTcGVlZE1heCA9IDUwOwoJCWlkbGVScG0gPSA4MDA7CgkJcmVkUnBtID0gNDUwMDsKCgkJY2xhc3MgY29tcGxleEdlYXJib3gKCQl7CgkJCUdlYXJib3hSYXRpb3NbXSA9IHsiUjEiLCAtMy4xODIsICJOIiwgMCwgIkQxIiwgNC4xODIsICJEMiIsIDIuMzE4LCAiRDMiLCAxLjg1LCAiRDQiLCAxLjY1LCAiRDUiLCAxLjQ1fTsKCQkJVHJhbnNtaXNzaW9uUmF0aW9zW10gPSB7IkhpZ2giLCA1LjUzOX07CgkJCWdlYXJCb3hNb2RlID0gImF1dG8iOwoJCQltb3ZlT2ZmR2VhciA9IDE7CgkJCWRyaXZlU3RyaW5nID0gIkQiOwoJCQluZXV0cmFsU3RyaW5nID0gIk4iOwoJCQlyZXZlcnNlU3RyaW5nID0gIlIiOwoJCX07CgoJCXNpbXVsYXRpb24gPSAiY2FyeCI7CgkJZGFtcGVyc0J1bXBDb2VmID0gNi4wOwoJCWRpZmZlcmVudGlhbFR5cGUgPSAiYWxsX2xpbWl0ZWQiOwoJCWZyb250UmVhclNwbGl0ID0gMC41OwoJCWZyb250QmlhcyA9IDEuMzsKCQlyZWFyQmlhcyA9IDEuMzsKCQljZW50cmVCaWFzID0gMS4zOwoJCWNsdXRjaFN0cmVuZ3RoID0gMjAuMDsKCQllbmdpbmVQb3dlciA9IDI3NjsKCQltYXhPbWVnYSA9IDQ3MTsKCQlwZWFrVG9ycXVlID0gMTI1MzsKCQlkYW1waW5nUmF0ZUZ1bGxUaHJvdHRsZSA9IDAuMDg7CgkJZGFtcGluZ1JhdGVaZXJvVGhyb3R0bGVDbHV0Y2hFbmdhZ2VkID0gMi4wOwoJCWRhbXBpbmdSYXRlWmVyb1Rocm90dGxlQ2x1dGNoRGlzZW5nYWdlZCA9IDAuMzU7CgkJdG9ycXVlQ3VydmVbXSA9IHt7MC4wLCAwLjB9LCB7MC4xNzgsIDAuNX0sIHswLjI1LCAwLjg1fSwgezAuNCwgMC45fSwgezAuNSwgMS4wfSwgezAuNzI1LCAwLjk1fSwgezAuODUsIDAuNn0sIHsxLjAsIDAuM319OwoJCWNoYW5nZUdlYXJNaW5FZmZlY3Rpdml0eVtdID0gezAuOTUsIDAuMTUsIDAuOTUsIDAuOTUsIDAuOTUsIDAuOTUsIDAuOTV9OwoJCXN3aXRjaFRpbWUgPSAwLjMxOwoJCWxhdGVuY3kgPSAxLjA7CgoJCWNsYXNzIFdoZWVscwoJCXsKCQkJY2xhc3MgTEYKCQkJewoJCQkJYm9uZU5hbWUgPSAid2hlZWxfMV8xIjsKCQkJCXN0ZWVyaW5nID0gMTsKCQkJCXNpZGUgPSAibGVmdCI7CgkJCQljZW50ZXIgPSAiV2hlZWxfMV8xX0F4aXMiOwoJCQkJYm91bmRhcnkgPSAiV2hlZWxfMV8xX2JvdW5kIjsKCQkJCXdpZHRoID0gMC4yOwoJCQkJbWFzcyA9IDE1MDsKCQkJCU1PSSA9IDQwOwoJCQkJZGFtcGluZ1JhdGUgPSAwLjE7CgkJCQlkYW1waW5nUmF0ZURhbWFnZWQgPSAxLjA7CgkJCQlkYW1waW5nUmF0ZURlc3Ryb3llZCA9IDEwMDAuMDsKCQkJCW1heEJyYWtlVG9ycXVlID0gMjI1MDA7CgkJCQltYXhIYW5kQnJha2VUb3JxdWUgPSAwOwoJCQkJc3VzcFRyYXZlbERpcmVjdGlvbltdID0gezAsIC0xLCAwfTsKCQkJCXN1c3BGb3JjZUFwcFBvaW50T2Zmc2V0ID0gIldoZWVsXzFfMV9BeGlzIjsKCQkJCXRpcmVGb3JjZUFwcFBvaW50T2Zmc2V0ID0gIldoZWVsXzFfMV9BeGlzIjsKCQkJCW1heENvbXByZXNzaW9uID0gMC4xNTsKCQkJCW1NYXhEcm9vcCA9IDAuMTU7CgkJCQlzcHJ1bmdNYXNzID0gMjA2NjsKCQkJCXNwcmluZ1N0cmVuZ3RoID0gMjAxMjM0OwoJCQkJc3ByaW5nRGFtcGVyUmF0ZSA9IDIwNjAwLjY7CgkJCQlsb25naXR1ZGluYWxTdGlmZm5lc3NQZXJVbml0R3Jhdml0eSA9IDUwMDA7CgkJCQlsYXRTdGlmZlggPSAyNTsKCQkJCWxhdFN0aWZmWSA9IDE4MDsKCQkJCWZyaWN0aW9uVnNTbGlwR3JhcGhbXSA9IHt7MCwgMX0sIHswLjUsIDF9LCB7MSwgMX19OwoJCQl9OwoJCQkKCQkJY2xhc3MgTFIgOiBMRgoJCQl7CgkJCQlib25lTmFtZSA9ICJ3aGVlbF8xXzIiOwoJCQkJc3RlZXJpbmcgPSAwOwoJCQkJY2VudGVyID0gIldoZWVsXzFfMl9BeGlzIjsKCQkJCWJvdW5kYXJ5ID0gIldoZWVsXzFfMl9ib3VuZCI7CgkJCQlzdXNwRm9yY2VBcHBQb2ludE9mZnNldCA9ICJXaGVlbF8xXzJfQXhpcyI7CgkJCQl0aXJlRm9yY2VBcHBQb2ludE9mZnNldCA9ICJXaGVlbF8xXzJfQXhpcyI7CgkJCQltYXhIYW5kQnJha2VUb3JxdWUgPSAyNzUwMDA7CgkJCX07CgkJCQoJCQljbGFzcyBSRiA6IExGCgkJCXsKCQkJCWJvbmVOYW1lID0gIldoZWVsXzJfMSI7CgkJCQljZW50ZXIgPSAiV2hlZWxfMl8xX0F4aXMiOwoJCQkJYm91bmRhcnkgPSAiV2hlZWxfMl8xX2JvdW5kIjsKCQkJCXN1c3BGb3JjZUFwcFBvaW50T2Zmc2V0ID0gIldoZWVsXzJfMV9BeGlzIjsKCQkJCXRpcmVGb3JjZUFwcFBvaW50T2Zmc2V0ID0gIldoZWVsXzJfMV9BeGlzIjsKCQkJCXN0ZWVyaW5nID0gMTsKCQkJCXNpZGUgPSAicmlnaHQiOwoJCQl9OwoJCQkKCQkJY2xhc3MgUlIgOiBSRgoJCQl7CgkJCQlib25lTmFtZSA9ICJ3aGVlbF8yXzIiOwoJCQkJc3RlZXJpbmcgPSAwOwoJCQkJY2VudGVyID0gIldoZWVsXzJfMl9BeGlzIjsKCQkJCWJvdW5kYXJ5ID0gIldoZWVsXzJfMl9ib3VuZCI7CgkJCQlzdXNwRm9yY2VBcHBQb2ludE9mZnNldCA9ICJXaGVlbF8yXzJfQXhpcyI7CgkJCQl0aXJlRm9yY2VBcHBQb2ludE9mZnNldCA9ICJXaGVlbF8yXzJfQXhpcyI7CgkJCQltYXhIYW5kQnJha2VUb3JxdWUgPSAyNzUwMDA7CgkJCX07CgkJfTsKCgkJc3VwcGx5UmFkaXVzID0gNTsKCQl0cmFuc3BvcnRNYXhNYWdhemluZXMgPSA5MDsKCgkJY2xhc3MgVHJhbnNwb3J0TWFnYXppbmVzCgkJewoJCQljbGFzcyBfeHhfMzBSbmRfNjV4MzlfY2FzZWxlc3NfbWFnCgkJCXsKCQkJCW1hZ2F6aW5lID0gIjMwUm5kXzY1eDM5X2Nhc2VsZXNzX21hZyI7CgkJCQljb3VudCA9IDE2OwoJCQl9OwoJCQkKCQkJY2xhc3MgX3h4XzEwMFJuZF82NXgzOV9jYXNlbGVzc19tYWcKCQkJewoJCQkJbWFnYXppbmUgPSAiMTAwUm5kXzY1eDM5X2Nhc2VsZXNzX21hZyI7CgkJCQljb3VudCA9IDg7CgkJCX07CgkJCQoJCQljbGFzcyBfeHhfSGFuZEdyZW5hZGUKCQkJewoJCQkJbWFnYXppbmUgPSAiSGFuZEdyZW5hZGUiOwoJCQkJY291bnQgPSAxMDsKCQkJfTsKCQkJCgkJCWNsYXNzIF94eF8xUm5kX0hFX0dyZW5hZGVfc2hlbGwKCQkJewoJCQkJbWFnYXppbmUgPSAiMVJuZF9IRV9HcmVuYWRlX3NoZWxsIjsKCQkJCWNvdW50ID0gMTA7CgkJCX07CgkJCQoJCQljbGFzcyBfeHhfMVJuZF9TbW9rZV9HcmVuYWRlX3NoZWxsCgkJCXsKCQkJCW1hZ2F6aW5lID0gIjFSbmRfU21va2VfR3JlbmFkZV9zaGVsbCI7CgkJCQljb3VudCA9IDQ7CgkJCX07CgkJCQoJCQljbGFzcyBfeHhfMVJuZF9TbW9rZUdyZWVuX0dyZW5hZGVfc2hlbGwKCQkJewoJCQkJbWFnYXppbmUgPSAiMVJuZF9TbW9rZUdyZWVuX0dyZW5hZGVfc2hlbGwiOwoJCQkJY291bnQgPSA0OwoJCQl9OwoJCQkKCQkJY2xhc3MgX3h4XzFSbmRfU21va2VPcmFuZ2VfR3JlbmFkZV9zaGVsbAoJCQl7CgkJCQltYWdhemluZSA9ICIxUm5kX1Ntb2tlT3JhbmdlX0dyZW5hZGVfc2hlbGwiOwoJCQkJY291bnQgPSA0OwoJCQl9OwoJCQkKCQkJY2xhc3MgX3h4XzFSbmRfU21va2VCbHVlX0dyZW5hZGVfc2hlbGwKCQkJewoJCQkJbWFnYXppbmUgPSAiMVJuZF9TbW9rZUJsdWVfR3JlbmFkZV9zaGVsbCI7CgkJCQljb3VudCA9IDQ7CgkJCX07CgkJCQoJCQljbGFzcyBfeHhfMTZSbmRfOXgyMV9NYWcKCQkJewoJCQkJbWFnYXppbmUgPSAiMTZSbmRfOXgyMV9NYWciOwoJCQkJY291bnQgPSAxMjsKCQkJfTsKCQkJCgkJCWNsYXNzIF94eF9TbW9rZVNoZWxsCgkJCXsKCQkJCW1hZ2F6aW5lID0gIlNtb2tlU2hlbGwiOwoJCQkJY291bnQgPSA0OwoJCQl9OwoJCQkKCQkJY2xhc3MgX3h4X1Ntb2tlU2hlbGxHcmVlbgoJCQl7CgkJCQltYWdhemluZSA9ICJTbW9rZVNoZWxsR3JlZW4iOwoJCQkJY291bnQgPSA0OwoJCQl9OwoJCQkKCQkJY2xhc3MgX3h4X1Ntb2tlU2hlbGxPcmFuZ2UKCQkJewoJCQkJbWFnYXppbmUgPSAiU21va2VTaGVsbE9yYW5nZSI7CgkJCQljb3VudCA9IDQ7CgkJCX07CgkJCQoJCQljbGFzcyBfeHhfU21va2VTaGVsbEJsdWUKCQkJewoJCQkJbWFnYXppbmUgPSAiU21va2VTaGVsbEJsdWUiOwoJCQkJY291bnQgPSA0OwoJCQl9OwoJCQkKCQkJY2xhc3MgX3h4X05MQVdfRgoJCQl7CgkJCQltYWdhemluZSA9IE5MQVdfRjsKCQkJCWNvdW50ID0gMjsKCQkJfTsKCQl9OwoJCQoJCWNsYXNzIFRyYW5zcG9ydEl0ZW1zCgkJewoJCQljbGFzcyBfeHhfRmlyc3RBaWRLaXQKCQkJewoJCQkJbmFtZSA9ICJGaXJzdEFpZEtpdCI7CgkJCQljb3VudCA9IDEwOwoJCQl9OwoJCX07CgkJCgkJY2xhc3MgVHJhbnNwb3J0V2VhcG9ucwoJCXsKCQkJY2xhc3MgX3h4X2FyaWZsZV9NWF9GCgkJCXsKCQkJCXdlYXBvbiA9ICJhcmlmbGVfTVhfRiI7CgkJCQljb3VudCA9IDI7CgkJCX07CgkJfTsKCgkJZW5hYmxlR1BTID0gdHJ1ZTsKCgkJc291bmRTZXJ2b1tdID0geyJBM1xTb3VuZHNfRlx2ZWhpY2xlc1xhcm1vclxub2lzZXNcc2Vydm9fYmVzdCIsIGRiLTQwLCAxLjAsMTB9OwoKCQlyYWRhclR5cGUgPSA0OwoJfTsKCgljbGFzcyBEaW5nb19GIDogRGluZ29fQmFzZQoJewoJCXNjb3BlID0gcHVibGljOwoJCWNsYXNzIFR1cnJldHMge307Cgl9Owp9Owo=