<LightControllers>
<!--
    Instructions:               

        Instruction               Psuedo code  
        mov   d, p0               d = p0                        move p0 to d
        movc  d, c                d = c                         move c to d
        frac  d, p0               d = frac(p0)                  d is the fractional part of p0
        sat   d, p0               d = saturate(p0)              d is p0 clamped from 0 to 1    
        add   d, p0, p1           d = p0 + p1                   d is p0 + p1
        add   d, p0, c            d = p0 + c                    d is p0 + c
        sub   d, p0, p1           d = p0 - p1                   d is p0 - p1
        mul   d, p0, p1           d = p0 * p1                   d is p0 * p1
        mulc  d, p0, c            d = p0 * c                    d is p0 * c
        div   d, p0, p1           d = p0 / p1                   d is p0 divided by p1
        mod   d, p0, p1           d = p0 % p1                   d is p0 modulo p1
        min   d, p0, p1           d = min(p0, p1)               d is the smaller of p0 and p1
        minc  d, p0, c            d = min(p0, c)                d is the smaller of p0 and c
        max   d, p0, p1           d = max(p0, p1)               d is the larger of p0 and p1
        maxc  d, p0, c            d = max(p0, c)                d is the larger of p0 and c
        sg    d, p0, p1           d = (p1 > p2) ? 1.0 : 0.0     if p0 is greater than p1 then d is 1.0 else d is 0.0
        sgc   d, p0, c            d = (p1 > c) ? 1.0 : 0.0      if p0 is greater than c then d is 1.0 else d is 0.0
        sl    d, p0, p1           d = (p1 < p2) ? 1.0 : 0.0     if p0 is less than p1 then d is 1.0 else d is 0.0
        slc   d, p0, c            d = (p1 < c) ? 1.0 : 0.0      if p0 is less than c then d is 1.0 else d is 0.0
        madd  d, p0, p1, p2       d = (p0 * p1) + p2            d is p0 multiplied by p1 then add p2
        lerp  d, p0, p1, p2       d = lerp(p0, p1, p2)          d is the linear interpolation of p0 and p1 by ratio p2 (p2 must be in the range 0..1)
  
    Registers: (all registers are float)
        d - destination
        p0, p1, p2 - parameter 0,1 and 2
        c - constant

        d, p0, p1 and p2 can be any of the following:

        Input registers (values set by the car state)
            "BrakeAmount"       : Brake amount, [0.0 to 1.0]
            "SteeringAmount"    : Steering amount [-1.0 to 1.0] (left to right)
            "Speed"             : Speed in m/s.
            "Brake"             : on/off [0.0 or 1.0]
            "Headlight"         : on/off [0.0 or 1.0] 
            "Sidelight"         : on/off [0.0 or 1.0] 
            "DayTimeRL"         : on/off [0.0 or 1.0]
            "Highbeam"          : on/off [0.0 or 1.0]
            "Fog"               : on/off [0.0 or 1.0]
            "Reverse"           : on/off [0.0 or 1.0]
            "Engine"            : on/off [0.0 or 1.0]
            "Hazard"            : on/off [0.0 or 1.0]
            "IndicatorL"        : on/off [0.0 or 1.0]
            "IndicatorR"        : on/off [0.0 or 1.0]

        Sequence Generator outputs
            "seq0"
            "seq1"
            "seq2"
            "seq3"

        Temps (use to store temp values)
            "t0"
            "t1"
            "t2"
            "t3"
            "t4"
            "t5"
            "t6"
            "t7"

        Output - The output register must be set with the final result of the contoller.
            "Output" 

    Constant:
        c constant is any float value.

    Slew is the time in seconds it takes the light to change.
    slew = 0.0 is instant, like an LED 
    slew = 0.1 take 0.1s to get to 95% brightness, like a filament bulb 
-->

    <Constant name="IndicatorOnTime" value="0.36" />
    <Constant name="IndicatorOffTime" value="0.33" />
    <Constant name="SeqIndT1" value="0.12" /><!-- SeqIndT1 + SeqIndT2 should = IndicatorOnTime -->
    <Constant name="SeqIndT2" value="0.24" /><!-- SeqIndT1 + SeqIndT2 should = IndicatorOnTime -->
    <Constant name="SeqBrakeT1" value="0.3" />
    <Constant name="SeqBrakeT2" value="0.6" />

    <!-- Offset_BrakeLightAmount -->
    <LightController output="Offset_BrakeLightAmount" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="Brake" />
        </Output>
    </LightController>

    <!-- Offset_ReverseLightAmount -->
    <LightController output="Offset_ReverseLightAmount" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="Reverse" />
        </Output>
    </LightController>

    <!-- Offset_DoorOpen -->

    <!-- Offset_EngineStart -->
    <LightController output="Offset_EngineStart" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="Engine" />
        </Output>
    </LightController>

    <!-- Offset_HeadlightAmount -->
    <LightController output="Offset_HeadlightAmount" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="Headlight" />
        </Output>
    </LightController>

    <!-- Offset_ShiftLightAmount -->

    <!-- Offset_DayTimeRLAmount -->
    <LightController output="Offset_DayTimeRLAmount" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="DayTimeRL" />
        </Output>
    </LightController>

    <!-- Offset_RemoteUnlock -->

    <!-- Offset_HighBeamAmount -->
    <LightController output="Offset_HighBeamAmount" slew="0.0">
        <Output>
            <Instruction op="mulc" d="t0" p0="Headlight" c="1.0" />
            <Instruction op="mulc" d="t1" p0="Highbeam" c="2.0" />
            <Instruction op="max" d="output" p0="t0" p1="t1" />
        </Output>
    </LightController>

    <!-- Offset_FogLightAmount -->
    <LightController output="Offset_FogLightAmount" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="Fog" />
        </Output>
    </LightController>

    <!-- Offset_SequentialBrakeLight -->

    <!-- Offset_RightTurnLightAmount -->
    <LightController output="Offset_RightTurnLightAmount" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorR" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="max" d="t0" p0="IndicatorR" p1="Hazard" />
            <Instruction op="mul" d="output" p0="t0" p1="seq0" />
        </Output>
    </LightController>

    <!-- Offset_LeftTurnLightAmount -->
    <LightController output="Offset_LeftTurnLightAmount" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorL" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="max" d="t0" p0="IndicatorL" p1="Hazard" />
            <Instruction op="mul" d="output" p0="t0" p1="seq0" />
        </Output>
    </LightController>

    <!-- Offset_HazardLightAmount -->
    <LightController output="Offset_HazardLightAmount" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mul" d="output" p0="Hazard" p1="seq0" />
        </Output>
    </LightController>

    <!-- Offset_OpenHood -->
    <!-- Offset_OpenTrunk -->
    <!-- Offset_RainDriving -->
    <!-- Offset_Position1 -->
    <!-- Offset_Position2 -->
    <!-- Offset_Position3 -->
    <!-- Offset_Differentiator -->

    <!-- Offset_ElectroLuminescentLivery -->
    <LightController output="Offset_ElectroLuminescentLivery" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="Headlight" />
        </Output>
    </LightController>

    <!-- Offset_ConvenienceLightAmount -->

    <!-- Offset_TaillightAmount -->
    <LightController output="Offset_TaillightAmount" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="Headlight" />
        </Output>
    </LightController>

    <!-- Offset_Brakepulse -->
    <LightController output="Offset_Brakepulse" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="BrakeAmount" level="0.9"/>
            <Step duration="0.1" value="1.0"/>
            <Step duration="0.1" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="sgc" d="t0" p0="BrakeAmount" c="0.9" />
            <Instruction op="sgc" d="t1" p0="Speed" c="1.0" />
            <Instruction op="mul" d="t0" p0="t0" p1="t1" />
            <Instruction op="lerp" d="output" p0="Brake" p1="seq0" p2="t0" />
        </Output>
    </LightController>

    <!-- Offset_SequentialBrake1 -->
    <LightController output="Offset_SequentialBrake1" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="Brake" />
        </Output>
    </LightController>

    <!-- Offset_SequentialBrake2 -->
    <LightController output="Offset_SequentialBrake2" slew="0.0">
        <Sequence output="seq0" loop="false">
            <Trigger input="Brake"/>
            <Step duration="SeqBrakeT1" value="0.0"/>
            <Step duration="1.0" value="1.0"/>
        </Sequence>
        <Output>
            <Instruction op="mul" d="output" p0="Brake" p1="seq0" />
        </Output>
    </LightController>

    <!-- Offset_SequentialBrake3 -->
    <LightController output="Offset_SequentialBrake3" slew="0.0">
        <Sequence output="seq0" loop="false">
            <Trigger input="Brake"/>
            <Step duration="SeqBrakeT2" value="0.0"/>
            <Step duration="1.0" value="1.0"/>
        </Sequence>
        <Output>
            <Instruction op="mul" d="output" p0="Brake" p1="seq0" />
        </Output>
    </LightController>

    <!-- Offset_HighBeamSepAmount -->
    <LightController output="Offset_HighBeamSepAmount" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="Highbeam" />
        </Output>
    </LightController>

    <!-- Offset_DayTimeRLAmountDay -->
    <LightController output="Offset_DayTimeRLAmountDay" slew="0.0">
        <Output>
            <Instruction op="slc" d="t0" p0="Headlight" c="0.5" />
            <Instruction op="mul" d="output" p0="DaytimeRL" p1="t0" />
        </Output>
    </LightController>

    <!-- Offset_DayTimeRLDim -->
    <LightController output="Offset_DayTimeRLDim" slew="0.0">
        <Output>
            <Instruction op="max" d="t0" p0="IndicatorL" p1="IndicatorR" />
            <Instruction op="max" d="t0" p0="t0" p1="Hazard" />
            <Instruction op="movc" d="t1" c="0.5" />
            <Instruction op="lerp" d="output" p0="DaytimeRL" p1="t1" p2="t0" />
        </Output>
    </LightController>

    <!-- Offset_SequentialIndicatorLeft1 -->
    <LightController output="Offset_SequentialIndicatorLeft1" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorL" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="max" d="t0" p0="IndicatorL" p1="Hazard" />
            <Instruction op="mul" d="output" p0="t0" p1="seq0" />
        </Output>
    </LightController>

    <!-- Offset_SequentialIndicatorLeft2 -->
    <LightController output="Offset_SequentialIndicatorLeft2" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorL" />
            <Trigger input="Hazard" />
            <Step duration="SeqIndT1" value="0.0"/>
            <Step duration="SeqIndT2" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="max" d="t0" p0="IndicatorL" p1="Hazard" />
            <Instruction op="mul" d="output" p0="t0" p1="seq0" />
        </Output>
    </LightController>

    <!-- Offset_SequentialIndicatorLeft3 -->
    <LightController output="Offset_SequentialIndicatorLeft3" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorL" />
            <Trigger input="Hazard" />
            <Step duration="SeqIndT2" value="0.0"/>
            <Step duration="SeqIndT1" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="max" d="t0" p0="IndicatorL" p1="Hazard" />
            <Instruction op="mul" d="output" p0="t0" p1="seq0" />
        </Output>
    </LightController>

    <!-- Offset_SequentialIndicatorRight1 -->
    <LightController output="Offset_SequentialIndicatorRight1" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorR" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="max" d="t0" p0="IndicatorR" p1="Hazard" />
            <Instruction op="mul" d="output" p0="t0" p1="seq0" />
        </Output>
    </LightController>

    <!-- Offset_SequentialIndicatorRight2 -->
    <LightController output="Offset_SequentialIndicatorRight2" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorR" />
            <Trigger input="Hazard" />
            <Step duration="SeqIndT1" value="0.0"/>
            <Step duration="SeqIndT2" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="max" d="t0" p0="IndicatorR" p1="Hazard" />
            <Instruction op="mul" d="output" p0="t0" p1="seq0" />
        </Output>
    </LightController>

    <!-- Offset_SequentialIndicatorRight3 -->
    <LightController output="Offset_SequentialIndicatorRight3" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorR" />
            <Trigger input="Hazard" />
            <Step duration="SeqIndT2" value="0.0"/>
            <Step duration="SeqIndT1" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="max" d="t0" p0="IndicatorR" p1="Hazard" />
            <Instruction op="mul" d="output" p0="t0" p1="seq0" />
        </Output>
    </LightController>

    <!-- Offset_SidelightAmount -->
    <LightController output="Offset_SidelightAmount" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="Sidelight" />
        </Output>
    </LightController>

    <!-- Offset_Numberplatelight -->
    <LightController output="Offset_Numberplatelight" slew="0.0">
        <Output>
            <Instruction op="max" d="t0" p0="Sidelight" p1="Headlight" />
            <Instruction op="mulc" d="output" p0="t0" c="0.5" />
        </Output>
    </LightController>

    <!-- Offset_FogLightRearAmount -->
    <LightController output="Offset_FogLightRearAmount" slew="0.0">
        <Output>
            <Instruction op="mov" d="output" p0="Fog" />
        </Output>
    </LightController>

    <!-- Offset_LightsFlashingFrequency1 -->
    <LightController output="Offset_LightsFlashingFrequency1" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="Engine" />
            <Step duration="0.066" value="1.0"/>
            <Step duration="0.033" value="0.0"/>
        </Sequence>
        <Sequence output="seq1" loop="true">
            <Trigger input="Engine" />
            <Step duration="0.5" value="1.0"/>
            <Step duration="0.5" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mul" d="t0" p0="seq0" p1="seq1" />
            <Instruction op="mul" d="output" p0="t0" p1="Engine" />
        </Output>
    </LightController>

    <!-- Offset_LightsFlashingFrequency2 -->
    <LightController output="Offset_LightsFlashingFrequency2" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="Engine" />
            <Step duration="0.066" value="1.0"/>
            <Step duration="0.033" value="0.0"/>
        </Sequence>
        <Sequence output="seq1" loop="true">
            <Trigger input="Engine" />
            <Step duration="0.5" value="0.0"/>
            <Step duration="0.5" value="1.0"/>
        </Sequence>
        <Output>
            <Instruction op="mul" d="t0" p0="seq0" p1="seq1" />
            <Instruction op="mul" d="output" p0="t0" p1="Engine" />
        </Output>
    </LightController>

    <!-- Offset_LightsFlashingFrequency3 -->
    <LightController output="Offset_LightsFlashingFrequency3" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="Engine" />
            <Step duration="0.5" value="1.0"/>
            <Step duration="0.5" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mul" d="output" p0="seq0" p1="Engine" />
        </Output>
    </LightController>

    <!-- Offset_LightsFlashingFrequency4 -->
    <LightController output="Offset_LightsFlashingFrequency4" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="Engine" />
            <Step duration="0.5" value="0.0"/>
            <Step duration="0.5" value="1.0"/>
        </Sequence>
        <Output>
            <Instruction op="mul" d="output" p0="seq0" p1="Engine" />
        </Output>
    </LightController>

    <!-- Offset_BrakeIndicatorLeft -->
    <LightController output="Offset_BrakeIndicatorLeft" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorL" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="max" d="t0" p0="IndicatorL" p1="Hazard" />
            <Instruction op="lerp" d="output" p0="Brake" p1="seq0" p2="t0" />
        </Output>
    </LightController>

    <!-- Offset_BrakeIndicatorRight -->
    <LightController output="Offset_BrakeIndicatorRight" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorR" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="max" d="t0" p0="IndicatorR" p1="Hazard" />
            <Instruction op="lerp" d="output" p0="Brake" p1="seq0" p2="t0" />
        </Output>
    </LightController>

    <!-- Offset_BrakeReverse -->
    <LightController output="Offset_BrakeReverse" slew="0.0">
        <Output>
            <Instruction op="max" d="output" p0="Brake" p1="Reverse" />
        </Output>
    </LightController>

    <!-- Offset_BrakeSeqIndicatorLeft -->
    <LightController output="Offset_BrakeSeqIndicatorLeft" slew="0.0">
        <Sequence output="seq0" loop="false">
            <Trigger input="Brake"/>
            <Step duration="SeqBrakeT2" value="0.0"/>
            <Step duration="1.0" value="1.0"/>
        </Sequence>
        <Sequence output="seq1" loop="true">
            <Trigger input="IndicatorL" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mul" d="t0" p0="Brake" p1="seq0" />
            <Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq1" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_BrakeSeqIndicatorRight -->
    <LightController output="Offset_BrakeSeqIndicatorRight" slew="0.0">
        <Sequence output="seq0" loop="false">
            <Trigger input="Brake"/>
            <Step duration="SeqBrakeT2" value="0.0"/>
            <Step duration="1.0" value="1.0"/>
        </Sequence>
        <Sequence output="seq1" loop="true">
            <Trigger input="IndicatorR" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mul" d="t0" p0="Brake" p1="seq0" />
            <Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq1" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_BrakeTailIndicatorLeft -->
    <LightController output="Offset_BrakeTailIndicatorLeft" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorL" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mulc" d="t0" p0="Headlight" c="0.5" />
            <Instruction op="max" d="t0" p0="t0" p1="Brake" />
            <Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq0" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_BrakeTailIndicatorRight -->
    <LightController output="Offset_BrakeTailIndicatorRight" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorR" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mulc" d="t0" p0="Headlight" c="0.5" />
            <Instruction op="max" d="t0" p0="t0" p1="Brake" />
            <Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq0" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_DRLBrake -->
    <LightController output="Offset_DRLBrake" slew="0.0">
        <Output>
            <Instruction op="mulc" d="t0" p0="DaytimeRL" c="0.5" />
            <Instruction op="mulc" d="t1" p0="Brake" c="1.0" />
            <Instruction op="max" d="output" p0="t0" p1="t1" />
        </Output>
    </LightController>

    <!-- Offset_DRLBrakeIndicatorLeft -->
    <LightController output="Offset_DRLBrakeIndicatorLeft" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorL" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mulc" d="t0" p0="DaytimeRL" c="0.5" />
            <Instruction op="max" d="t0" p0="t0" p1="Brake" />
            <Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq0" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_DRLBrakeIndicatorRight -->
    <LightController output="Offset_DRLBrakeIndicatorRight" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorR" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mulc" d="t0" p0="DaytimeRL" c="0.5" />
            <Instruction op="max" d="t0" p0="t0" p1="Brake" />
            <Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq0" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_DRLIndicatorLeft -->
    <LightController output="Offset_DRLIndicatorLeft" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorL" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mulc" d="t0" p0="DaytimeRL" c="0.5" />
            <Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq0" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_DRLIndicatorRight -->
    <LightController output="Offset_DRLIndicatorRight" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorR" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mulc" d="t0" p0="DaytimeRL" c="0.5" />
            <Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq0" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_SidelightIndicatorBrakeLeft -->
    <LightController output="Offset_SidelightIndicatorBrakeLeft" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorL" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mulc" d="t0" p0="Sidelight" c="0.5" />
            <Instruction op="max" d="t0" p0="t0" p1="Brake" />
            <Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq0" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_SidelightIndicatorBrakeRight -->
    <LightController output="Offset_SidelightIndicatorBrakeRight" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorR" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mulc" d="t0" p0="Sidelight" c="0.5" />
            <Instruction op="max" d="t0" p0="t0" p1="Brake" />
            <Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq0" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_SidelightIndicatorLeft -->
    <LightController output="Offset_SidelightIndicatorLeft" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorL" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mulc" d="t0" p0="Sidelight" c="0.5" />
            <Instruction op="max" d="t1" p0="IndicatorL" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq0" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_SidelightIndicatorRight -->
    <LightController output="Offset_SidelightIndicatorRight" slew="0.0">
        <Sequence output="seq0" loop="true">
            <Trigger input="IndicatorR" />
            <Trigger input="Hazard" />
            <Step duration="IndicatorOnTime" value="1.0"/>
            <Step duration="IndicatorOffTime" value="0.0"/>
        </Sequence>
        <Output>
            <Instruction op="mulc" d="t0" p0="Sidelight" c="0.5" />
            <Instruction op="max" d="t1" p0="IndicatorR" p1="Hazard" />
            <Instruction op="mul" d="t2" p0="t1" p1="seq0" />
            <Instruction op="lerp" d="output" p0="t0" p1="t2" p2="t1" />
        </Output>
    </LightController>

    <!-- Offset_TailBrakeLight -->
    <LightController output="Offset_TailBrakeLight" slew="0.0">
        <Output>
            <Instruction op="mulc" d="t0" p0="Headlight" c="0.125" />
            <Instruction op="mulc" d="t1" p0="Brake" c="1.0" />
            <Instruction op="max" d="output" p0="t0" p1="t1" />
        </Output>
    </LightController>
	
    <!-- Offset_HighHeadLightAmount -->
    <LightController output="Offset_HighHeadLightAmount" slew="0.0">
        <Output>
            <Instruction op="mulc" d="t0" p0="Headlight" c="1.0" />
            <Instruction op="mulc" d="t1" p0="Highbeam" c="1.5" />
            <Instruction op="max" d="output" p0="t0" p1="t1" />
        </Output>
    </LightController>
	
</LightControllers>
