'pinescript Undeclared identifier error (version2 to version4)

I'm considering reverting a code in the library from version 2 to version 3 and then back to version 4 with the pinescript robot tool. but I can't fix the error I got in this part. it says it is invalid for version 3.

line 18: Undeclared identifier `TriggerLineb`;
line 19: Undeclared identifier `TriggerLineb`;
line 19: Undeclared identifier `TriggerLinea`

Full code

//@version=3

study("breakout and swing",overlay=true)
res1 = input(title="Close Time Frame", type=resolution, defval="D")
cld=security(tickerid, res1, close[1])
opd=security(tickerid,res1, open[1])
hd=security(tickerid, res1, high[1])
ld=security(tickerid, res1, low[1])
tu=(cld +opd)/2 

ChanLength=input(40,"high/lowChannel barback")
UpperBand = highest( high, ChanLength ) 
LowerBand = lowest( low, ChanLength ) 


LowRef= iff(low <= LowerBand,highest(high,2) ,0)
HighRef =iff( high >= UpperBand,lowest(low,2),0)
TriggerLineb = LowRef ==0 and LowRef[1]!=0? max(highest(high,2),LowRef[1]) :HighRef==0 and HighRef[1]!=0?min(lowest(low,2),HighRef[1]):nz(TriggerLineb[1])
TriggerLinea = LowRef!=0 ? TriggerLineb[1]- 1.272 * ( TriggerLineb[1] - LowerBand[1] ):LowRef==0 and crossover(close,TriggerLineb )?LowerBand[1]+.7886* (  UpperBand[1]- LowerBand[1] ): HighRef!=0 ?1.272 * ( UpperBand[1] - TriggerLineb[1] )+TriggerLineb[1] : HighRef==0 and crossunder(close,TriggerLineb)?UpperBand[1]-.786* ( UpperBand[1] - LowerBand[1] ):nz(TriggerLinea[1])

plot( tu, "Breakout",color=white ,style=line,linewidth=2,transp=20) 


Solution 1:[1]

Starting from v3, you need to declare the variable first, then you can use it.

Change it to:

TriggerLineb = 0.0
TriggerLineb := LowRef ==0 and LowRef[1]!=0? max(highest(high,2),LowRef[1]) :HighRef==0 and HighRef[1]!=0?min(lowest(low,2),HighRef[1]):nz(TriggerLineb[1])
TriggerLinea = 0.0
TriggerLinea := LowRef!=0 ? TriggerLineb[1]- 1.272 * ( TriggerLineb[1] - LowerBand[1] ):LowRef==0 and crossover(close,TriggerLineb )?LowerBand[1]+.7886* (  UpperBand[1]- LowerBand[1] ): HighRef!=0 ?1.272 * ( UpperBand[1] - TriggerLineb[1] )+TriggerLineb[1] : HighRef==0 and crossunder(close,TriggerLineb)?UpperBand[1]-.786* ( UpperBand[1] - LowerBand[1] ):nz(TriggerLinea[1])

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 vitruvius