Модуль:Правоохоронний орган

{{i}} Документація модуля[створити]
local p = {}

require("Модуль:Функції для карток")

--головна функція
function p.main(frame)
	--аргументи передані до шаблону
	parent = frame:getParent();
	args = parent.args;
	
	--елемент Вікіданих
	item = mw.wikibase.getEntity(mw.wikibase.getEntityIdForCurrentPage());
	
	--змінні для конструювання таблиці
	default_image_size = "200x300px";
	section_header = "\n|-\n| style='background:#cde; text-align:center; font-weight:bold' colspan='2' | ";
	two_columns_cell = "\n|-\n| style='text-align:center' colspan='2' | ";
	caption = "\n|-\n| style='text-align:right; background:#eee; width:40%; font-weight:bold' | ";
	cell = "\n| style='width:60%;'| ";
	
	--дані із Вікіданих замість незаданих аргументів
	--назва
	if(ie(args['назва'])) then args['назва'] = mw.text.split(mw.title.getCurrentTitle().text, " %(")[1]; end
	
	--абревіатура
	if(ie(args['абревіатура'])) then args['абревіатура'] = '';
	else args['абревіатура'] = '<br/>('..args['абревіатура']..')'; end
	
	--мови оригіналу
	if(ie(args["оригінальна_назва"]) and item and item:getBestStatements('P1705')[1] and
	  item:getBestStatements('P1705')[1].mainsnak.datavalue.value.language~="uk") then
		args["оригінальна_назва"] = item:getBestStatements('P1705')[1].mainsnak.datavalue.value.text;
		args["мова_оригіналу"] = item:getBestStatements('P1705')[1].mainsnak.datavalue.value.language;
	end
	index = 1;
	original_names = {}
	while(not ie(args["оригінальна_назва"..ind(index)])) do
		indx = ind(index);
		if(ie(args["мова_оригіналу"..indx])) then 
			table.insert(original_names, "<br/>''"..args["оригінальна_назва"..indx].."''");
		else table.insert(original_names, "<br/>{{lang-"..args["мова_оригіналу"..indx]..'|'..
		  args["оригінальна_назва"..indx]..'}}'); end
		index = index+1;
	end
	
	--герб
	emblem = args['герб'];
	if(ie(args['герб']) and item and item:getBestStatements('P154')[1]) then
		args['герб'] = item:getBestStatements('P154')[1].mainsnak.datavalue.value;
	elseif(ie(args['герб']) and item and item:getBestStatements('P158')[1]) then
		args['герб'] = item:getBestStatements('P158')[1].mainsnak.datavalue.value;
	elseif(ie(args['герб']) and item and item:getBestStatements('P194')[1]) then
		args['герб'] = item:getBestStatements('P94')[1].mainsnak.datavalue.value;
	end

	if(ie(args['герб'])) then args['герб'] = '';
	else
		if(ie(args['розмір_герба'])) then args['розмір_герба'] = default_image_size; end
		if(ie(args['підпис_герба'])) then args['підпис_герба'] = '&nbsp;'; end
		args['герб'] = two_columns_cell..'[[Файл:'..args['герб']..'|'..args['розмір_герба']..']]'..
		  two_columns_cell..args['підпис_герба'];
	end
	
	--прапор
	flag = args['прапор']
	if(ie(args['прапор']) and item and item:getBestStatements('P41')[1]) then
		args['прапор'] = item:getBestStatements('P41')[1].mainsnak.datavalue.value; end
	if(ie(args['прапор'])) then args['прапор'] = '';
	else
		if(ie(args['розмір_прапора'])) then args['розмір_прапора'] = default_image_size; end
		if(ie(args['підпис_прапора'])) then args['підпис_прапора'] = '&nbsp;'; end
		args['прапор'] = two_columns_cell..'[[Файл:'..args['прапор']..'|'..args['розмір_прапора']..']]'..
		  two_columns_cell..args['підпис_прапора'];
	end
	
	--значок
	badge = args['значок'];
	if(ie(args['значок'])) then args['значок'] = '';
	else
		if(ie(args['розмір_значка'])) then args['розмір_значка'] = default_image_size; end
		if(ie(args['підпис_значка'])) then args['підпис_значка'] = '&nbsp;'; end
		args['значок'] = two_columns_cell..'[[Файл:'..args['значок']..'|'..args['розмір_значка']..']]'..
		  two_columns_cell..args['підпис_значка'];
	end
	
	--нашивка
	patch = args['нашивка'];
	if(ie(args['нашивка'])) then args['нашивка'] = '';
	else
		if(ie(args['розмір_нашивки'])) then args['розмір_нашивки'] = default_image_size; end
		if(ie(args['підпис_нашивки'])) then args['підпис_нашивки'] = '&nbsp;'; end
		args['нашивка'] = two_columns_cell..'[[Файл:'..args['нашивка']..'|'..args['розмір_нашивки']..']]'..
		  two_columns_cell..args['підпис_нашивки'];
	end
	
	--зображення
	if(ie(args["зображення"]) and item and item:getBestStatements('P18')[1]) then
		args["зображення"] = item:getBestStatements('P18')[1].mainsnak.datavalue.value;
		if(args['зображення']==emblem or args['зображення']==flag or 
		  args['зображення']==badge or args['зображення']==patch) then args["зображення"] = ''; end
	end
	index = 1;
	images = {}
	while(not ie(args["зображення"..ind(index)])) do
		indx = ind(index);
		if(ie(args['розмір'..indx])) then args['розмір'..indx] = default_image_size; end
		if(ie(args['підпис'..indx])) then args['підпис'..indx] = '&nbsp;'; end
		args["зображення"..indx] = two_columns_cell..'[[Файл:'..args["зображення"..indx]..'|'..
		  args['розмір'..indx]..']]'..two_columns_cell..args['підпис'..indx];
		table.insert(images, args["зображення"..indx]);
		index = index+1;
	end
	
	--тип
	if(ie(args["тип"]) and item and item:getBestStatements('P31')[1]) then
		args["тип"] = title_for(item:getBestStatements('P31')[1].mainsnak.datavalue.value.id); end
	if(ie(args['тип'])) then args['тип'] = '';
	else args['тип'] = caption..'Тип:'..cell..args['тип']; end
	
	--юрисдикція
	if(ie(args["юрисдикція"]) and item and item:getBestStatements('P17')[1]) then
		args["юрисдикція"] = title_for(item:getBestStatements('P17')[1].mainsnak.datavalue.value.id, true); end
	if(ie(args['юрисдикція'])) then args['юрисдикція'] = '';
	else args['юрисдикція'] = caption..'Юрисдикція:'..cell..args['юрисдикція']; end
	
	--площа юрисдикції
	if(ie(args['площа_юрисдикції'])) then args['площа_юрисдикції'] = '';
	else args['площа_юрисдикції'] = caption..'Площа юрисдикції:'..cell..'{{formatnum:'..args['площа_юрисдикції']..'}} км<sup>2</sup>'; end
	
	--населення
	if(ie(args['населення'])) then args['населення'] = ''; population = '';
	else population = caption..'Населення:'..cell..'{{formatnum:'..args['населення']..'}} осіб'; end
	
	--дата заснування
	if(ie(args["дата_заснування"]) and ine(args["рік_заснування"])) then
		args["дата_заснування"] = '[['..args["рік_заснування"]..']]';
	elseif(ie(args["дата_заснування"]) and item and item:getBestStatements('P571')[1] and 
	  item:getBestStatements('P571')[1].mainsnak.snaktype=='value') then
		args["дата_заснування"] = format_time(item:getBestStatements('P571')[1].mainsnak.datavalue.value);
	end
	if(ie(args["рік_заснування"]) and item and item:getBestStatements('P571')[1]) then
		args["рік_заснування"] = string.sub(item:getBestStatements('P571')[1].mainsnak.datavalue.value.time, 2, 5);
	end
	
	if(ie(args['дата_заснування'])) then args['дата_заснування'] = '';
	else args['дата_заснування'] = caption..'Дата заснування:'..cell..args['дата_заснування']; end
	
	--дата ліквідації
	if(ie(args["дата_ліквідації"]) and item and item:getBestStatements('P576')[1] and 
	  item:getBestStatements('P576')[1].mainsnak.snaktype=='value') then
		args["дата_ліквідації"] = format_time(item:getBestStatements('P576')[1].mainsnak.datavalue.value); end
	if(ie(args['дата_ліквідації'])) then args['дата_ліквідації'] = '';
	else args['дата_ліквідації'] = caption..'Дата ліквідації:'..cell..args['дата_ліквідації']; end
	
	--відомство-попередник
	if(ie(args["відомство-попередник"]) and item and item:getBestStatements('P155')[1] and 
	  item:getBestStatements('P155')[1].mainsnak.snaktype=='value') then
		args["відомство-попередник"] = title_for(item:getBestStatements('P155')[1].mainsnak.datavalue.value.id); end
	if(ie(args['відомство-попередник'])) then args['відомство-попередник'] = '';
	else args['відомство-попередник'] = caption..'<small>Відомство-попередник:</small>'..cell..args['відомство-попередник']; end
	
	--відомство-наступник
	if(ie(args["відомство-наступник"]) and item and item:getBestStatements('P156')[1] and 
	  item:getBestStatements('P156')[1].mainsnak.snaktype=='value') then
		args["відомство-наступник"] = title_for(item:getBestStatements('P156')[1].mainsnak.datavalue.value.id); end
	if(ie(args['відомство-наступник'])) then args['відомство-наступник'] = '';
	else args['відомство-наступник'] = caption..'<small>Відомство-наступник:</small>'..cell..args['відомство-наступник']; end
	
	--девіз
	if(ie(args["девіз"]) and item and item:getBestStatements('P1451')[1]) then
		args["девіз"] = item:getBestStatements('P1451')[1].mainsnak.datavalue.value.text;
		lang = item:getBestStatements('P1451')[1].mainsnak.datavalue.value.language;
		if(lang~='uk') then args["девіз"] = '{{Lang-'..lang..'|'..args["девіз"]..'}}';
		else args["девіз"] = "''"..args["девіз"].."''"; end
	end
	if(ie(args['девіз'])) then args['девіз'] = '';
	else args['девіз'] = caption..'Девіз:'..cell..args['девіз']; end
	
	--секція "Загальна інформація"
	if(ine(args["тип"]) or ine(args["юрисдикція"]) or ine(args['площа_юрисдикції']) or 
	  ine(population) or ine(args["дата_заснування"]) or ine(args["дата_ліквідації"]) or 
	  ine(args["відомство-попередник"]) or 
	  ine(args["відомство-наступник"]) or ine(args["девіз"]) ) then
		section_general = section_header..'Загальна інформація:';
	else section_general = ''; end
	
	--керівники
	if(ie(args["керівник"]) and item and item:getBestStatements('P488')[1]) then
		st = item:getBestStatements('P488')[1];
		args["керівник"] = title_for(st.mainsnak.datavalue.value.id);
		if(st.qualifiers and st.qualifiers['P580']) then
			args["керівник"] = args["керівник"]..' (з '..
			  format_time(st.qualifiers['P580'][1].datavalue.value)..')'; end
	end
	index = 1;
	chiefs = {}
	while(not ie(args["керівник"..ind(index)])) do
		indx = ind(index);
		if(ie(args['назва_керівника'..indx]) and index==1) then 
			args['назва_керівника'..indx] = 'Керівник';
		elseif(ie(args['назва_керівника'..indx]) and index==2) then 
			args['назва_керівника'..indx] = 'Перший заступник';
		elseif(ie(args['назва_керівника'..indx])) then 
			args['назва_керівника'..indx] = 'Заступник'; end
		args["керівник"..indx] = caption..args['назва_керівника'..indx]..
		  ':'..cell..args["керівник"..ind(index)];
		table.insert(chiefs, args["керівник"..indx]);
		index = index+1;
	end
	
	--керівна організація
	if(ie(args["керівна_організація"]) and item and item:getBestStatements('P797')[1]) then
		args["керівна_організація"] = title_for(item:getBestStatements('P797')[1].mainsnak.datavalue.value.id);
	elseif(ie(args["керівна_організація"]) and item and item:getBestStatements('P361')[1]) then
		args["керівна_організація"] = title_for(item:getBestStatements('P361')[1].mainsnak.datavalue.value.id); end
	
	if(ie(args['керівна_організація'])) then args['керівна_організація'] = '';
	else args['керівна_організація'] = caption..'Керівна організація:'..cell..args['керівна_організація']; end
	
	--документ
	if(ie(args['документ'])) then args['документ'] = '';
	else args['документ'] = caption..'Ключовий документ:'..cell..args['документ']; end

	--співробітники
	if(ie(args["співробітники"]) and item and item:getBestStatements('P1128')[1] and 
	  item:getBestStatements('P1128')[1].mainsnak.snaktype=='value') then
		st = item:getBestStatements('P1128')[1];
		args["співробітники"] = string.gsub(st.mainsnak.datavalue.value.amount, "+", "");
		if(st.qualifiers and st.qualifiers['P585']) then
			args['співробітники_час'] = format_time(st.qualifiers['P585'][1].datavalue.value); end
		if(st.references and st.references[1].snaks['P854']) then
			link = st.references[1].snaks['P854'][1].datavalue.value;
			args['співробітники_ref'] = '<ref>['..link..' '..link..']</ref>'; end
	end
	if(ie(args['співробітники'])) then employees = '';
	else
		if(ie(args['співробітники_час'])) then args['співробітники_час'] = '';
		else args['співробітники_час'] = ' ('..args['співробітники_час']..')'; end
		if(ie(args['співробітники_ref'])) then args['співробітники_ref'] = ''; end
		employees = caption..'<small>Кількість співробітників:</small>'..
		  cell..'{{formatnum:'..args['співробітники']..'}}'..
		  args['співробітники_час']..args['співробітники_ref']; end
	
	--відношення
	if(ie(args['відношення']) or ie(args['співробітники']) or ie(args['населення']) or 
	  string.match(args['співробітники'], "%W") or string.match(args['населення'], "%W")) then args['відношення'] = '';
	else args['відношення'] = caption..'На душу населення:'..cell..
	  ( math.floor(100000*(args['співробітники']/args['населення'])+0.5) )..' на 100 тис. населення'; end
	
	--бюджет
	if(ie(args["бюджет"]) and item and item:getBestStatements('P2769')[1] and 
	  item:getBestStatements('P2769')[1].mainsnak.snaktype=='value') then
		st = item:getBestStatements('P2769')[1];
		budget_amount = string.gsub(st.mainsnak.datavalue.value.amount, "+", "");
		budget_amount = string.sub(budget_amount, 1, -4);
		budget_amount = tonumber(budget_amount);
		if(budget_amount>=1000000) then args["бюджет"] = (math.floor((budget_amount/100000)+0.5)/10)..'&nbsp;млрд';
		elseif(budget_amount>=1000) then args["бюджет"] = (math.floor((budget_amount/100)+0.5)/10)..'&nbsp;млн';
		else args["бюджет"] = budget_amount; end
		unit = string.sub(st.mainsnak.datavalue.value.unit, 32);
		if(unit=='Q81893') then args["бюджет"] = args["бюджет"]..' [[Гривня|₴]]';
		elseif(unit=='Q4916') then args["бюджет"] = '[[Євро|€]] '..args["бюджет"];
		elseif(unit=='Q4917') then args["бюджет"] = '[[Долар США|$]] '..args["бюджет"];
		else args["бюджет"] = args["бюджет"]..' '..title_for(unit); end
		if(st.qualifiers and st.qualifiers['P585']) then
			budget_timestamp = st.qualifiers['P585'][1].datavalue.value;
			args["бюджет"] = args["бюджет"]..' ('..format_time(budget_timestamp)..')'; end
		if(item and item.claims['P17'] and item:getBestStatements('P17')[1].mainsnak.datavalue.value.id=="Q212") then
			if(not budget_timestamp) then budget_timestamp = '';
			else budget_timestamp = string.sub(budget_timestamp.time, 2, 5); end
			args["бюджет"] = args["бюджет"]..'{{Ref-бюджет України|'..
			  budget_timestamp..'|dod3}}';
		elseif(st.references and st.references[1].snaks['P854']) then
			link = st.references[1].snaks['P854'][1].datavalue.value;
			args["бюджет"] = args["бюджет"]..'<ref>['..link..' '..link..']</ref>'; end
	end
	
	if(ie(args['бюджет'])) then args['бюджет'] = '';
	else args['бюджет'] = caption..'Бюджет:'..cell..args['бюджет']; end
	
	--територіальні підрозділи
	if(ie(args['територіальні_підрозділи'])) then args['територіальні_підрозділи'] = '';
	else args['територіальні_підрозділи'] = caption..
	  '<small>Кількість тер. підрозділів:</small>'..cell..args['територіальні_підрозділи']; end
	
	--кількість відділків
	if(ie(args['кількість_відділків'])) then args['кількість_відділків'] = '';
	else args['кількість_відділків'] = caption..'Кількість відділків:'..cell..args['кількість_відділків']; end
	
	--секція "Структура"
	if(ine(args["керівник"]) or ine(args["керівна_організація"]) or 
	  ine(args['документ']) or ine(employees) or ine(args['відношення']) or 
	  ine(args['бюджет']) or ine(args['територіальні_підрозділи']) or 
	  ine(args['кількість_відділків']) ) then
		section_structure = section_header..'Структура:';
	else section_structure = ''; end
	
	--мапа OSM
	if(not ie(args['no_mapframe'])) then map_osm = '';
	else
		if(ie(args['mapframe_масштаб'])) then args['mapframe_масштаб'] = ''; end
		if(ie(args['mapframe_широта'])) then args['mapframe_широта'] = ''; end
		if(ie(args['mapframe_довгота'])) then args['mapframe_довгота'] = ''; end
		if(ie(args['mapframe_назва'])) then args['mapframe_назва'] = args['назва']; end
		if(ie(args['mapframe_маркер'])) then args['mapframe_маркер'] = 'police'; end
		if(ie(args['mapframe_колір'])) then args['mapframe_колір'] = '00d'; end
		map_osm = two_columns_cell..'{{Mapframe маркер розташування|ширина=300|висота=200'..
		  '|масштаб='..args['mapframe_масштаб']..'|широта='..args['mapframe_широта']..
		  '|довгота='..args['mapframe_довгота']..'|назва='..args['mapframe_назва']..
		  '|маркер='..args['mapframe_маркер']..'|колір='..args['mapframe_колір']..'}}';
	end
	
	--адреса
	if(ie(args["адреса"]) and item and item:getBestStatements('P159')[1] and item:getBestStatements('P159')[1].qualifiers) then
		st = item:getBestStatements('P159')[1].qualifiers;
		if(st['P6375']) then args["адреса"] = st['P6375'][1].datavalue.value.text;
		elseif(st['P969']) then args["адреса"] = st['P969'][1].datavalue.value;end
	end
	if(ie(args['адреса'])) then args['адреса'] = '';
	else args['адреса'] = caption..'Адреса штаб-квартири:'..cell..args['адреса']; end
	
	--секція "Штаб-квартира"
	if((ine(map_osm) and ((item and item:getBestStatements('P625')[1]) or ine(args['mapframe_широта'])) ) or ine(args['адреса']) ) then 
		section_headquarters = section_header..'Штаб-квартира:';
	else section_headquarters = ''; end
	
	--обладнання
	if(ie(args['кількість_машин'])) then args['кількість_машин'] = '';
	else args['кількість_машин'] = caption..'Машин:'..cell..args['кількість_машин']; end
	if(ie(args['кількість_бронетехніки'])) then args['кількість_бронетехніки'] = '';
	else args['кількість_бронетехніки'] = caption..'Бронетехніки:'..cell..args['кількість_бронетехніки']; end
	if(ie(args['кількість_мотоциклів'])) then args['кількість_мотоциклів'] = '';
	else args['кількість_мотоциклів'] = caption..'Мотоциклів:'..cell..args['кількість_мотоциклів']; end
	if(ie(args['кількість_човнів'])) then args['кількість_човнів'] = '';
	else args['кількість_човнів'] = caption..'Човнів:'..cell..args['кількість_човнів']; end
	if(ie(args['кількість_гелікоптерів'])) then args['кількість_гелікоптерів'] = '';
	else args['кількість_гелікоптерів'] = caption..'Гелікоптерів:'..cell..args['кількість_гелікоптерів']; end
	if(ie(args['кількість_літаків'])) then args['кількість_літаків'] = '';
	else args['кількість_літаків'] = caption..'Літаків:'..cell..args['кількість_літаків']; end
	if(ie(args['кількість_коней'])) then args['кількість_коней'] = '';
	else args['кількість_коней'] = caption..'Коней:'..cell..args['кількість_коней']; end
	if(ie(args['кількість_собак'])) then args['кількість_собак'] = '';
	else args['кількість_собак'] = caption..'Собак:'..cell..args['кількість_собак']; end
	if(ie(args['обладнання_інше'])) then args['обладнання_інше'] = '';
	else args['обладнання_інше'] = caption..'Інше:'..cell..args['обладнання_інше']; end
	
	--секція "Обладнання"
	if(ine(args['кількість_машин']) or ine(args['кількість_бронетехніки']) or 
	  ine(args['кількість_мотоциклів']) or ine(args['кількість_човнів']) or 
	  ine(args['кількість_гелікоптерів']) or ine(args['кількість_літаків']) or 
	  ine(args['кількість_коней']) or ine(args['кількість_собак']) or ine(args['обладнання_інше']) ) then
		section_equipment = section_header..'Обладнання:';
	else section_equipment = ''; end

	--інші дані
	index = 1;
	other_data = {}
	while( ine(args["мітка"..index]) and ine(args["текст"..index]) ) do
		indx = index;
		table.insert(other_data, caption..args["мітка"..index]..':'..cell..args["текст"..index]);
		index = index+1;
	end
	
	--секція "Інше"
	if(ine(args["мітка1"]) and ine(args["текст1"])) then
		section_miscellaneous = section_header..'Інше:';
	else section_miscellaneous = ''; end

	--вебсайт
	websites = {}
	if(ie(args["вебсайт"]) and item and item:getBestStatements('P856')[1]) then
		url = item:getBestStatements('P856')[1].mainsnak.datavalue.value;
		url = string.gsub(url, "http[s]?://", "");
		if(string.sub(url, -1, -1)=="/") then url = string.sub(url, 1, -2); end
		table.insert(websites, '['..url..' '..url..']');
	else
		index = 1;
		while(not ie(args["вебсайт"..ind(index)])) do
			indx = ind(index);
			args["вебсайт"..indx] = '[http://'..args["вебсайт"..indx]..' '..args["вебсайт"..indx]..']';
			table.insert(websites, args["вебсайт"..indx]);
			index = index+1;
		end
	end
	if(#websites>0) then 
		websites = section_header..'Вебсайт:'..two_columns_cell..table.concat(websites, '<br/>');
	else websites = ''; end

	--мапа зони юрисдикції
	if(ie(args['мапа_зони_юрисдикції'])) then args['мапа_зони_юрисдикції'] = '';
	else
		if(ie(args['розмір_мапи'])) then args['розмір_мапи'] = '300px'; end
		if(ie(args['підпис_мапи'])) then args['підпис_мапи'] = 'Мапа зони юрисдикції:'; end
		if(ie(args['пояснення_до_мапи'])) then args['пояснення_до_мапи'] = '';
		else args['пояснення_до_мапи'] = two_columns_cell..args['пояснення_до_мапи']; end
		args['мапа_зони_юрисдикції'] = section_header..args['підпис_мапи']..
		  two_columns_cell..'[[Файл:'..args['мапа_зони_юрисдикції']..
		  '|'..args['розмір_мапи']..']]'..args['пояснення_до_мапи'];
	end
	
	--commons page
	if(ie(args["commonspage"]) and item and item.sitelinks and item.sitelinks.commonswiki and 
	  not string.find(item.sitelinks.commonswiki.title, "Category")) then
		args["commonspage"] = item.sitelinks.commonswiki.title; end
	if(ie(args['commonspagetitle'])) then args['commonspagetitle'] = args['назва']; end
	
	if(ie(args['commonspage'])) then args['commonspage'] = '';
	else args['commonspage'] = two_columns_cell..'<hr/>'..two_columns_cell..
	  '<table width="100%" cellspacing=8><tr><td>[[File:Commons-logo.svg|30px]]'..
	  "<td align=left>[[Вікісховище]] має сторінку на цю тему: <br/>'''[[:commons:"..
	  args['commonspage']..'|'..args['commonspagetitle'].."]]'''</table>"; end
	
	--commons
	if(ie(args["commons"]) and item and item:getBestStatements('P373')[1]) then
		args["commons"] = item:getBestStatements('P373')[1].mainsnak.datavalue.value; end
	if(ie(args['commonstitle'])) then args['commonstitle'] = args['назва']; end
	
	if(ie(args['commons'])) then args['commons'] = '';
	else args['commons'] = two_columns_cell..'<hr/>'..two_columns_cell..
	  '<table width="100%" cellspacing=8><tr><td>[[File:Commons-logo.svg|30px]]'..
	  '<td align="left">[[Вікісховище]] має мультимедійні дані за темою: '..
	  "'''[[:commons:Category:"..args['commons']..'|'..args['commonstitle'].."]]'''</table>"; end

	--wikisource
	if(ie(args['wikisource'])) then args['wikisource'] = '';
	else args['wikisource'] = two_columns_cell..'<hr/>'..two_columns_cell..
	  '<table width="100%" cellspacing=8><tr><td>[[File:Wikisource-logo.svg|30px]]'..
	  "<td align=left>На [[Вікіджерела]]х є документ пов'язаний з цим правоохоронним органом: <br/>'''[[:s:"..
	  args['wikisource']..'|'..args['wikisource'].."]]'''</table>"; end
	
	--категорія
	if(ie(args["рік_заснування"])) then args["рік_заснування"] = '';
	else args["рік_заснування"] = '<includeonly>[[Категорія:Органи влади, засновані '..args["рік_заснування"]..']]</includeonly>'; end
	
	
	
	--таблиця із кінцевим результатом
	res = {'{| class="infobox" style="width: 350px; font-size: 90%;"\n', 
		'|- style="font-size: 120%; color: #000000; background-color: #C1D8FF"\n', 
		'| colspan="2" | '.."<center>'''", args['назва'], "'''", args['абревіатура'], 
		table.concat(original_names), '</center>', 
		args['герб'], args['прапор'], args['значок'], args['нашивка'], table.concat(images), 
		section_general, 
		args['тип'], args['юрисдикція'], args['площа_юрисдикції'], population, 
		args['дата_заснування'], args['дата_ліквідації'], 
		args['відомство-попередник'], args['відомство-наступник'], args['девіз'], 
		section_structure, 
		table.concat(chiefs), args["керівна_організація"], args['документ'], 
		employees, args['відношення'], args['бюджет'], 
		args['територіальні_підрозділи'], args['кількість_відділків'], 
		section_headquarters, 
		map_osm, args['адреса'], 
		section_equipment, 
		args['кількість_машин'], args['кількість_бронетехніки'], args['кількість_мотоциклів'], 
		args['кількість_човнів'], args['кількість_гелікоптерів'], args['кількість_літаків'], 
		args['кількість_коней'], args['кількість_собак'], args['обладнання_інше'], 
		section_miscellaneous, table.concat(other_data), 
		websites, args['мапа_зони_юрисдикції'], 
		args['commonspage'], args["commons"], args['wikisource'], 
		'\n|}', args["рік_заснування"]
	};
	
	return frame:preprocess(table.concat(res));
end

return p;