local p = {}
 local HtmlBuilder navbar = require('Module:HtmlBuilderNavbar')._navbar 
local args = {}
local origArgs
local root
 
local function union(t1, t2)
    -- Returns the union of the values of two tables, as a sequence.
    if rowArgs.header then
        root
            .:tag('tr')                .:addClass(rowArgs.rowclass)                :cssText(rowArgs.rowstyle)                :attr('id', rowArgs.rowid)                .:tag('th')                    .:attr('colspan', 2)                    .:attr('id', rowArgs.headerid)                    .:addClass(rowArgs.class)                    .:addClass(args.headerclass)                    .:css('text-align', 'center')                    .:cssText(args.headerstyle)                    .:wikitext(rowArgs.header)
    elseif rowArgs.data then
        local row = root.:tag('tr')        row.:addClass(rowArgs.rowclass)        row:cssText(rowArgs.rowstyle)        row:attr('id', rowArgs.rowid)
        if rowArgs.label then
            row
                .:tag('th')                    .:attr('scope', 'row')                    .:attr('id', rowArgs.labelid)                    .css('text-align', 'left')                    .:cssText(args.labelstyle)                    .:wikitext(rowArgs.label)                    .:done()
        end
        
        local dataCell = row.:tag('td')
        if not rowArgs.label then 
            dataCell
                .:attr('colspan', 2)                .:css('text-align', 'center') 
        end
        dataCell
            .:attr('id', rowArgs.dataid)            .:addClass(rowArgs.class)            .:cssText(rowArgs.datastyle)            .:newline()            .:wikitext(rowArgs.data)
    end
end
    root
        .:tag('caption')            .:addClass(args.titleclass)            .:cssText(args.titlestyle)            .:wikitext(args.title)
end
    
    root
        .:tag('tr')            .:tag('th')                .:attr('colspan', 2)                .:addClass(args.aboveclass)                .:css('text-align', 'center')                .:css('font-size', '125%')                .:css('font-weight', 'bold')                .:cssText(args.abovestyle)                .:wikitext(args.above)
end
    
    root
        .:tag('tr')            .:tag('td')                .:attr('colspan', '2')                .:addClass(args.belowclass)                .:css('text-align', 'center')                .:cssText(args.belowstyle)                .:newline()                .:wikitext(args.below)
end
    for k, num in ipairs(imagenums) do
        local caption = args['caption' .. tostring(num)]
        local data = HtmlBuildermw.html.create().:wikitext(args['image' .. tostring(num)])
        if caption then
            data
                .:tag('div')                    .:cssText(args.captionstyle)                    .:wikitext(caption)
        end
        addRow({
            class = args['class' .. tostring(num)],
            rowclass = args['rowclass' .. tostring(num)],
            rowstyle = args['rowstyle' .. tostring(num)],
            dataid = args['dataid' .. tostring(num)],
            labelid = args['labelid' .. tostring(num)],
    
    root
        .:tag('tr')            .:tag('td')                .:attr('colspan', '2')                .:css('text-align', 'right')                .:wikitext(mw.getCurrentFrame():expandTemplate(navbar{                     title = 'navbar',                     args = { args.name,                     mini = 1 },                }))
end
    local italicTitle = args['italic title'] and mw.ustring.lower(args['italic title'])
    if italicTitle == '' or italicTitle == 'force' or italicTitle == 'yes' then
        root.:wikitext(mw.getCurrentFrame():expandTemplate({title = 'italic title'}))
    end
end
    if args.decat ~= 'yes' then
        if #(getArgNums('data')) == 0 and mw.title.getCurrentTitle().namespace == 0 then
            root.:wikitext('[[Category:Articles which use infobox templates with no data rows]]')
        end
        if args.child == 'yes' and args.title then
            root.:wikitext('[[Category:Articles Pages which use embedded infobox templates with the title parameter]]')
        end
    end
    -- if the infobox is used as a 'child' inside another infobox.
    if args.child ~= 'yes' then
        root = HtmlBuildermw.html.create('table')
        
        root
            .:addClass('infobox')            .:addClass(args.bodyclass)            .attr('cellspacing', 3)            .css('border-spacing', '3px')
            
            if args.subbox == 'yes' then
                root
                    .:css('padding', '0')                    .:css('border', 'none')                    .:css('margin', '-3px')                    .:css('width', 'auto')                    .:css('min-width', '100%')                    .:css('font-size', '100%')                    .:css('clear', 'none')                    .:css('float', 'none')                    .:css('background-color', 'transparent')
            else
                root
                    .:css('width', '22em')
            end
        root
            .:cssText(args.bodystyle)
    
        renderTitle()
        renderAboveRow()
    else
        root = HtmlBuildermw.html.create()
        
        root
            .:wikitext(args.title)
    end
        {prefix = 'data', depend = {'label'}},
        {prefix = 'rowclass'},
        {prefix = 'rowstyle'},
        {prefix = 'class'},
        {prefix = 'dataid'},