li:pcb-rnd-conf-v1 {
	ha:overwrite {
		ha:plugins {
			ha:cam {
				li:jobs {
					doc_png {
						desc export top and bottom copper and silk in 600 DPI pngs
						plugin png --dpi 600
						write %base%.top.png=top-copper,top-silk
						write %base%.bottom.png=[flip_y] bottom-copper,bottom-silk
					}
					doc_eps {
						desc export top and bottom copper and silk in colorful embedded ps
						plugin eps --enable-flip
						write %base%.top.eps=top-copper,top-silk
						write %base%.bottom.eps=[flip_y] bottom-copper,bottom-silk
					}
					doc_ps {
						desc export top and bottom copper (faded) and silk (solid) in black&white ps
						plugin ps
						write %base%.top.ps=top-copper(faded),top-silk
						write %base%.bottom.ps=[flip_y] bottom-copper(faded),bottom-silk
					}
					doc_pnp_ps {
						desc export top and bottom pnp helper doc in black&white ps
						plugin ps
						write %base%.top_pnp.ps=top-copper(faded),top-doc(purpose=pnp)
						write %base%.bottom_pnp.ps=[flip_y] bottom-copper(faded),bottom-doc(purpose=pnp)
					}
					doc_pnp_gerber {
						desc export top and bottom pnp helper doc in gerber layers
						plugin gerber
						write %base%.top_pnp.gbr=top-doc(purpose=pnp)
						write %base%.bottom_pnp.gbr=bottom-doc(purpose=pnp)
					}
					{gerber:eagle} {
						desc gerber export compatible with Eagle's gerber file names
						plugin gerber --all-layers
						write %base%.cmp=top-copper
						write %base%.sol=bottom-copper
						write %base%.ly%top_offs+1%=intern-copper
						write %base%.plc=top-silk
						write %base%.pls=bottom-silk
						write %base%.stc=top-mask
						write %base%.sts=bottom-mask
						write %base%.crc=top-paste
						write %base%.crs=bottom-paste
						write %base%.oln=boundary
						write %base%.ast=top-virtual(purpose=assy),top-doc(purpose=assy)
						write %base%.asb=bottom-virtual(purpose=assy),bottom-doc(purpose=assy)
						write %base%.fab=virtual(purpose=fab),top-doc(purpose=fab)
						plugin excellon
						write %base%.drd=[okempty] virtual(purpose=pdrill)
						write %base%.dru=[okempty] virtual(purpose=udrill)
					}
					{gerber:fixed_topbottom} {
						desc gerber export almost compatible with old 'fixed' naming style, with special casing top and bottom copper
						plugin gerber --all-layers
						write %base%.top.gbr=top-copper
						write %base%.bottom.gbr=bottom-copper
						write %base%.group%top_offs%=intern-copper
						write %base%.topsilk.gbr=top-silk
						write %base%.bottomsilk.gbr=bottom-silk
						write %base%.topmask.gbr=top-mask
						write %base%.bottommask.gbr=bottom-mask
						write %base%.toppaste.gbr=top-paste
						write %base%.bottompaste.gbr=bottom-paste
						write %base%.outline.gbr=boundary
						write %base%.topassy.gbr=top-virtual(purpose=assy),top-doc(purpose=assy)
						write %base%.bottomassy.gbr=bottom-virtual(purpose=assy),bottom-doc(purpose=assy)
						write %base%.fab.gbr=virtual(purpose=fab),top-doc(purpose=fab)
						plugin excellon
						write %base%.plated-drill.cnc=[okempty] virtual(purpose=pdrill)
						write %base%.unplated-drill.cnc=[okempty] virtual(purpose=udrill)
						write %base%.plated-slot.cnc=[okempty] mech(purpose=proute)
						write %base%.unplated-slot.cnc=[okempty] mech(purpose=uroute)
					}
					{gerber:fixed} {
						desc gerber export almost compatible with old 'fixed' - top and bottom copper are not special cased but numbered from group0 (top)
						plugin gerber --all-layers
						write %base%.group%top_offs%.gbr=top-copper
						write %base%.group%top_offs%.gbr=bottom-copper
						write %base%.group%top_offs%.gbr=intern-copper
						write %base%.topsilk.gbr=top-silk
						write %base%.bottomsilk.gbr=bottom-silk
						write %base%.topmask.gbr=top-mask
						write %base%.bottommask.gbr=bottom-mask
						write %base%.toppaste.gbr=top-paste
						write %base%.bottompaste.gbr=bottom-paste
						write %base%.outline.gbr=boundary
						write %base%.topassy.gbr=top-virtual(purpose=assy),top-doc(purpose=assy)
						write %base%.bottomassy.gbr=bottom-virtual(purpose=assy),bottom-doc(purpose=assy)
						write %base%.fab.gbr=virtual(purpose=fab),top-doc(purpose=fab)
						plugin excellon
						write %base%.plated-drill.cnc=[okempty] virtual(purpose=pdrill)
						write %base%.unplated-drill.cnc=[okempty] virtual(purpose=udrill)
						write %base%.plated-slot.cnc=[okempty] mech(purpose=proute)
						write %base%.unplated-slot.cnc=[okempty] mech(purpose=uroute)
					}
					{gerber:universal} {
						desc gerber export compatible with old 'univeral' include group name and suffix with eagle-like extensions
						plugin gerber --all-layers
						write %base%.%name%.gtl=top-copper
						write %base%.%name%.gbl=bottom-copper
						write %base%.%name%.g%top_offs%=intern-copper
						write %base%.%name%.gto=top-silk
						write %base%.%name%.gbo=bottom-silk
						write %base%.%name%.gts=top-mask
						write %base%.%name%.gbs=bottom-mask
						write %base%.%name%.gtp=top-paste
						write %base%.%name%.gbp=bottom-paste
						write %base%.%name%.gko=boundary
						write %base%.fab=virtual(purpose=fab),top-doc(purpose=fab)
						plugin excellon
						write %base%.drl=[okempty] virtual(purpose=pdrill)
						write %base%_NPTH.drl=[okempty] virtual(purpose=udrill)
					}
					{gerber:OSH_Park} {
						desc gerber export compatible with OSH Park's recommendations
						plugin gerber --all-layers
						write %base%.gtl=top-copper
						write %base%.gbl=bottom-copper
						write %base%.g%top_offs+1%l=intern-copper
						write %base%.gto=top-silk
						write %base%.gbo=bottom-silk
						write %base%.gts=top-mask
						write %base%.gbs=bottom-mask
						write %base%.gtp=top-paste
						write %base%.gbp=bottom-paste
						write %base%.gko=boundary
						write %base%.ast=top-virtual(purpose=assy),top-doc(purpose=assy)
						write %base%.asb=bottom-virtual(purpose=assy),bottom-doc(purpose=assy)
						write %base%.fab=virtual(purpose=fab),top-doc(purpose=fab)
						plugin excellon
						write %base%.xln=[okempty] virtual(purpose=pdrill),virtual(purpose=udrill)
					}
					{gerber:Seeed} {
						desc gerber export compatible with Seeed Studio's recommendations
						plugin gerber
						write %base%.GTL=top-copper
						write %base%.GBL=bottom-copper
						write %base%.GL%top_offs+1%=intern-copper
						write %base%.GTO=top-silk
						write %base%.GBO=bottom-silk
						write %base%.GTS=top-mask
						write %base%.GBS=bottom-mask
						write %base%.GTP=top-paste
						write %base%.GBP=bottom-paste
						write %base%.GML=boundary,mech(purpose=uroute),mech(purpose=proute)
						write %base%.AST=top-virtual(purpose=assy),top-doc(purpose=assy)
						write %base%.ASB=bottom-virtual(purpose=assy),bottom-doc(purpose=assy)
						write %base%.FAB=virtual(purpose=fab),top-doc(purpose=fab)
						plugin excellon
						write %base%.TXT=[okempty] virtual(purpose=pdrill),virtual(purpose=udrill)
					}
# JLC job tested and contributed by keantoken
					{gerber:JLC_PCB} {
						desc gerber export for JLC PCB's filename convention
						plugin gerber
						write %base%.gtl=top-copper
						write %base%.gbl=bottom-copper
						write %base%.g%top_offs+1%l=intern-copper
						write %base%.gto=top-silk
						write %base%.gbo=bottom-silk
						write %base%.gts=top-mask
						write %base%.gbs=bottom-mask
						write %base%.gtp=top-paste
						write %base%.gbp=bottom-paste
						write %base%.gko=boundary
						write %base%.ast=top-virtual(purpose=assy),top-doc(purpose=assy)
						write %base%.asb=bottom-virtual(purpose=assy),bottom-doc(purpose=assy)
						write %base%.fab=virtual(purpose=fab),top-doc(purpose=fab)
						plugin excellon
						write %base%.xln=[okempty] virtual(purpose=pdrill),virtual(purpose=udrill),mech(purpose=proute),mech(purpose=uroute)
					}

					{asm:JLC_PCB} {
						desc XY+BoM export for JLC PCB's assembly service
						plugin XY --format JLC --vendor jlc --xy-unit mm --normalize-angles 
						write %base%.xy.csv
						plugin bom --format JLC
						write %base%.bom.csv
					}

# Advanced Circuits, reported by Bdale (untested); same as jlc but force exporting fab
					{gerber:advanced_circuits} {
						desc gerber export for Advanced Circuits
						plugin gerber
						write %base%.gtl=top-copper
						write %base%.gbl=bottom-copper
						write %base%.g%top_offs+1%l=intern-copper
						write %base%.gto=top-silk
						write %base%.gbo=bottom-silk
						write %base%.gts=top-mask
						write %base%.gbs=bottom-mask
						write %base%.gtp=top-paste
						write %base%.gbp=bottom-paste
						write %base%.gko=boundary
						write %base%.ast=top-virtual(purpose=assy),top-doc(purpose=assy)
						write %base%.asb=bottom-virtual(purpose=assy),bottom-doc(purpose=assy)
						write %base%.fab=[force_nonempty] virtual(purpose=fab),top-doc(purpose=fab)
						plugin excellon
						write %base%.xln=[okempty] virtual(purpose=pdrill),virtual(purpose=udrill),mech(purpose=proute),mech(purpose=uroute)
					}

# protel job tested and contributed by keantoken
					{gerber:protel} {
						desc gerber export for a filename convention similar to protel's
						plugin gerber
						write %base%.gtl=top-copper
						write %base%.gbl=bottom-copper
						write %base%.g%top_offs+1%l=intern-copper
						write %base%.gto=top-silk
						write %base%.gbo=bottom-silk
						write %base%.gts=top-mask
						write %base%.gbs=bottom-mask
						write %base%.gtp=top-paste
						write %base%.gbp=bottom-paste
						write %base%.gko=boundary
						write %base%.ast=top-virtual(purpose=assy),top-doc(purpose=assy)
						write %base%.asb=bottom-virtual(purpose=assy),bottom-doc(purpose=assy)
						write %base%.fab=virtual(purpose=fab),top-doc(purpose=fab)
						plugin excellon
						write %base%.xln=[okempty] virtual(purpose=pdrill),virtual(purpose=udrill)
					}

					{gerber:PCBWay} {
						desc gerber export for PCBWay's filename convention
						plugin gerber
						write %base%-copper_top_l1.gbr=top-copper
						write %base%-copper_bottom_l%top_offs+1%.gbr=bottom-copper
						write %base%-copper_innter_l%top_offs+1%.gbr=intern-copper
						write %base%-silkscreen_top.gbr=top-silk
						write %base%-silkscreen_bottom.gbr=bottom-silk
						write %base%-soldermask_top.gbr=top-mask
						write %base%-soldermask_bottom.gbr=bottom-mask
						write %base%-solderpaste_top.gbr=top-paste
						write %base%-solderpaste_bottom.gbr=bottom-paste
						write %base%-slot.gbr=mech(purpose=uroute),mech(purpose=proute)
						write %base%-profile.gbr=boundary
						plugin excellon
						write %base%-drills.xln=[okempty] virtual(purpose=pdrill),virtual(purpose=udrill)
					}

					{gerber:Elecrow} {
						desc gerber export for Elecrow's filename convention including unplated holes (Untested)
						plugin gerber
						write %base%.GTL=top-copper
						write %base%.GTS=top-mask
						write %base%.GTO=top-silk
						write %base%.GTP=top-paste
						write %base%.GBL=bottom-copper
						write %base%.GBS=bottom-mask
						write %base%.GBO=bottom-silk
						write %base%.GBP=bottom-paste
						write %base%.GML=boundary
						write %base%.FAB=virtual(purpose=fab),top-doc(purpose=fab)
						write %base%.GL%top_offs+1%=intern-copper
						plugin excellon
						write %base%.TXT=[okempty] virtual(purpose=pdrill)
						write %base%-NPTH.txt=[okempty] virtual(purpose=udrill)
					}

					{gerber:orcad} {
						desc gerber export compatible with Orcad's gerber file names
						plugin gerber --all-layers
						write %base%.top=top-copper
						write %base%.bot=bottom-copper
#						write %base%.ly%top_offs+1%=intern-copper
						write %base%.sst=top-silk
						write %base%.ssb=bottom-silk
						write %base%.smt=top-mask
						write %base%.smb=bottom-mask
#						write %base%.spt=top-paste
#						write %base%.spb=bottom-paste
						write %base%.fab=boundary
#						write %base%.ast=top-virtual(purpose=assy),top-doc(purpose=assy)
#						write %base%.asb=bottom-virtual(purpose=assy),bottom-doc(purpose=assy)
#						write %base%.fab.gbr=virtual(purpose=fab),top-doc(purpose=fab)
						plugin excellon
						write %base%.thruhole.tap=[okempty] virtual(purpose=pdrill)
						write %base%.thruhole-unplated.tap=[okempty] virtual(purpose=udrill)
					}
				}
			}
		}
	}
}
