-- এই মডিউলটি পার্শ্বদণ্ড ক্রীড়া অনুষ্ঠানের জন্য ব্যবহার করা হয় -- এই মডিউলটি মডিউল:Sidebar থেকে সরাসরি নেওয়া কোড ব্যবহার করে তৈরি করা হয়েছে  require('মডিউল:No globals')  local p = {}  local getArgs = require('মডিউল:Arguments').getArgs  function p.sidebar(frame, args)  	if not args then 		args = getArgs(frame) 	end 		 	local root = mw.html.create()  	root = root 		:tag('table') 		:addClass('sidebar-games-events') 		:addClass(args.float == 'left' and 'sidebar-games-events-left' or nil) 		:addClass(args.float == 'none' and 'sidebar-games-events-none' or nil) 		:addClass('sidebar') 		:addClass('nomobile') 		:addClass(args.class or 'hlist') 		:css('width', args.width or nil) 		:css('max-width', args.maxwidth or nil)  	-- সারি গণনা এবং কলাম গণনা 	local cols = 1 	local colindex = {a = '2', b = '3', c = '4', d = '5', e = '6'} 	local lets = {'a', 'b', 'c', 'd', 'e'} 	local rowNums = {} 	local subevents = 0 	local hasevents = false  	for k, v in pairs(args) do 		k =  .. k 		 		-- সারি অনুসন্ধান 		local num = k:match('^event(%d+)$')  			or k:match('^image(%d+)$') 			or k:match('^title(%d+)$') 			or k:match('^type(%d+)[a-e]$') 			or k:match('^event(%d+)%.%d+$') 			or k:match('^results(%d+)%.%d+[a-e]?$') 		if num then table.insert(rowNums, tonumber(num)) end 		 		-- কলাম সংখ্যা অনুসন্ধান 		if k:match('^results%d+%.(%d+)$') then 			cols = (2 > cols) and 2 or cols 		end 		 		-- লেট-এর উপর ভিত্তি করে কলাম সংখ্যা অনুসন্ধান 		local let = k:match('^results%d+%.%d+([a-e])$') 			or k:match('^type%d+([a-e])$') 		if let and colindex[let] then 			local n = tonumber(colindex[let]) 			cols = (n > cols) and n or cols 		end 		 		-- উপ-অনুষ্ঠান অনুসন্ধান 		local subnum = k:match('^results%d+%.(%d+)[a-e]?$') 			or k:match('^event%d+%.(%d+)$') 		if subnum then 			subnum = tonumber(subnum) 			subevents = (subnum > subevents) and subnum or subevents 		end 		 		-- অনুষ্ঠান শনাক্ত করুন 		if k:match('^(event%d+%.%d+)$') then 			hasevents = true 		end 	end 	-- তালিকা থেকে নকল অপসারণ করুন (যেমন event3 এবং image3 উভয়ই নির্দিষ্ট করা হলে 3 নকল করা হবে) 	table.sort(rowNums) 	for i = #rowNums, 1, -1 do 		if rowNums[i] == rowNums[i - 1] then 			table.remove(rowNums, i) 		end 	end 	 	-- সারিবদ্ধ 	local alignevents = nil 	if args.alignevents and args.alignevents == 'right' then 		alignevents = 'event-r' 	end 	local alignresults = nil 	if args.alignresults and args.alignresults == 'right' then 		alignresults = 'result-r' 	elseif args.alignresults and args.alignresults == 'left' then 		alignresults = 'result-l' 	end  	-- শীর্ষ স্তরের শিরোনাম যোগ করুন 	if args.event or args.title then 		local t = args.event 		if args.title then 			t = args.title 		elseif args.games then 			t ='' .. args.games .. '' 				.. 'ে ' .. '' .. args.event .. '' 		end 		local cell = root:tag('tr'):tag('th') 		cell 			:addClass('sidebar-games-events-title') 			:attr('colspan', cols) 		if args.imageright then 			local d = cell:tag('div') 				:addClass('sidebar-games-events-ir-cont') 			d:tag('div') 				:addClass('sidebar-games-events-ir-title') 				:wikitext(t) 			d:tag('div') 				:addClass('sidebar-games-events-ir') 				:wikitext(args.imageright) 		else 			cell:wikitext(t) 		end 	end  	if args.image then 		local imageCell = root:tag('tr'):tag('td')  		imageCell 			:addClass('sidebar-games-events-image') 			:attr('colspan', cols) 			:wikitext(args.image)  		if args.caption then 			imageCell 				:tag('div') 					:addClass('sidebar-games-events-caption') 					:wikitext(args.caption) 		end 	end  	if args.above then 		local cell = root:tag('tr'):tag('td') 		cell:attr('colspan', cols) 			:wikitext(args.above) 	end 	 	-- সারি যোগ করা শুরু 	for i, num in ipairs(rowNums) do 		local heading = nil 		local event = args['event' .. num] 		local image = args['image' .. num] 		local title = args['title' .. num] 		if title then 			root:tag('tr') 					:tag('th') 						:addClass('event-title') 						:attr('colspan', cols) 						:wikitext(title) 		end 		 		if event and image then 			heading = event .. '' .. image 		elseif event then 			heading = event 		elseif image then 			heading = image 		end 		 		if heading then 			root 				:tag('tr') 					:tag('th') 						:addClass('sidebar-games-events-heading') 						:attr('colspan', cols) 						:wikitext(heading) 		end  		local showtypes = false 		for j, let in ipairs(lets) do 			if j < cols then 				if args['type' .. num .. let] then 					showtypes = true 				end 			end 		end 		if showtypes == true then 			local row = root:tag('tr') 			row:tag('th'):addClass((hasevents == false) and 'no-event' or nil) 			for j, let in ipairs(lets) do 				if j < cols then 					local t = args['type' .. num .. let] 					local cell = row:tag('th') 					if t then 						cell 							:addClass('type-let') 							:css('width', (cols > 2) and tostring(math.floor(100/(cols-1))) .. '%' or nil) 							:wikitext(t) 					end 				end 			end 		end  		for k=1,subevents do 			local hasresults = false 			if args['results' .. num .. '.' .. k] then 				hasresults = true 			else 				for j, let in ipairs(lets) do 					if j < cols then 						if args['results' .. num .. '.' .. k .. let] then 							hasresults = true 						end 					end 				end 			end 	 			if hasresults then 				local row = root:tag('tr') 				local cell = row:tag('th'):addClass((hasevents == false) and 'no-event' or nil) 				local t = args['event' .. num .. '.' .. k] 				local border = args['border' .. num .. '.' .. k]  and 'erl-border' or nil 				if t then 					cell 						:addClass('event') 						:addClass(alignevents) 						:addClass(border) 						:wikitext(t) 				end 				if args['results' .. num .. '.' .. k] then 					row:tag('td') 							:addClass(border) 							:addClass(alignresults) 							:attr('colspan', cols - 1) 							:newline() -- বুলেট-পয়েন্টগুলো কাজ করার জন্য প্রয়োজনীয় নতুন লাইন 							:wikitext(args['results' .. num .. '.' .. k]) 				else 					for j, let in ipairs(lets) do 						if j < cols then 							t = args['results' .. num .. '.' .. k .. let] 							row:tag('td') 								:addClass(border) 								:addClass(alignresults) 								:wikitext(t) 						end 					end 				end 			end 		end 	end 		 	if args.below then 		root 			:tag('tr') 				:tag('td') 					:addClass(args.belowclass) 					:attr('colspan', cols) 					:cssText(args.belowstyle) 					:wikitext(args.below) 	end  	if args.prev or args.next then 		local row = root:tag('tr'):tag('td') 			:addClass('sidebar-games-events-prevnext') 			:attr('colspan', cols) 				:tag('div') 		row:tag('div') 			:addClass('sidebar-games-events-prev') 			:wikitext(args.prev) 		row:tag('div') 			:addClass('sidebar-games-events-next') 			:wikitext(args.next) 	end  	if args.navbar ~= 'none' and args.navbar ~= 'off' and 		(args.name or frame:getParent():getTitle():gsub('/sandbox$', ) ~= 'টেমপ্লেট:Sidebar games events') then 		root 			:tag('tr') 				:tag('td') 					:addClass('sidebar-games-events-navbar') 					:attr('colspan', cols) 					:wikitext(require('Module:Navbar')._navbar{ 						args.name, 						mini = 1, 						fontstyle = args.navbarfontstyle 					}) 	end 	 	if mw.title.getCurrentTitle().namespace == 10 and (args.name ~= mw.title.getCurrentTitle().text) and not (mw.title.getCurrentTitle().text:match('Sidebar games events')) then     	root:wikitext("বিষয়শ্রেণী:সঠিক নাম ব্যতীত sidebar games events ব্যবহৃত টেমপ্লেট") 	end 	 	return mw.getCurrentFrame():extensionTag{ 		name = 'templatestyles', args = { src = 'মডিউল:Sidebar games events/styles.css' } 	} .. tostring(root) end return p