<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>http://japolitiball.myht.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LiberalPolandball</id>
	<title>政治ボールwiki 日本語版 - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="http://japolitiball.myht.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=LiberalPolandball"/>
	<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/LiberalPolandball"/>
	<updated>2026-08-06T15:07:21Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Navbar/styles.css&amp;diff=180</id>
		<title>モジュール:Navbar/styles.css</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Navbar/styles.css&amp;diff=180"/>
		<updated>2026-08-06T04:41:07Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「/* {{sandbox other|| {{pp-template}} }} */ .navbar { 	display: inline; 	font-size: 75%;		/* 英語版では88% */ 	font-weight: normal; }  .navbar-collapse { 	float: left; 	text-align: left; }  .navbar-boxtext { 	word-spacing: 0; }  .navbar ul { 	display: inline-block; 	white-space: nowrap; 	line-height: inherit; }  .navbar-brackets::before { 	margin-right: -0.125em; 	content: &amp;#039;[ &amp;#039;; }  .navbar-brackets::after { 	margin-left: -0.125em; 	content: &amp;#039; ]&amp;#039;; }  .navbar li {…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* {{sandbox other|| {{pp-template}} }} */&lt;br /&gt;
.navbar {&lt;br /&gt;
	display: inline;&lt;br /&gt;
	font-size: 75%;		/* 英語版では88% */&lt;br /&gt;
	font-weight: normal;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-collapse {&lt;br /&gt;
	float: left;&lt;br /&gt;
	text-align: left;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-boxtext {&lt;br /&gt;
	word-spacing: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar ul {&lt;br /&gt;
	display: inline-block;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
	line-height: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-brackets::before {&lt;br /&gt;
	margin-right: -0.125em;&lt;br /&gt;
	content: &#039;[ &#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-brackets::after {&lt;br /&gt;
	margin-left: -0.125em;&lt;br /&gt;
	content: &#039; ]&#039;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar li {&lt;br /&gt;
	word-spacing: -0.125em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar a &amp;gt; span,&lt;br /&gt;
.navbar a &amp;gt; abbr {&lt;br /&gt;
	text-decoration: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-mini abbr {&lt;br /&gt;
	font-variant: small-caps;&lt;br /&gt;
	border-bottom: none;&lt;br /&gt;
	text-decoration: none;&lt;br /&gt;
	cursor: inherit;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-ct-full {&lt;br /&gt;
	font-size: 110%;		/* 英語版では114% */&lt;br /&gt;
	margin: 0 7em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-ct-mini {&lt;br /&gt;
	font-size: 110%;		/* 英語版では114% */&lt;br /&gt;
	margin: 0 4em;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* not the usual @media screen, we simply remove navbar in @media print */&lt;br /&gt;
html.skin-theme-clientpref-night .navbar li a abbr {&lt;br /&gt;
	color: var(--color-base) !important;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media (prefers-color-scheme: dark) {&lt;br /&gt;
	html.skin-theme-clientpref-os .navbar li a abbr {&lt;br /&gt;
		color: var(--color-base) !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
@media print {&lt;br /&gt;
	.navbar {&lt;br /&gt;
		display: none !important;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* 以下は英語版では除去済みだが、日本語版ではまだ残しておく */&lt;br /&gt;
/* Navbar styling when nested in infobox and navbox&lt;br /&gt;
Should consider having a separate TemplateStyles for those specific places&lt;br /&gt;
using an infobox/navbox and a navbar, or possibly override from using template */&lt;br /&gt;
.infobox .navbar {&lt;br /&gt;
	font-size: 80%;		/* 英語版では100% */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox .navbar {&lt;br /&gt;
	display: block;&lt;br /&gt;
	font-size: 80%;		/* 英語版では100% */&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbox-title .navbar {&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	float: left;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	text-align: left;&lt;br /&gt;
	/* @noflip */&lt;br /&gt;
	margin-right: 0.5em;&lt;br /&gt;
}&lt;br /&gt;
/* {{sandbox other|| [[Category:テンプレートスタイル]] }} */&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Navbar/configuration&amp;diff=179</id>
		<title>モジュール:Navbar/configuration</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Navbar/configuration&amp;diff=179"/>
		<updated>2026-08-06T04:39:43Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「return { 	[&amp;#039;templatestyles&amp;#039;] = &amp;#039;Module:Navbar/styles.css&amp;#039;, 	[&amp;#039;hlist_templatestyles&amp;#039;] = &amp;#039;Hlist/styles.css&amp;#039;, 	[&amp;#039;box_text&amp;#039;] = &amp;#039;このボックス: &amp;#039;,			-- default text box when not plain or mini 	[&amp;#039;title_namespace&amp;#039;] = &amp;#039;Template&amp;#039;,		-- namespace to default to for title 	[&amp;#039;invalid_title&amp;#039;] = &amp;#039;無効なタイトル &amp;#039;, 	[&amp;#039;classes&amp;#039;] = { -- set a line to nil if you don&amp;#039;t want it 		[&amp;#039;navbar&amp;#039;] = &amp;#039;navbar&amp;#039;, 		[&amp;#039;plainlinks&amp;#039;] = &amp;#039;plainlinks&amp;#039;, -- plainlinks 		[&amp;#039;horizontal_list&amp;#039;] = &amp;#039;hl…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;return {&lt;br /&gt;
	[&#039;templatestyles&#039;] = &#039;Module:Navbar/styles.css&#039;,&lt;br /&gt;
	[&#039;hlist_templatestyles&#039;] = &#039;Hlist/styles.css&#039;,&lt;br /&gt;
	[&#039;box_text&#039;] = &#039;このボックス: &#039;,			-- default text box when not plain or mini&lt;br /&gt;
	[&#039;title_namespace&#039;] = &#039;Template&#039;,		-- namespace to default to for title&lt;br /&gt;
	[&#039;invalid_title&#039;] = &#039;無効なタイトル &#039;,&lt;br /&gt;
	[&#039;classes&#039;] = { -- set a line to nil if you don&#039;t want it&lt;br /&gt;
		[&#039;navbar&#039;] = &#039;navbar&#039;,&lt;br /&gt;
		[&#039;plainlinks&#039;] = &#039;plainlinks&#039;, -- plainlinks&lt;br /&gt;
		[&#039;horizontal_list&#039;] = &#039;hlist&#039;, -- horizontal list class&lt;br /&gt;
		[&#039;mini&#039;] = &#039;navbar-mini&#039;, -- class indicating small links in the navbar&lt;br /&gt;
		[&#039;this_box&#039;] = &#039;navbar-boxtext&#039;,&lt;br /&gt;
		[&#039;brackets&#039;] = &#039;navbar-brackets&#039;,&lt;br /&gt;
		-- &#039;collapsible&#039; is the key for a class to indicate the navbar is&lt;br /&gt;
		-- setting up the collapsible element in addition to the normal&lt;br /&gt;
		-- navbar.&lt;br /&gt;
		[&#039;collapsible&#039;] = &#039;navbar-collapse&#039;,&lt;br /&gt;
		[&#039;collapsible_title_mini&#039;] = &#039;navbar-ct-mini&#039;,&lt;br /&gt;
		[&#039;collapsible_title_full&#039;] = &#039;navbar-ct-full&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Navbar&amp;diff=178</id>
		<title>モジュール:Navbar</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Navbar&amp;diff=178"/>
		<updated>2026-08-06T04:38:05Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「local p = {} local cfg = mw.loadData(&amp;#039;Module:Navbar/configuration&amp;#039;)  local function get_title_arg(is_collapsible, template) 	local title_arg = 1 	if is_collapsible then title_arg = 2 end 	if template then title_arg = &amp;#039;template&amp;#039; end 	return title_arg end  local function choose_links(template, args) 	-- The show table indicates the default displayed items. 	-- view, talk, edit, hist, move, watch 	-- TODO: Move to configuration. 	-- 日本語版独自の変更あり 	l…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
local cfg = mw.loadData(&#039;Module:Navbar/configuration&#039;)&lt;br /&gt;
&lt;br /&gt;
local function get_title_arg(is_collapsible, template)&lt;br /&gt;
	local title_arg = 1&lt;br /&gt;
	if is_collapsible then title_arg = 2 end&lt;br /&gt;
	if template then title_arg = &#039;template&#039; end&lt;br /&gt;
	return title_arg&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function choose_links(template, args)&lt;br /&gt;
	-- The show table indicates the default displayed items.&lt;br /&gt;
	-- view, talk, edit, hist, move, watch&lt;br /&gt;
	-- TODO: Move to configuration.&lt;br /&gt;
	-- 日本語版独自の変更あり&lt;br /&gt;
	local show = {true, true, true, true, false, false}	--4番目(hist)をfalseからtrueに変更&lt;br /&gt;
	if template or args.viewplain then&lt;br /&gt;
		show = {true, false, false, false, false, false}&lt;br /&gt;
	end&lt;br /&gt;
	if template then&lt;br /&gt;
		local index = {t = 2, d = 2, e = 3, h = 4, m = 5, w = 6,&lt;br /&gt;
			talk = 2, edit = 3, hist = 4, move = 5, watch = 6}&lt;br /&gt;
		-- TODO: Consider removing TableTools dependency.&lt;br /&gt;
		for _, v in ipairs(require (&#039;Module:TableTools&#039;).compressSparseArray(args)) do&lt;br /&gt;
			local num = index[v]&lt;br /&gt;
			if num then show[num] = true end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local remove_edit_link = args.noedit&lt;br /&gt;
	if remove_edit_link then show[3] = false end&lt;br /&gt;
	&lt;br /&gt;
	return show&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function add_link(link_description, ul, is_mini, font_style)&lt;br /&gt;
	local l&lt;br /&gt;
	if link_description.url then&lt;br /&gt;
		l = {&#039;[&#039;, &#039;&#039;, &#039;]&#039;}&lt;br /&gt;
	else&lt;br /&gt;
		l = {&#039;[[&#039;, &#039;|&#039;, &#039;]]&#039;}&lt;br /&gt;
	end&lt;br /&gt;
	ul:tag(&#039;li&#039;)&lt;br /&gt;
		:addClass(&#039;nv-&#039; .. link_description.html_class)	--日本語版独自: fullをhtml_classに置き換え&lt;br /&gt;
		:wikitext(l[1] .. link_description.link .. l[2])&lt;br /&gt;
		:tag(is_mini and &#039;abbr&#039; or &#039;span&#039;)&lt;br /&gt;
			:attr(&#039;title&#039;, link_description.html_title)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
			:wikitext(is_mini and link_description.mini or link_description.full)&lt;br /&gt;
			:done()&lt;br /&gt;
		:wikitext(l[3])&lt;br /&gt;
		:done()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_list(title_text, has_brackets, displayed_links, is_mini, font_style)&lt;br /&gt;
	&lt;br /&gt;
	local title = mw.title.new(mw.text.trim(title_text), cfg.title_namespace)&lt;br /&gt;
	if not title then&lt;br /&gt;
		error(cfg.invalid_title .. title_text)&lt;br /&gt;
	end&lt;br /&gt;
	local talkpage = title.talkPageTitle and title.talkPageTitle.fullText or &#039;&#039;&lt;br /&gt;
	&lt;br /&gt;
	-- TODO: Get link_descriptions and show into the configuration module.&lt;br /&gt;
	-- link_descriptions should be easier...&lt;br /&gt;
	-- 日本語版独自: html_classフィールド&lt;br /&gt;
	local link_descriptions = {&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;表&#039;, [&#039;full&#039;] = &#039;表示&#039;, [&#039;html_title&#039;] = &#039;参照先のページを表示します。&#039;,&lt;br /&gt;
			[&#039;html_class&#039;] = &#039;view&#039;, [&#039;link&#039;] = title.fullText, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;話&#039;, [&#039;full&#039;] = &#039;ノート&#039;, [&#039;html_title&#039;] = &#039;参照先のノートを表示します。&#039;,&lt;br /&gt;
			[&#039;html_class&#039;] = &#039;talk&#039;, [&#039;link&#039;] = talkpage, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;編&#039;, [&#039;full&#039;] = &#039;編集&#039;, [&#039;html_title&#039;] = &#039;参照先のページを編集します。&#039;,&lt;br /&gt;
			[&#039;html_class&#039;] = &#039;edit&#039;, [&#039;link&#039;] = &#039;Special:EditPage/&#039; .. title.fullText, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;歴&#039;, [&#039;full&#039;] = &#039;履歴&#039;, [&#039;html_title&#039;] = &#039;参照先のページの履歴を表示します。&#039;,&lt;br /&gt;
			[&#039;html_class&#039;] = &#039;hist&#039;, [&#039;link&#039;] = &#039;Special:PageHistory/&#039; .. title.fullText, [&#039;url&#039;] = false },&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;移&#039;, [&#039;full&#039;] = &#039;移動&#039;, [&#039;html_title&#039;] = &#039;参照先のページを移動します。&#039;,&lt;br /&gt;
			[&#039;html_class&#039;] = &#039;move&#039;, [&#039;link&#039;] = mw.title.new(&#039;Special:Movepage&#039;):fullUrl(&#039;target=&#039;..title.fullText:gsub(&#039; &#039;, &#039;_&#039;)), [&#039;url&#039;] = true },	-- [[:en:Special:Diff/1132325259]]&lt;br /&gt;
		{ [&#039;mini&#039;] = &#039;ウ&#039;, [&#039;full&#039;] = &#039;ウォッチ&#039;, [&#039;html_title&#039;] = &#039;参照先のページをウォッチリストに入れます。&#039;, &lt;br /&gt;
			[&#039;html_class&#039;] = &#039;watch&#039;, [&#039;link&#039;] = title:fullUrl(&#039;action=watch&#039;), [&#039;url&#039;] = true }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	local ul = mw.html.create(&#039;ul&#039;)&lt;br /&gt;
	if has_brackets then&lt;br /&gt;
		ul:addClass(cfg.classes.brackets)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for i, _ in ipairs(displayed_links) do&lt;br /&gt;
		if displayed_links[i] then add_link(link_descriptions[i], ul, is_mini, font_style) end&lt;br /&gt;
	end&lt;br /&gt;
	return ul:done()&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._navbar(args)&lt;br /&gt;
	&lt;br /&gt;
	-- TODO: We probably don&#039;t need both fontstyle and fontcolor...&lt;br /&gt;
	local font_style = args.fontstyle&lt;br /&gt;
	local font_color = args.fontcolor&lt;br /&gt;
	local is_collapsible = args.collapsible&lt;br /&gt;
	local is_mini = args.mini&lt;br /&gt;
	local is_plain = args.plain or args.viewplain	-- 日本語版独自: 暫定的にviewplainを条件式に含める&lt;br /&gt;
	&lt;br /&gt;
	local collapsible_class = nil&lt;br /&gt;
	if is_collapsible then&lt;br /&gt;
		collapsible_class = cfg.classes.collapsible&lt;br /&gt;
		if not is_plain then is_mini = 1 end&lt;br /&gt;
		if font_color then&lt;br /&gt;
			font_style = (font_style or &#039;&#039;) .. &#039;; color: &#039; .. font_color .. &#039;;&#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local navbar_style = args.style&lt;br /&gt;
	local div = mw.html.create():tag(&#039;div&#039;)&lt;br /&gt;
	div&lt;br /&gt;
		:addClass(cfg.classes.navbar)&lt;br /&gt;
		:addClass(cfg.classes.plainlinks)&lt;br /&gt;
		:addClass(cfg.classes.horizontal_list)&lt;br /&gt;
		:addClass(collapsible_class) -- we made the determination earlier&lt;br /&gt;
		:cssText(navbar_style)&lt;br /&gt;
&lt;br /&gt;
	if is_mini then div:addClass(cfg.classes.mini) end&lt;br /&gt;
&lt;br /&gt;
	local box_text = (args.text or cfg.box_text) .. &#039; &#039;&lt;br /&gt;
	 -- the concatenated space guarantees the box text is separated&lt;br /&gt;
	if not (is_mini or is_plain) then&lt;br /&gt;
		div&lt;br /&gt;
			:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(cfg.classes.box_text)&lt;br /&gt;
				:cssText(font_style)&lt;br /&gt;
				:wikitext(box_text)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local template = args.template&lt;br /&gt;
	local displayed_links = choose_links(template, args)&lt;br /&gt;
	local has_brackets = args.brackets&lt;br /&gt;
	local title_arg = get_title_arg(is_collapsible, template)&lt;br /&gt;
	local title_text = args[title_arg] or (&#039;:&#039; .. mw.getCurrentFrame():getParent():getTitle())&lt;br /&gt;
	local list = make_list(title_text, has_brackets, displayed_links, is_mini, font_style)&lt;br /&gt;
	div:node(list)&lt;br /&gt;
&lt;br /&gt;
	if is_collapsible then&lt;br /&gt;
		local title_text_class&lt;br /&gt;
		if is_mini then&lt;br /&gt;
			title_text_class = cfg.classes.collapsible_title_mini&lt;br /&gt;
		else&lt;br /&gt;
			title_text_class = cfg.classes.collapsible_title_full&lt;br /&gt;
		end&lt;br /&gt;
		div:done()&lt;br /&gt;
			:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(title_text_class)&lt;br /&gt;
			:cssText(font_style)&lt;br /&gt;
			:wikitext(args[1])&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	-- hlist -&amp;gt; navbar is best-effort to preserve old Common.css ordering.&lt;br /&gt;
	return frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = cfg.hlist_templatestyles }&lt;br /&gt;
	} .. frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;, args = { src = cfg.templatestyles }&lt;br /&gt;
	} .. tostring(div:done())&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.navbar(frame)&lt;br /&gt;
	return p._navbar(require(&#039;Module:Arguments&#039;).getArgs(frame))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Navbar-header&amp;diff=177</id>
		<title>テンプレート:Navbar-header</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Navbar-header&amp;diff=177"/>
		<updated>2026-08-06T04:14:04Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: テンプレート:Tnavbar-headerへの転送ページ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#転送 [[Template:Tnavbar-header]]&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Navbar-header/styles.css&amp;diff=176</id>
		<title>テンプレート:Navbar-header/styles.css</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Navbar-header/styles.css&amp;diff=176"/>
		<updated>2026-08-06T03:59:37Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「.navbar-header { 	text-align: center; 	position: relative; 	white-space: nowrap; }  .navbar-header .navbar { 	position: absolute; 	right: 0; 	top: 0; 	margin: 0 5px; } /* Navbar-header */」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.navbar-header {&lt;br /&gt;
	text-align: center;&lt;br /&gt;
	position: relative;&lt;br /&gt;
	white-space: nowrap;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.navbar-header .navbar {&lt;br /&gt;
	position: absolute;&lt;br /&gt;
	right: 0;&lt;br /&gt;
	top: 0;&lt;br /&gt;
	margin: 0 5px;&lt;br /&gt;
}&lt;br /&gt;
/* [[Category:テンプレートスタイル|Navbar-header]] */&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Notice&amp;diff=175</id>
		<title>テンプレート:Notice</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Notice&amp;diff=175"/>
		<updated>2026-08-06T03:54:26Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「{{Mbox | name = Notice | demospace = {{{demospace|}}} | type  = {{{type|notice}}} | small = {{#if:{{{small|}}}|{{{small}}}|{{#if:{{{section|}}}|left}}}} | style = {{#if:{{{small|}}}||{{#if:{{{section|}}}|{{Main other|width:auto;|demospace={{{demospace|}}}}}}}}} | image      = File:{{#if:{{{image|}}}|{{{image}}}|{{#switch:{{{3|{{{style}}}}}}  | stop      = OOjs UI icon cancel-destructive.svg  | warning   = OOjs UI icon error-destructive.svg  | question  = OOjs UI i…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Mbox&lt;br /&gt;
| name = Notice&lt;br /&gt;
| demospace = {{{demospace|}}}&lt;br /&gt;
| type  = {{{type|notice}}}&lt;br /&gt;
| small = {{#if:{{{small|}}}|{{{small}}}|{{#if:{{{section|}}}|left}}}}&lt;br /&gt;
| style = {{#if:{{{small|}}}||{{#if:{{{section|}}}|{{Main other|width:auto;|demospace={{{demospace|}}}}}}}}}&lt;br /&gt;
| image      = [[File:{{#if:{{{image|}}}|{{{image}}}|{{#switch:{{{3|{{{style}}}}}}&lt;br /&gt;
 | stop      = OOjs UI icon cancel-destructive.svg&lt;br /&gt;
 | warning   = OOjs UI icon error-destructive.svg&lt;br /&gt;
 | question  = OOjs UI icon helpNotice-ltr-progressive.svg&lt;br /&gt;
 | attention = OOjs UI icon alert-destructive.svg&lt;br /&gt;
 | important = OOjs UI icon notice-warning.svg&lt;br /&gt;
 | search    = OOjs UI icon search-ltr-progressive.svg&lt;br /&gt;
 | fix       = Icon Maintenance.svg&lt;br /&gt;
 | announce  = Echo feedback.svg&lt;br /&gt;
 | help      = OOjs UI icon map-ltr-progressive.svg&lt;br /&gt;
 | idea      = OOjs UI icon lightbulb-yellow.svg&lt;br /&gt;
 | news      = OOjs UI icon newspaper-ltr-progressive.svg&lt;br /&gt;
 | propose   = Icons8 flat collaboration.svg&lt;br /&gt;
 | #default  = OOjs_UI_icon_information-progressive.svg}}}}|40x40px|link=|alt=]]&lt;br /&gt;
| smallimage      = [[File:{{#if:{{{image|}}}|{{{image}}}|{{#switch:{{{3|{{{style}}}}}}&lt;br /&gt;
 | stop      = OOjs UI icon cancel-destructive.svg&lt;br /&gt;
 | warning   = OOjs UI icon error-destructive.svg&lt;br /&gt;
 | question  = OOjs UI icon helpNotice-ltr-progressive.svg&lt;br /&gt;
 | attention = OOjs UI icon alert-destructive.svg&lt;br /&gt;
 | important = OOjs UI icon notice-warning.svg&lt;br /&gt;
 | search    = OOjs UI icon search-ltr-progressive.svg&lt;br /&gt;
 | fix       = Icon Maintenance.svg&lt;br /&gt;
 | announce  = Echo feedback.svg&lt;br /&gt;
 | help      = OOjs UI icon map-ltr-progressive.svg&lt;br /&gt;
 | idea      = OOjs UI icon lightbulb-yellow.svg&lt;br /&gt;
 | news      = OOjs UI icon newspaper-ltr-progressive.svg&lt;br /&gt;
 | propose   = Icons8 flat collaboration.svg&lt;br /&gt;
 | #default  = OOjs_UI_icon_information-progressive.svg}}}}|30x30px|link=|alt=]]&lt;br /&gt;
| text  = {{#if:{{{header|}}}|&amp;lt;div style=&amp;quot;text-align:center&amp;quot;&amp;gt;&#039;&#039;&#039;{{{header}}}&#039;&#039;&#039;&amp;lt;/div&amp;gt;}}{{#if:{{{title|{{{2|}}}}}}|&#039;&#039;&#039;{{{title|{{{2}}}}}}&#039;&#039;&#039;：}}{{{text|{{{1|}}}}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;!-- カテゴリと言語間リンクはここではなく、/doc サブページに追加してください --&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Tnavbar-header&amp;diff=174</id>
		<title>テンプレート:Tnavbar-header</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Tnavbar-header&amp;diff=174"/>
		<updated>2026-08-06T03:50:18Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「&amp;lt;templatestyles src=&amp;quot;Navbar-header/styles.css&amp;quot;/&amp;gt;&amp;lt;div class=&amp;quot;navbar-header&amp;quot; {{#if:{{{fontcolor|}}}|style=&amp;quot;color:{{{fontcolor}}};&amp;quot;}}&amp;gt;{{{1}}}&amp;lt;!--  --&amp;gt;{{#invoke:navbar|navbar   | 1 = {{{2&amp;lt;noinclude&amp;gt;|Tnavbar-header&amp;lt;/noinclude&amp;gt;}}}   | {{#ifeq: {{{plain|}}}       |&amp;lt;!--equals:--&amp;gt;1       |&amp;lt;!--then:--&amp;gt;plain       |&amp;lt;!--else:--&amp;gt;mini     }} = 1   | {{#if: {{{fontcolor|}}}       | fontstyle | NULL }} = color:{{{fontcolor}}}; }}&amp;lt;!--  --&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt; {{documentation}} &amp;lt;!-- Add…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Navbar-header/styles.css&amp;quot;/&amp;gt;&amp;lt;div class=&amp;quot;navbar-header&amp;quot; {{#if:{{{fontcolor|}}}|style=&amp;quot;color:{{{fontcolor}}};&amp;quot;}}&amp;gt;{{{1}}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;{{#invoke:navbar|navbar&lt;br /&gt;
  | 1 = {{{2&amp;lt;noinclude&amp;gt;|Tnavbar-header&amp;lt;/noinclude&amp;gt;}}}&lt;br /&gt;
  | {{#ifeq: {{{plain|}}}&lt;br /&gt;
      |&amp;lt;!--equals:--&amp;gt;1&lt;br /&gt;
      |&amp;lt;!--then:--&amp;gt;plain&lt;br /&gt;
      |&amp;lt;!--else:--&amp;gt;mini&lt;br /&gt;
    }} = 1&lt;br /&gt;
  | {{#if: {{{fontcolor|}}}&lt;br /&gt;
      | fontstyle | NULL }} = color:{{{fontcolor}}};&lt;br /&gt;
}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add cats and interwikis to the /doc subpage, not here! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Anchor-common-doc&amp;diff=173</id>
		<title>テンプレート:Anchor-common-doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Anchor-common-doc&amp;diff=173"/>
		<updated>2026-08-06T03:16:19Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「{{Tnavbar-header|アンカー作成テンプレート共通ヘルプ|Anchor-common-doc}}&amp;lt;noinclude&amp;gt;{{Notice|このテンプレートは、{{Tl|Anchors}}、{{Tl|Visible anchor}}などのヘルプから呼び出されています。}} &amp;lt;/noinclude&amp;gt; &amp;lt;hr /&amp;gt; アンカー、つまり&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot; inline&amp;gt;#リンク先&amp;lt;/syntaxhighlight&amp;gt;や&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot; inline&amp;gt;ページ名#リンク先&amp;lt;/syntaxhighlight&amp;gt;など、Help:セクション#セ…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tnavbar-header|アンカー作成テンプレート共通ヘルプ|Anchor-common-doc}}&amp;lt;noinclude&amp;gt;{{Notice|このテンプレートは、{{Tl|Anchors}}、{{Tl|Visible anchor}}などのヘルプから呼び出されています。}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;hr /&amp;gt;&lt;br /&gt;
アンカー、つまり&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot; inline&amp;gt;[[#リンク先]]&amp;lt;/syntaxhighlight&amp;gt;や&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot; inline&amp;gt;[[ページ名#リンク先]]&amp;lt;/syntaxhighlight&amp;gt;など、[[Help:セクション#セクションへのリンク|ページ内へのリンク]]先を作るテンプレート、{{Tl|Anchors}}、{{Tl|Visible anchor}}（別名: {{Tl|Vanc}}）について解説します。&lt;br /&gt;
&lt;br /&gt;
通常は、[[#引き潮]]は、同じページの[[Wikipedia:節|節]]「引き潮」の冒頭へのリンクですが、アンカーを作ることで、任意の名前で、ページ内の任意の箇所にリンク先を作る事ができます。ただし、1つのページの中に同じ名前のアンカーを複数作るとうまく動作しないので、注意して下さい。そのようなページは[[HTML]]としても正しくありません。[[W3C Markup Validation Service]]を使うことで、チェックができます。&lt;br /&gt;
&lt;br /&gt;
アンカーを作った際は、どこからリンクしているのかを、コメント、つまり&amp;lt;code&amp;gt;&amp;amp;lt;!-- 注釈 --&amp;amp;gt;&amp;lt;/code&amp;gt;の形で明示する方が良いかも知れません。特に、他の記事からリンクをしている際は、そうすることで、アンカーの名前の変更によるアンカーへのリンク切れを防げるでしょう。&lt;br /&gt;
&lt;br /&gt;
アンカー名に日本語などを使用した場合、[[Help:節|節]]（セクション）と異なり、[[終止符|ピリオド]](.)で[[URLエンコード]]されたアンカーは作成されませんが、%を使ったものは利用できます。&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
=== Anchors ===&lt;br /&gt;
{{Lua|モジュール:Anchor}}&lt;br /&gt;
一番単純なのは、{{Tl|Anchors}}を使う方法です。（後ろにsを忘れずに）{{Tlp|Anchors|リンク1|リンク2|...}}とすると、アンカーを作れます。これらは、&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot; inline&amp;gt;[[#リンク先1]]、[[#リンク先2]]、…&amp;lt;/syntaxhighlight&amp;gt;としてリンクできます。何も表示はされませんが、リンク先が、そこに作られます。&lt;br /&gt;
* 例:{{Tlp|Anchors|アンカー1|アンカー2}}&lt;br /&gt;
* 結果:{{Anchors|アンカー1|アンカー2}}&#039;&#039;(何も見えませんが、アンカーが左のかっこの前にあります)&#039;&#039;&lt;br /&gt;
[[#アンカー1]]、[[#アンカー2]]は、上の「結果:」の直後（同じ行）にジャンプします。&lt;br /&gt;
&lt;br /&gt;
=== Visible anchor ===&lt;br /&gt;
{{Tl|Visible anchor}}（別名: {{Tl|Vanc}}）は、似たテンプレートですが、1個目のリンク先が表示されます。&lt;br /&gt;
* 例:{{Tlp|Visible anchor|va1|va2|va3}}&lt;br /&gt;
* 結果:{{Visible anchor|va1|va2|va3}}&lt;br /&gt;
[[#va1]]、[[#va2]]、[[#va3]]は、上のva1の前（va1と同じ行）にジャンプします。&lt;br /&gt;
&lt;br /&gt;
=== Template:Anchorは廃止されました ===&lt;br /&gt;
後ろにsがない{{Tl|Anchor}}は、日本語版ウィキペディアでは「Template‐ノート:Anchor」での議論を受け、廃止されました。&lt;br /&gt;
&lt;br /&gt;
== 節とアンカー ==&lt;br /&gt;
=== &amp;lt;span id=&amp;quot;別名&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;節に別名を付ける ===&lt;br /&gt;
アンカーを使い、節に別名を付けることができます。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;== {{subst:Anchors|別名1|別名2}}節の名前 ==&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
もしくは&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;== {{Visible anchor|節の名前|別名1|別名2}} ==&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
などとします。この節にも、[[#別名]]でリンクを作ってあります。ページのソースを見て下さい。&lt;br /&gt;
&lt;br /&gt;
これで、他のページからでも、&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot; inline&amp;gt;[[ページ名#別名]]&amp;lt;/syntaxhighlight&amp;gt;でリンクできます。&lt;br /&gt;
&lt;br /&gt;
別名が必要な時は、たとえば他のページからその節へのリンクが既にある時に、節の名前を変更した後です。&lt;br /&gt;
&lt;br /&gt;
=== 節の名前の固定と、他の編集者への注意 ===&lt;br /&gt;
アンカー作成テンプレートを使う場合でも、そうでない場合でも、節の名前を変更して欲しくない時は、コメント、つまり&amp;lt;code&amp;gt;&amp;amp;lt;!-- 注釈 --&amp;amp;gt;&amp;lt;/code&amp;gt;を使い、他の編集者への注意を残して下さい。元の名前を別名として残して欲しい時は、「{{Tl|Anchors}}を使うこと」「詳細は{{Tl|Anchors}}のヘルプを見よ」などと書いて下さい。&lt;br /&gt;
&lt;br /&gt;
特に、他のページからのリンクがある場合、節の名前が変更されても、リンクが無効になる事を防ぐ事が期待されます。&lt;br /&gt;
&lt;br /&gt;
=== 編集時の不便 ===&lt;br /&gt;
このテンプレートを使用した節を節編集しようとすると、要約欄への自動的な記述が適切に行われません。&lt;br /&gt;
具体的には、&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;== {{Anchors|カルチョ}}イタリア ==&amp;lt;/syntaxhighlight&amp;gt;と書くと、要約欄は本来&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;/* イタリア */&amp;lt;/syntaxhighlight&amp;gt;となるべきですが、&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot; inline&amp;gt;/* {{Anchors|カルチョ}}イタリア}} */&amp;lt;/syntaxhighlight&amp;gt;となってしまいます。これについては、[[Project:subst|subst]]展開を行うことで対処できます。&lt;br /&gt;
&lt;br /&gt;
== テンプレートの別名 ==&lt;br /&gt;
* {{Tl|Vanc}}および{{Tl|Vanchor}}: どちらも{{Tl|Visible anchor}}の別名です。&lt;br /&gt;
&lt;br /&gt;
== TemplateData ==&lt;br /&gt;
{{TemplateData header}}&lt;br /&gt;
&amp;lt;templatedata&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	&amp;quot;params&amp;quot;: {&lt;br /&gt;
		&amp;quot;1&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;リンク先1&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;,&lt;br /&gt;
			&amp;quot;required&amp;quot;: true,&lt;br /&gt;
			&amp;quot;description&amp;quot;: &amp;quot;{{Visible anchor}}の場合は、テキストが表示されます。&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;2&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;リンク先2&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		&amp;quot;3&amp;quot;: {&lt;br /&gt;
			&amp;quot;label&amp;quot;: &amp;quot;リンク先3&amp;quot;,&lt;br /&gt;
			&amp;quot;type&amp;quot;: &amp;quot;line&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	},&lt;br /&gt;
	&amp;quot;description&amp;quot;: &amp;quot;アンカー（ページ内の位置へのリンク先）を作るテンプレート&amp;quot;,&lt;br /&gt;
	&amp;quot;format&amp;quot;: &amp;quot;inline&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/templatedata&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[Help:セクション#セクションへのリンク]]&lt;br /&gt;
&amp;lt;noinclude&amp;gt;{{Documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Anchor&amp;diff=172</id>
		<title>モジュール:Anchor</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Anchor&amp;diff=172"/>
		<updated>2026-08-06T03:11:33Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「-- This module implements {{anchor}}.  local yesno = require(&amp;#039;Module:Yesno&amp;#039;) local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs local compressSparseArray = require(&amp;#039;Module:TableTools&amp;#039;).compressSparseArray  local p = {}  function p.main(frame) 	-- Get the positional arguments from #invoke and remove any nil values 	local visible = yesno(frame.args.visible, false) 	local args = getArgs(frame) 	local argArray = compressSparseArray(args)  	local ret = {} 	for i, el in…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{anchor}}.&lt;br /&gt;
&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
local compressSparseArray = require(&#039;Module:TableTools&#039;).compressSparseArray&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	-- Get the positional arguments from #invoke and remove any nil values&lt;br /&gt;
	local visible = yesno(frame.args.visible, false)&lt;br /&gt;
	local args = getArgs(frame)&lt;br /&gt;
	local argArray = compressSparseArray(args)&lt;br /&gt;
&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for i, el in ipairs(argArray) do&lt;br /&gt;
		local anchor = frame:callParserFunction(&#039;anchorencode&#039;, { el })&lt;br /&gt;
		anchor = mw.text.decode(anchor, true)&lt;br /&gt;
		if i == 1 and visible then&lt;br /&gt;
			local display = string.gsub(anchor, &#039;_&#039;, &#039; &#039;)&lt;br /&gt;
			table.insert(ret, display)&lt;br /&gt;
		end&lt;br /&gt;
		local node = mw.html.create(&#039;span&#039;)&lt;br /&gt;
			:attr(&#039;class&#039;, &#039;anchor&#039;)&lt;br /&gt;
			:attr(&#039;id&#039;, anchor)&lt;br /&gt;
		table.insert(ret, tostring(node))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Anchors/doc&amp;diff=171</id>
		<title>テンプレート:Anchors/doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Anchors/doc&amp;diff=171"/>
		<updated>2026-08-06T02:21:51Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「&amp;lt;noinclude&amp;gt;{{Documentation subpage|種類=テンプレート}}&amp;lt;/noinclude&amp;gt; &amp;lt;includeonly&amp;gt;{{使用箇所の多いテンプレート|10,000以上}}&amp;lt;/includeonly&amp;gt; {{anchor-common-doc}} &amp;lt;includeonly&amp;gt; &amp;lt;!-- カテゴリは以下に追加してください --&amp;gt; Category:内部リンク用テンプレート &amp;lt;/includeonly&amp;gt;」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Documentation subpage|種類=[[Help:テンプレート|テンプレート]]}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{使用箇所の多いテンプレート|10,000以上}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{anchor-common-doc}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&amp;lt;!-- カテゴリは以下に追加してください --&amp;gt;&lt;br /&gt;
[[Category:内部リンク用テンプレート]]&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Anchors&amp;diff=170</id>
		<title>テンプレート:Anchors</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Anchors&amp;diff=170"/>
		<updated>2026-08-06T02:20:18Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「{{{{{|safesubst:}}}#invoke:Anchor|main}}&amp;lt;noinclude&amp;gt; {{Documentation}} &amp;lt;/noinclude&amp;gt;」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{{{{|safesubst:}}}#invoke:Anchor|main}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Userbox/doc&amp;diff=169</id>
		<title>テンプレート:Userbox/doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Userbox/doc&amp;diff=169"/>
		<updated>2026-08-01T04:16:25Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「&amp;lt;includeonly&amp;gt;{{Documentation subpage}}&amp;lt;/includeonly&amp;gt; {{Lua|モジュール:Userbox}} Babelの機能かと思ったらそうじゃなかった、プロフィールに貼る用のボックスを作れるテンプレートです。 &amp;lt;pre&amp;gt; {{Userbox |border-c = &amp;lt;!--外枠の色、省略値：id-c--&amp;gt; |border-s = &amp;lt;!--外枠の太さ (px)、省略値：1--&amp;gt; |id-c = &amp;lt;!--アイコン画像またはID記号の入る枠の背景色、省略値：#d0d0d0--&amp;gt; |id-fc = &amp;lt;!--ID記号…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{Documentation subpage}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
{{Lua|モジュール:Userbox}}&lt;br /&gt;
Babelの機能かと思ったらそうじゃなかった、プロフィールに貼る用のボックスを作れるテンプレートです。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Userbox&lt;br /&gt;
|border-c = &amp;lt;!--外枠の色、省略値：id-c--&amp;gt;&lt;br /&gt;
|border-s = &amp;lt;!--外枠の太さ (px)、省略値：1--&amp;gt;&lt;br /&gt;
|id-c = &amp;lt;!--アイコン画像またはID記号の入る枠の背景色、省略値：#d0d0d0--&amp;gt;&lt;br /&gt;
|id-fc = &amp;lt;!--ID記号のフォントの色、省略値：black--&amp;gt;&lt;br /&gt;
|id-s = &amp;lt;!--ID記号のフォントサイズ (pt)、省略値：14--&amp;gt;&lt;br /&gt;
|id = &amp;lt;!--アイコン画像またはID記号、画像サイズは基本的に90x45pxを超えるべきではありません--&amp;gt;&lt;br /&gt;
|info-c = &amp;lt;!--文章本文の入る枠の背景色、省略値：#d0d0d0--&amp;gt;&lt;br /&gt;
|info-fc = &amp;lt;!--文章本文のフォントの色、省略値：black--&amp;gt;&lt;br /&gt;
|info-s = &amp;lt;!--文章本文のフォントサイズ (pt)、省略値：8--&amp;gt;&lt;br /&gt;
|info = &amp;lt;!--文章本文、省略値：info--&amp;gt;&lt;br /&gt;
|usercategory  = &amp;lt;!--この利用者が該当するカテゴリその１ (option)、リンクせず「Category:」部も取り除くこと--&amp;gt;&lt;br /&gt;
|usercategory2  = &amp;lt;!--この利用者が該当するカテゴリその２ (option)--&amp;gt;&lt;br /&gt;
|usercategory3  = &amp;lt;!--この利用者が該当するカテゴリその３ (option)--&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
上記のものをコピペor参考にしてご使用ください。また、これを利用して作成したテンプレートは &#039;&#039;テンプレート:Userbox/hoge&#039;&#039;(hogeをテンプレートの名前に置き換えてください)の形で保存してください。また、&amp;lt;nowiki&amp;gt;&amp;lt;noinclude&amp;gt;内に[[Category:Userbox]]&amp;lt;/nowiki&amp;gt;を挿入してください。&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:Userbox]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Userbox&amp;diff=168</id>
		<title>テンプレート:Userbox</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Userbox&amp;diff=168"/>
		<updated>2026-08-01T04:15:25Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「{{#invoke:userbox|userbox}}&amp;lt;noinclude&amp;gt; {{documentation}}&amp;lt;/noinclude&amp;gt;」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:userbox|userbox}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:%E6%94%BF%E5%85%9A%E3%83%9C%E3%83%BC%E3%83%AB&amp;diff=167</id>
		<title>テンプレート:政党ボール</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:%E6%94%BF%E5%85%9A%E3%83%9C%E3%83%BC%E3%83%AB&amp;diff=167"/>
		<updated>2026-07-28T07:04:02Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox main&lt;br /&gt;
|pagename = 政党ボール&lt;br /&gt;
|name = 政党・政治団体ボール&lt;br /&gt;
|lefticon = LDP-icon Japan.png&lt;br /&gt;
|righticon = JCP-icon flag.png&lt;br /&gt;
&lt;br /&gt;
|titlecolor = color(srgb 0.6 0.141176 0.309804)&lt;br /&gt;
|listfontcolor = #000000&lt;br /&gt;
|groupcolor = color(srgb 0.6 0.141176 0.309804)&lt;br /&gt;
|groupfontcolor = #FFF&lt;br /&gt;
|groupwidth = 20%&lt;br /&gt;
|listcolor = #FFF&lt;br /&gt;
|belowcolor = color(srgb 0.6 0.141176 0.309804)&lt;br /&gt;
|belowfontcolor = #FFF&lt;br /&gt;
|notes = &#039;&#039;&#039;我々は人民を幸せにする！&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|group1 = 日本&lt;br /&gt;
|list1 = &#039;&#039;&#039;国会に議席を有する政党・政治団体&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{I|LDP|Japan}}[[自由民主党 (日本)|自由民主党]] (1955年～)・{{I|JIP}}[[日本維新の会 (2016-)]|日本維新の会]] (2015年/2016年～) ({{I|LDP_JIP}}[[自維連立政権]] (2025年～))・{{I|CRA|Japan}}{{I|Centrist Reform Alliance}}{{I|CRA(logo)|Japan}}[[中道改革連合]] (2026年～) ({{I|CDP|Japan}}[[立憲民主党 (日本 2020)|立憲民主党]] (2020年～、現在は参議院のみ)・{{I|Koumeito}}[[公明党]] (1964年～、現在は参議院のみ))・{{I|DPFP|Japan}}[[国民民主党 (日本 2020)|国民民主党]] (2020年～)・{{I|Sanseito|Flag}} {{I|Sanseito}}[[参政党]] (2020年～)・{{I|JCP|flag}} {{I|JCP}}[[日本共産党]] (1922年/1945年～、合法化は1945年)・{{I|Reiwa Shinsengumi}}[[れいわ新選組]] (2019年～)・{{I|SDPJ}}[[社会民主党 (日本 1996-)|社会民主党]] (1945年/1996年～、1996年に{{I|SDPJ|old}}日本社会党より改名)・{{I|CP|Japan}}[[日本保守党_(2023-)|日本保守党]] (2023年～)・{{I|Team Mirai}}[[チームみらい]] (2025年～)・{{I|TCJYA}}{{I|TCJYU}}[[減税日本・ゆうこく連合]] (2026年～)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;地域政党・政治団体&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{I|OSMP}}[[沖縄社会大衆党]] (1950年〜)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;国会に議席を有さない政党・政治団体&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{I|NSP}}[[新社会党]] (1996年～)&lt;br /&gt;
&lt;br /&gt;
|group2 = アメリカ&lt;br /&gt;
|list2 = {{I|GOP}}共和党 (1854年～)・{{I|Democratic Party}}民主党 (1828年～)・{{I|Libertarian Party}}リバタリアン党 (1971年～)・{{I|PCC}}キューバ共産党 (1965年～)・{{I|Comunes}}Comunes (2017年～、2021年に現在の名称に改名)&lt;br /&gt;
&lt;br /&gt;
|group3 = ヨーロッパ&lt;br /&gt;
|list3 = {{I|Fidesz}}フィデス＝ハンガリー市民同盟 (1988年～)・{{I|SD}}スウェーデン民主党 (2005年～)・{{I|Tisza}}尊敬と自由党（ティサ党）（2020年～）&lt;br /&gt;
&lt;br /&gt;
|group4 = アフリカ&lt;br /&gt;
|list4 = {{I|ANC}}アフリカ民族会議 (1923年～)・{{I|PAIGC}}ギニア・カーボベルデ独立アフリカ党 (1956年～)・{{I|Beja Congress}}ベジャ会議 (1957年～)・{{I|PR Congo}}コンゴ労働党 (1969年～)・{{I|BDP}}ボツワナ民主党 (1961年/1966年～、1966年に現在の名称に改名)&lt;br /&gt;
&lt;br /&gt;
|group5 = アジア (日本を除く)&lt;br /&gt;
|list5 = &#039;&#039;&#039;大韓民国 (韓国)&#039;&#039;&#039;&amp;lt;br&amp;gt;{{I|Democratic Party of Korea}}共に民主党 (2014年～)・{{I|People Power Party}}国民の力 (2020年～)・{{I|Rebuilding Korea Party}}祖国革新党 (2024年～)・{{I|Progressive Party of Korea}}進歩党 (2017年～)・{{I|Reform Party of Korea}}改革新党 (2024年～)・{{I|Basic Income Party}}基本所得党 (2019年～)・{{I|Social Democratic Party of Korea}}社会民主党 (2024年～)・{{I|Saenuri Party}}セヌリ党 (2017年～)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;朝鮮民主主義人民共和国 (北朝鮮)&#039;&#039;&#039;&amp;lt;br&amp;gt;{{I|Workers&#039; Party of Korea}}{{I|KWP}}朝鮮労働党 (1949年～)・{{I|KSDP}}朝鮮社会民主党 (1945年～)・{{I|Cheondoism}}天道教青友党 (1946年～)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;中華人民共和国 (中国)&#039;&#039;&#039;&amp;lt;br&amp;gt;{{I|CCP}}{{I|China Kyosan2}}中国共産党 (1921年～)・{{I|RCCK}}中国国民党革命委員会 (1948年～)・{{I|CZGP}}中国致公党 (1925年～)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;台湾 (中華民国)&#039;&#039;&#039;&amp;lt;br&amp;gt;{{I|Kuomintang}}{{I|Kuomintang Flag}}{{I|China Kokumin}}{{I|China Kokumin2}}中国国民党 (1919年～)・{{I|Democratic Progressive Party}}民主進歩党 (1986年～)・{{I|Partido Primero el Pueblo}}親民党 (2000年～)・{{I|Taiwan People&#039;s Party}}台湾民衆党 (2019年～)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ベトナム社会主義共和国&#039;&#039;&#039;&amp;lt;br&amp;gt;{{I|CPV}}ベトナム共産党 (1930年～)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ラオス人民民主共和国&#039;&#039;&#039;&amp;lt;br&amp;gt;{{I|LPRP}}ラオス人民革命党 (1955年～)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;その他&#039;&#039;&#039;&amp;lt;br&amp;gt;{{I|Fatah}}ファタハ (1957年～)・{{I|FRETILIN}}東ティモール独立革命戦線 (1974年～)・{{I|YSP}}イエメン社会党 (1978年～)・{{I|Hezbollah}}ヒズボラ (1982年～)・{{I|Hamas}}ハマス (1987年～)&lt;br /&gt;
&lt;br /&gt;
|group6 = 過去に存在した政党&lt;br /&gt;
|list6 = &#039;&#039;&#039;日本&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{I|RS}}立憲政友会 (1900年〜1940年)・{{I|IRAA}}大政翼賛会 (1940年〜1945年)・{{I|JSP}}日本社会党 (1945年〜1996年、1996年に{{I|SDPJ}}社会民主党へ改名)・{{I|DSP}}民主社会党/民社党 (1969年以降) (1960年〜1994年)・{{I|SDF|Japan}}社会民主連合 (1978年～1994年)・{{I|DPJ|Old}}旧民主党 (1996年〜1998年)・{{I|LLJ}}自由連合 (1989年/1994年〜2010年/2021年)・{{I|JNP}}日本新党 (1992年～1994年)・{{I|Shinseito}}新生党 (1993年～1994年)・{{I|NPS|Japan}}新党さきがけ (1993年～2002年)・{{I|NFP}}新進党 (1994年～1997年)・{{I|LPJ (1998-2003)}}{{I|Liberal Party|Japan (1998-2003)}}自由党 (1998年～2003年)・{{I|DPJ}}民主党 (1998年〜2016年)・{{I|DP}}民進党 (2016年〜2018年)・{{I|CDP|Japan}}旧立憲民主党 (2017年～2020年)・{{I|DPFP|Japan}}旧国民民主党 (2018年～2020年)・{{I|NCP (2000-2002)}}保守党 (2000年～2002年)・{{I|NCP (2002-2003)}}保守新党 (2002年～2003年)・{{I|PNP|Japan}}国民新党 (2005年～2013年)・{{I|Your Party}}みんなの党 (2009年～2014年)・{{I|SPJ}}たちあがれ日本 (2010年～2012年)・{{I|SP|Japan}}太陽の党 (2012年、2014年～2015年)・{{I|JNP JSP Shinsei Koumei DSP NPS SDF DRP}}非自民・非共産8党派連立政権 (1993年～1994年)・{{I|LDP JSP NPS}}{{I|LDP SDPJ NPS}}自社さ連立政権 (1994年～1998年、1996年に{{I|JSP}}日本社会党が{{I|SDPJ}}社会民主党へ改名)・{{I|LDP Koumei}}自公連立政権 (1999年〜2009年、2012年～2025年)・{{I|DPJ SDPJ PNP}}民社国連立政権 (2009年～2010年)・{{I|DPJ PNP}}民国連立政権 (2010年～2012年)・{{I|Japan Innovation Party}}維新の党 (2014年〜2016年)・{{I|LF}}国民の生活が第一 (2012年)・{{I|TPJ}}日本未来の党 (2012年)・{{I|LF}}生活の党 (2012年〜2014年/2016年/2019年)・{{I|DPJ JCP}}{{I|DPJ JCP SDPJ LP}}{{I|CDP JCP SDPJ Reiwa}}民共共闘/野党共闘 (2010年代後半〜2020年代前半)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;外国&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;アジア (日本を除く)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{I|TPRP}}トゥヴァ人民革命党 (1921年～1944年）・{{I|Workers&#039; Party of South Korea}}南朝鮮労働党  (1946年～1949年)・{{I|Workers&#039; Party of North Korea}}北朝鮮労働党 (1946年～1949年)・{{I|Liberal Party of Korea}}自由党 (1951年〜1960年)・{{I|Democratic Party of Korea 1955}}民主党 (1955年〜1963年)・{{I|Ba&#039;athism}}バアス党 (1947年～1966年)・{{I|DRP}}民主共和党 (1963年〜1980年)・{{I|New Democratic Party}}新民党 (1967年〜1980年)・{{I|DJP}}民主正義党 (1981年〜1990年)・{{I|New Korean Democratic Party}}新韓民主党 (1985年〜1988年)・{{I|Liberty Korea Party}}自由韓国党 (1997年〜2020年)・{{I|KPRP}}カンプチア人民革命党（1951～1960年、1979年に再建され、カンボジア人民党に改名）・{{I|CPB}}ビルマ共産党 (1939年〜1989年)・{{I|BSPP}}ビルマ社会主義計画党（1962年～1988年）・{{I|PDPA}}アフガニスタン人民民主党（1965年～1992年）・{{I|MPRP}}モンゴル人民革命党 (1920年～2010年、2010年にモンゴル人民党に改名)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;ヨーロッパ&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{I|Esers}}社会革命党 (エスエル) (1901年〜1921年)・{{I|VF}}祖国戦線 (1933年〜1938年)・{{I|Nasjonal Samling}}国民連合 (1933年〜1945年)・{{I|Arrow Cross Party}}矢十字党 (1939年〜1945年)・{{I|Pērkonkrusts}}雷十字党 (1933年〜1941年)・{{I|BUF}}イギリス・ファシスト連合 (1932年〜1940年)・{{I|Fascism}}国家ファシスト党 (1921年〜1943年)・{{I|Nazi}}国民社会主義ドイツ労働者党 (1920年〜1945年)・{{I|KPD}}ドイツ共産党 (1918年〜1956年)・{{I|SED}}ドイツ社会主義統一党（1946年～1989年）・{{I|MSZMP}}ハンガリー社会主義労働者党（1956年～1989年）・{{I|CPC}}チェコスロバキア共産党（1921年～1992年）・{{I|PCR}}ルーマニア共産党（1921年～1989年）・{{I|BCP}}ブルガリア共産党（1919年～1990年）・{{I|PZPR}}ポーランド統一労働者党（1948年～1990年）・{{I|PPSH}}アルバニア労働党（1941年～1991年）・{{I|SKJ}}ユーゴスラビア共産主義者同盟 (1919年〜1990年)・{{I|PCI}}イタリア共産党 (1921年〜1991年)・{{I|DC}}キリスト教民主党（1942年～1994年）・{{I|Golden Dawn}}黄金の夜明け (1993年～2020年)・{{I|DVRP}}極東共和党 (1990年〜2011年)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;アフリカ&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{I|Rhodesian Front}}ローデシア戦線 (1962年〜1981年)・{{I|ZAPU}}ジンバブエ・アフリカ人民同盟 (1961年〜2008年)・{{I|ZANU}}ジンバブエ・アフリカ民族同盟 (1963年〜1975年)・{{I|SSU}}スーダン社会主義連合（1971年～1985年）・{{I|SRSP}}ソマリ社会主義革命党（1976年～1991年）・{{I|PRPB}}ベナン人民革命党（1975年～1990年）・{{I|WPE}}エチオピア労働者党（1984年～1991年）・{{I|SPUP-SPPF}}セーシェル人民進歩戦線 (セーシェル人民統一党) (セーシェル人民進歩戦線としては1978年～2009年、現在は統一セーシェル)&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;アメリカ&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
{{I|Silver Legion of America}}アメリカ白銀軍団 (1933年〜1941年)・{{I|NJM}}ニュー・ジュエル運動 (1973年〜1983年)&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:From_sisters%27_wiki&amp;diff=166</id>
		<title>テンプレート:From sisters&#039; wiki</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:From_sisters%27_wiki&amp;diff=166"/>
		<updated>2026-07-23T09:41:01Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「&amp;lt;div class=&amp;quot;boilerplate&amp;quot; id=&amp;quot;c-fairuse&amp;quot; style=&amp;quot;width:90%; margin:0 auto; padding:10px; border:1px solid #A8ACA8; background:#FFFFCC; color:#000;&amp;quot;&amp;gt; &amp;#039;&amp;#039;&amp;#039;このファイルは他言語や姉妹のウィキからコピーされたものです。一般的には、CC BY SA 4.0として扱われます。&amp;#039;&amp;#039;&amp;#039; &amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt; {{documentation}}&amp;lt;/noinclude&amp;gt;」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;boilerplate&amp;quot; id=&amp;quot;c-fairuse&amp;quot; style=&amp;quot;width:90%; margin:0 auto; padding:10px; border:1px solid #A8ACA8; background:#FFFFCC; color:#000;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;このファイルは他言語や姉妹のウィキからコピーされたものです。一般的には、CC BY SA 4.0として扱われます。&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Self_CC-BY-SA&amp;diff=165</id>
		<title>テンプレート:Self CC-BY-SA</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Self_CC-BY-SA&amp;diff=165"/>
		<updated>2026-07-23T09:11:37Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「&amp;lt;div class=&amp;quot;boilerplate&amp;quot; id=&amp;quot;c-fairuse&amp;quot; style=&amp;quot;width:90%; margin:0 auto; padding:10px; border:1px solid #A8ACA8; background:#FFFFCC; color:#000;&amp;quot;&amp;gt; &amp;#039;&amp;#039;&amp;#039;このファイルはその撮影者または著作者がCC BY-SA 4.0のもとでアップロードしたものです。&amp;#039;&amp;#039;&amp;#039; &amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt; {{documentation}}&amp;lt;/noinclude&amp;gt;」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;boilerplate&amp;quot; id=&amp;quot;c-fairuse&amp;quot; style=&amp;quot;width:90%; margin:0 auto; padding:10px; border:1px solid #A8ACA8; background:#FFFFCC; color:#000;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;このファイルはその撮影者または著作者がCC BY-SA 4.0のもとでアップロードしたものです。&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:T/piece&amp;diff=164</id>
		<title>テンプレート:T/piece</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:T/piece&amp;diff=164"/>
		<updated>2026-07-23T09:04:11Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「{{#ifeq: {{{1|---}}}|---||&amp;amp;#124;&amp;lt;font color=&amp;quot;gray&amp;quot;&amp;gt;&amp;#039;&amp;#039;&amp;amp;lt;{{{1}}}&amp;amp;gt;&amp;#039;&amp;#039;&amp;lt;/font&amp;gt;}}&amp;lt;noinclude&amp;gt; {{documentation}}&amp;lt;/noinclude&amp;gt;」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq: {{{1|---}}}|---||&amp;amp;#124;&amp;lt;font color=&amp;quot;gray&amp;quot;&amp;gt;&#039;&#039;&amp;amp;lt;{{{1}}}&amp;amp;gt;&#039;&#039;&amp;lt;/font&amp;gt;}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:T/doc&amp;diff=163</id>
		<title>テンプレート:T/doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:T/doc&amp;diff=163"/>
		<updated>2026-07-23T08:40:26Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「;解説 :入力例を表示するために使用できるパラメータの変数サンプル (0〜20) つきテンプレートリンク。 :Template:T/pieceを利用しています。 ;構文 :{{t|t|パラメータ1|パラメータ2|パラメータ3|パラメータ4|...|パラメータ20}} ;サンプルコード :&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{t|infobox}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; は次のようになります... :{{t|infobox}} :&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{t|infobox|項目1|項目2|項目3|項目…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;解説&lt;br /&gt;
:入力例を表示するために使用できるパラメータの変数サンプル (0〜20) つきテンプレートリンク。&lt;br /&gt;
:[[Template:T/piece]]を利用しています。&lt;br /&gt;
;構文&lt;br /&gt;
:{{t|t|パラメータ1|パラメータ2|パラメータ3|パラメータ4|...|パラメータ20}}&lt;br /&gt;
;サンプルコード&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{t|infobox}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; は次のようになります...&lt;br /&gt;
:{{t|infobox}}&lt;br /&gt;
:&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{t|infobox|項目1|項目2|項目3|項目4|項目5|...}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; は次のようになります...&lt;br /&gt;
:{{t|infobox|項目1|項目2|項目3|項目4|項目5|...}}&lt;br /&gt;
;関連項目&lt;br /&gt;
:WoWWikiの[[w:c:wow:Template:T|Template:T]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[カテゴリ:テンプレート]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;[[カテゴリ:テンプレートドキュメンテーション|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:T&amp;diff=162</id>
		<title>テンプレート:T</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:T&amp;diff=162"/>
		<updated>2026-07-23T08:37:50Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「{{#ifeq:{{{style|}}}|code|&amp;lt;code&amp;gt;}}&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;{{#if:{{{prefix|}}}|{{{prefix}}}:}}{{{1}}}&amp;lt;!-- --&amp;gt;{{#if:{{{2|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&amp;#039;&amp;#039;{{{2}}}&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;}}&amp;lt;!-- --&amp;gt;{{#if:{{{3|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&amp;#039;&amp;#039;{{{3}}}&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;}}&amp;lt;!-- --&amp;gt;{{#if:{{{4|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&amp;#039;&amp;#039;{{{4}}}&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;}}&amp;lt;!-- --&amp;gt;{{#if:{{{5|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&amp;#039;&amp;#039;{{{5}}}&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;}}&amp;lt;!-- --&amp;gt;{{#if:{{{6|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#ifeq:{{{style|}}}|code|&amp;lt;code&amp;gt;}}&amp;lt;nowiki&amp;gt;{{&amp;lt;/nowiki&amp;gt;{{#if:{{{prefix|}}}|{{{prefix}}}:}}[[Template:{{{1}}}|{{{1}}}]]&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{2|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{2}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{3|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{3}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{4|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{4}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{5|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{5}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{6|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{6}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{7|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{7}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{8|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{8}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{9|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{9}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{10|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{10}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{11|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{11}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{12|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{12}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{13|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{13}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{14|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{14}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{15|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{15}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{16|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{16}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{17|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{17}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{18|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{18}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{19|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{19}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{20|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{20}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;{{#if:{{{21|}}}|&amp;amp;#124;&amp;lt;span style=&amp;quot;color:gray;&amp;quot;&amp;gt;&#039;&#039;{{{21}}}&#039;&#039;&amp;lt;/span&amp;gt;}}&amp;lt;!--&lt;br /&gt;
--&amp;gt;&amp;lt;nowiki&amp;gt;}}&amp;lt;/nowiki&amp;gt;{{#ifeq:{{{style|}}}|code|&amp;lt;/code&amp;gt;}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation|SPW=is newer}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Self/doc&amp;diff=161</id>
		<title>テンプレート:Self/doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Self/doc&amp;diff=161"/>
		<updated>2026-07-23T08:33:20Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「;解説 :このテンプレートは撮影者または著作者がアップロードした画像であることを示すために使用します。 ;構文 :画像情報ページで &amp;lt;code&amp;gt;{{t|self}}&amp;lt;/code&amp;gt; と入力してください。  &amp;lt;includeonly&amp;gt;カテゴリ:テンプレート&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{PAGENAME}}&amp;lt;/noinclude&amp;gt;」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;;解説&lt;br /&gt;
:このテンプレートは撮影者または著作者がアップロードした画像であることを示すために使用します。&lt;br /&gt;
;構文&lt;br /&gt;
:画像情報ページで &amp;lt;code&amp;gt;{{t|self}}&amp;lt;/code&amp;gt; と入力してください。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[カテゴリ:テンプレート]]&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;[[カテゴリ:テンプレートドキュメンテーション|{{PAGENAME}}]]&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Self&amp;diff=160</id>
		<title>テンプレート:Self</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Self&amp;diff=160"/>
		<updated>2026-07-23T08:31:26Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「&amp;lt;div class=&amp;quot;boilerplate&amp;quot; id=&amp;quot;c-fairuse&amp;quot; style=&amp;quot;width:90%; margin:0 auto; padding:10px; border:1px solid #A8ACA8; background:#FFFFCC; color:#000;&amp;quot;&amp;gt; &amp;#039;&amp;#039;&amp;#039;このファイルはその撮影者または著作者がアップロードしたものです。このファイルの二次利用は著作者の指示に従ってください&amp;#039;&amp;#039;&amp;#039; &amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt; {{documentation}}&amp;lt;/noinclude&amp;gt;」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;boilerplate&amp;quot; id=&amp;quot;c-fairuse&amp;quot; style=&amp;quot;width:90%; margin:0 auto; padding:10px; border:1px solid #A8ACA8; background:#FFFFCC; color:#000;&amp;quot;&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;このファイルはその撮影者または著作者がアップロードしたものです。このファイルの二次利用は著作者の指示に従ってください&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=MediaWiki:Licenses&amp;diff=159</id>
		<title>MediaWiki:Licenses</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=MediaWiki:Licenses&amp;diff=159"/>
		<updated>2026-07-23T08:14:40Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「- * 自分の画像: ** Self|私が自分でこの画像を作成しました。 ** Self_CC-BY-SA|私が自分でこの画像を作成し、表示 - 継承ライセンスのもとで使用を許可します。 * 姉妹ウィキ ** From sisters&amp;#039; wiki|私は他言語や姉妹のウィキからこれを入手しました。 * ウィキメディア: ** From Wikimedia|私はウィキペディアまたはウィキメディア・プロジェクトからこれを入手し…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-&lt;br /&gt;
* 自分の画像:&lt;br /&gt;
** Self|私が自分でこの画像を作成しました。&lt;br /&gt;
** Self_CC-BY-SA|私が自分でこの画像を作成し、表示 - 継承ライセンスのもとで使用を許可します。&lt;br /&gt;
* 姉妹ウィキ&lt;br /&gt;
** From sisters&#039; wiki|私は他言語や姉妹のウィキからこれを入手しました。&lt;br /&gt;
* ウィキメディア:&lt;br /&gt;
** From Wikimedia|私はウィキペディアまたはウィキメディア・プロジェクトからこれを入手しました。&lt;br /&gt;
* フリーライセンス:&lt;br /&gt;
** CC-BY-SA|これはクリエィティブ・コモンズ 表示 - 継承ライセンスのもとで許諾されています。&lt;br /&gt;
** GFDL|これはGFDLライセンスのもとで許諾されています。&lt;br /&gt;
** GPL|これはGPLライセンスのもとで許諾されています。&lt;br /&gt;
** LGPL|これはLGPLライセンスのもとで許諾されています。&lt;br /&gt;
** MIT|これはMITライセンスのもとで許諾されています。&lt;br /&gt;
** Other free|これはその他のフリーライセンスのもとで許諾されています。&lt;br /&gt;
* その他&lt;br /&gt;
** PD|これはパブリックドメインです。&lt;br /&gt;
** Permission|これは著作権がありますが、著作権保持者によってこのwikiでの使用が許可されています。&lt;br /&gt;
** Non-free image|これは著作権があり、日本国著作権法における引用にのみ使用します。&lt;br /&gt;
** Fairuse|これは著作権がありますが、アメリカ合衆国著作権法によりフェアユースとみなして使われます。&lt;br /&gt;
** nolicense|この画像のライセンスは不明です&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E6%97%A5%E6%9C%AC%E5%85%B1%E7%94%A3%E5%85%9A&amp;diff=158</id>
		<title>日本共産党</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E6%97%A5%E6%9C%AC%E5%85%B1%E7%94%A3%E5%85%9A&amp;diff=158"/>
		<updated>2026-07-23T07:42:11Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;日本共産党&#039;&#039;&#039;（にほんきょうさんとう）は、日本の共産主義政党です。&lt;br /&gt;
&lt;br /&gt;
{{Infobox Party&lt;br /&gt;
| title = 日本共産党&lt;br /&gt;
| 現地名 = 日本語：日本共産党 (にほんきょうさんとう)&lt;br /&gt;
| founded = &lt;br /&gt;
| ended = &lt;br /&gt;
| onlypredecessor = &lt;br /&gt;
| predicon = &lt;br /&gt;
| predsuffix = &lt;br /&gt;
| onlysuccessor = &lt;br /&gt;
| nexticon = &lt;br /&gt;
| nextsuffix = &lt;br /&gt;
| onlypredecessor2 = &lt;br /&gt;
| predicon2 = &lt;br /&gt;
| onlysuccessor2 = &lt;br /&gt;
| nexticon2 = &lt;br /&gt;
| onlypredecessor3 = &lt;br /&gt;
| predicon3 = &lt;br /&gt;
| onlysuccessor3 = &lt;br /&gt;
| nexticon3 = &lt;br /&gt;
| onlypredecessor4 = &lt;br /&gt;
| predicon4 = &lt;br /&gt;
| onlysuccessor4 = &lt;br /&gt;
| image = &lt;br /&gt;
| caption = WE ARE 共産党!!&lt;br /&gt;
| イデオロギー = &lt;br /&gt;
| 所属 = &lt;br /&gt;
| 宗教 = &lt;br /&gt;
| 誕生日 = 1922年7月15日&amp;lt;br&amp;gt;（1945年12月に合法化）&lt;br /&gt;
| 命日 = &lt;br /&gt;
| 友達 = &lt;br /&gt;
| 仲間 = &lt;br /&gt;
| 敵 = &lt;br /&gt;
| 過去 = &lt;br /&gt;
| 未来 = &lt;br /&gt;
| 好きな物 = &lt;br /&gt;
| 嫌いな物 = &lt;br /&gt;
| 一人称 = &lt;br /&gt;
| 呼ばれ方 = &lt;br /&gt;
| ボーク = &lt;br /&gt;
| 性格 = &lt;br /&gt;
| 一言 = 共産主義万歳！社会主義万歳！&lt;br /&gt;
| 党旗の変遷 = &lt;br /&gt;
| 党旗の名前 = &lt;br /&gt;
| 現状 = &lt;br /&gt;
| 標語 = &lt;br /&gt;
| 党歌 = &lt;br /&gt;
| 党員人数 = &lt;br /&gt;
| 目標 = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 特徴 ==&lt;br /&gt;
* 党の名称は「日本共産党」。&amp;lt;s&amp;gt;協賛しているわけではないし狂産党でもない。&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{政党ボール}}&lt;br /&gt;
[[Category:日本の政党]]&lt;br /&gt;
[[Category:共産主義]]&lt;br /&gt;
[[Category:社会主義]]&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=MediaWiki:Cosmos.js&amp;diff=156</id>
		<title>MediaWiki:Cosmos.js</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=MediaWiki:Cosmos.js&amp;diff=156"/>
		<updated>2026-07-20T08:55:12Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$(function() {&lt;br /&gt;
	window.PBWTools = {&lt;br /&gt;
		collapseToolbar: function () {&lt;br /&gt;
			var toolbarCollapsed = mw.storage.get(&amp;quot;pbw-toolbar-collapsed&amp;quot;) !== &amp;quot;true&amp;quot; ? false : true;&lt;br /&gt;
			$(&amp;quot;&amp;lt;div&amp;gt;&amp;quot;).addClass(&amp;quot;cosmos-toolbar-collapse-button&amp;quot;).appendTo(&amp;quot;#cosmos-toolbar&amp;quot;);&lt;br /&gt;
			$(&amp;quot;.cosmos-toolbar-collapse-button&amp;quot;).click(function(target) {&lt;br /&gt;
				$(&amp;quot;#cosmos-toolbar&amp;quot;).toggleClass(&amp;quot;cosmos-toolbar-collapsed&amp;quot;);&lt;br /&gt;
				mw.storage.set(&amp;quot;pbw-toolbar-collapsed&amp;quot;, !toolbarCollapsed);&lt;br /&gt;
			});&lt;br /&gt;
			if (toolbarCollapsed) {&lt;br /&gt;
				$(&amp;quot;#cosmos-toolbar&amp;quot;).addClass(&amp;quot;cosmos-toolbar-collapsed&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		init: function () {&lt;br /&gt;
			mw.loader.using(&amp;quot;mediawiki.storage&amp;quot;).then(this.collapseToolbar);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
	window.PBWTools.init();&lt;br /&gt;
});&lt;br /&gt;
/*font tag for HTML5*/&lt;br /&gt;
document.querySelectorAll(&amp;quot;font&amp;quot;).forEach(function(element){&lt;br /&gt;
	element.style.color=element.getAttribute(&amp;quot;color&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
	element.style.fontFamily=element.getAttribute(&amp;quot;face&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
	element.style.fontSize=[&amp;quot;x-small&amp;quot;,&amp;quot;small&amp;quot;,&amp;quot;medium&amp;quot;,&amp;quot;large&amp;quot;,&amp;quot;x-large&amp;quot;,&amp;quot;xx-large&amp;quot;,&amp;quot;xxx-large&amp;quot;][Number(element.getAttribute(&amp;quot;size&amp;quot;))-1||2]||&amp;quot;&amp;quot;;&lt;br /&gt;
});&lt;br /&gt;
/*cosmos-banner*/&lt;br /&gt;
(function(){&lt;br /&gt;
	let myHomeLink=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
	myHomeLink.innerHTML=`&amp;lt;a href=&amp;quot;/&amp;quot;&amp;gt;ポリティボールwiki&amp;lt;/a&amp;gt;`;&lt;br /&gt;
	myHomeLink.id=&amp;quot;mw-banner-home&amp;quot;;&lt;br /&gt;
	myHomeLink.classList.add(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	document.getElementById(&amp;quot;cosmos-banner-content&amp;quot;).prepend(myHomeLink);&lt;br /&gt;
	if(window.innerWidth&amp;gt;850&amp;amp;&amp;amp;window.scrollY&amp;lt;60){&lt;br /&gt;
		document.getElementById(&amp;quot;cosmos-banner&amp;quot;).classList.add(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
		myHomeLink.classList.remove(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
})();&lt;br /&gt;
window.onscroll=function(){&lt;br /&gt;
let cosmosBanner=document.getElementById(&amp;quot;cosmos-banner&amp;quot;);&lt;br /&gt;
if(window.scrollY&amp;gt;60){&lt;br /&gt;
	if(document.querySelector(&amp;quot;html&amp;quot;).classList.contains(&amp;quot;client-darkmode&amp;quot;)){&lt;br /&gt;
		cosmosBanner.style.background=&amp;quot;rgba(20,20,20,0.7)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	else{&lt;br /&gt;
		cosmosBanner.style.background=&amp;quot;rgba(20,20,20,0.75)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	cosmosBanner.style.boxShadow=&amp;quot;0 2px 5px rgba(0, 0, 0, .4)&amp;quot;;&lt;br /&gt;
	cosmosBanner.classList.remove(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
	document.getElementById(&amp;quot;mw-banner-home&amp;quot;).classList.add(&amp;quot;visible&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
else{&lt;br /&gt;
	cosmosBanner.style.background=&amp;quot;&amp;quot;;&lt;br /&gt;
	cosmosBanner.style.boxShadow=&amp;quot;&amp;quot;;&lt;br /&gt;
	if(window.innerWidth&amp;gt;850){&lt;br /&gt;
		cosmosBanner.classList.add(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
		document.getElementById(&amp;quot;mw-banner-home&amp;quot;).classList.remove(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	else{&lt;br /&gt;
		cosmosBanner.classList.remove(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
document.body.style.setProperty(&amp;quot;--theme-body-background-position&amp;quot;,&amp;quot;center &amp;quot;+(window.scrollY/(document.body.scrollHeight-window.innerHeight)*((1080-window.innerHeight)/(1080/window.innerHeight*3)))+&amp;quot;px&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
setInterval(function(){&lt;br /&gt;
	/*spoiler*/&lt;br /&gt;
	document.querySelectorAll(&amp;quot;.mw-spoiler&amp;quot;).forEach(function(element){&lt;br /&gt;
		element.title=&amp;quot;クリックで表示&amp;quot;;&lt;br /&gt;
		element.onclick=function(e){&lt;br /&gt;
		if(element.classList.contains(&amp;quot;mw-spoiler&amp;quot;)){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
		}&lt;br /&gt;
		element.classList.remove(&amp;quot;mw-spoiler&amp;quot;);&lt;br /&gt;
		element.classList.add(&amp;quot;mw-spoiler-visible&amp;quot;);&lt;br /&gt;
		element.title=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
	});&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;talk-comment-mode--cs&amp;quot;)){&lt;br /&gt;
			document.querySelectorAll(&amp;quot;span[data-mw-comment-end]:not(h2 span):not(.splited)&amp;quot;).forEach(function(element){&lt;br /&gt;
			element.after(document.createElement(&amp;quot;hr&amp;quot;));&lt;br /&gt;
			element.classList.add(&amp;quot;splited&amp;quot;);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	//Reply-Link&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)){&lt;br /&gt;
			document.querySelectorAll(&amp;quot;.ext-discussiontools-init-replylink-buttons:not(.added):not(.ext-discussiontools-ui-replyWidget-preview .ext-discussiontools-init-replylink-buttons)&amp;quot;).forEach(function(element){&lt;br /&gt;
			let myLink=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
			myLink.innerHTML=&amp;quot;返信リンクを追加&amp;quot;;&lt;br /&gt;
			myLink.style.cssText=&amp;quot;margin-left:1em;display:none;&amp;quot;;&lt;br /&gt;
			element.after(myLink);&lt;br /&gt;
			element.classList.add(&amp;quot;added&amp;quot;);&lt;br /&gt;
			setInterval(function(){&lt;br /&gt;
				if(element.classList.contains(&amp;quot;ext-discussiontools-init-replylink-active&amp;quot;)){&lt;br /&gt;
					myLink.style.fontWeight=&amp;quot;bold&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myLink.style.fontWeight=&amp;quot;&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				if(document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;)){&lt;br /&gt;
					myLink.style.display=&amp;quot;inline&amp;quot;;&lt;br /&gt;
					if(element.classList.contains(&amp;quot;ext-discussiontools-init-replylink-active&amp;quot;)&amp;amp;&amp;amp;!element.classList.contains(&amp;quot;clicked&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;reply-button-click&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked){&lt;br /&gt;
						setTimeout(function(){&lt;br /&gt;
							myLink.click();&lt;br /&gt;
						},500);&lt;br /&gt;
						element.classList.add(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myLink.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					element.classList.remove(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
			},10);&lt;br /&gt;
			myLink.addEventListener(&amp;quot;click&amp;quot;,function(){&lt;br /&gt;
				document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).focus();&lt;br /&gt;
				setTimeout(function(){&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode span&amp;quot;).innerHTML=&amp;quot;[[{{FULLPAGENAME}}#&amp;quot;+element.getAttribute(&amp;quot;data-mw-thread-id&amp;quot;)+&amp;quot;|&amp;gt;&amp;gt;返信先]]\n\n&amp;quot;+document.querySelector(&amp;quot;.ve-ce-attachedRootNode span&amp;quot;).innerHTML;&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).blur();&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).focus();&lt;br /&gt;
				},1000);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
		document.querySelectorAll(&amp;quot;a:not(.added)&amp;quot;).forEach(function(element){&lt;br /&gt;
			if(decodeURI(element.href).indexOf(&amp;quot;#c-&amp;quot;)!=-1&amp;amp;&amp;amp;element.classList.contains(&amp;quot;mw-selflink-fragment&amp;quot;)){&lt;br /&gt;
					let inputNode=document.getElementById(decodeURI(element.href).split(&amp;quot;#&amp;quot;)[1]).parentElement.cloneNode(true);&lt;br /&gt;
					element.title=inputNode.textContent;&lt;br /&gt;
					element.classList.add(&amp;quot;added&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
},100);&lt;br /&gt;
/*Snow Flake Fnc&lt;br /&gt;
(function(){&lt;br /&gt;
	for(var yukiLength=0;yukiLength&amp;lt;(Math.round(document.body.offsetHeight/40)&amp;lt;500?Math.round(document.body.offsetHeight/40):500);yukiLength++){&lt;br /&gt;
	let myimg=document.createElement(&amp;quot;img&amp;quot;);&lt;br /&gt;
	myimg.src=&amp;quot;https://japolandballfanon.miraheze.org/wiki/Special:FilePath/Pagesnowflake.svg&amp;quot;;&lt;br /&gt;
	myimg.width=&amp;quot;40&amp;quot;;&lt;br /&gt;
	myimg.height=&amp;quot;40&amp;quot;;&lt;br /&gt;
	myimg.style.cssText=&amp;quot;position:absolute;&amp;quot;;&lt;br /&gt;
	myimg.style.top=(Math.floor(Math.random() *(document.body.offsetHeight-40))+1)+&amp;quot;px&amp;quot;;&lt;br /&gt;
	myimg.style.left=(Math.floor(Math.random() *(document.body.offsetWidth-40))+1)+&amp;quot;px&amp;quot;;&lt;br /&gt;
	document.body.style.background=window.getComputedStyle(document.getElementById(&amp;quot;mw-content&amp;quot;)).background;&lt;br /&gt;
	document.body.appendChild(myimg);&lt;br /&gt;
	myimg.onclick=function(){&lt;br /&gt;
	myimg.remove();	&lt;br /&gt;
	};&lt;br /&gt;
	}&lt;br /&gt;
})();&lt;br /&gt;
*/&lt;br /&gt;
function addScript(src){&lt;br /&gt;
	let scr=document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	scr.src=&amp;quot;https://japolandball.miraheze.org/wiki/MediaWiki:&amp;quot;+src+&amp;quot;.js?action=raw&amp;amp;ctype=text/javascript&amp;quot;;&lt;br /&gt;
	document.body.appendChild(scr);&lt;br /&gt;
}&lt;br /&gt;
function importItem(href,rel,element=&amp;quot;head&amp;quot;){&lt;br /&gt;
	let link=document.createElement(&amp;quot;link&amp;quot;);&lt;br /&gt;
	link.href=href;&lt;br /&gt;
	link.rel=rel;&lt;br /&gt;
	document.querySelector(element).appendChild(link);&lt;br /&gt;
}&lt;br /&gt;
/*iconMaker*/&lt;br /&gt;
addScript(&amp;quot;IconMaker&amp;quot;);&lt;br /&gt;
/*AutoFill*/&lt;br /&gt;
addScript(&amp;quot;AutoFill&amp;quot;);&lt;br /&gt;
/*AbuseFilter*/&lt;br /&gt;
addScript(&amp;quot;AbuseFilter&amp;quot;);&lt;br /&gt;
/*limited design*/&lt;br /&gt;
addScript(&amp;quot;LimitedDesign&amp;quot;);&lt;br /&gt;
/*ArticleTemplate*/&lt;br /&gt;
addScript(&amp;quot;ArticleTemplate&amp;quot;);&lt;br /&gt;
/*UserColor*/&lt;br /&gt;
addScript(&amp;quot;LinkColor&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
(function(){&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-checkbox&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-checkbox&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let checkbox=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		checkbox.type=&amp;quot;checkbox&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		myZobj.boxsize?checkbox.style.width=myZobj.boxsize:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.boxsize?checkbox.style.height=myZobj.boxsize:&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				checkbox.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		myZobj.id?checkbox.id=myZobj.id:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.value?checkbox.value=myZobj.value:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.checked==&amp;quot;true&amp;quot;?checkbox.checked=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?checkbox.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.label){&lt;br /&gt;
			let mylabel=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			mylabel.style.userSelect=&amp;quot;none&amp;quot;;&lt;br /&gt;
			myZobj.labelfontsize?mylabel.style.fontSize=myZobj.labelfontsize:&amp;quot;&amp;quot;;&lt;br /&gt;
			if(myZobj.labelposition&amp;amp;&amp;amp;myZobj.labelposition==&amp;quot;after&amp;quot;){&lt;br /&gt;
				mylabel.innerHTML=myZobj.label;&lt;br /&gt;
				mylabel.appendChild(checkbox);&lt;br /&gt;
				mylabel.innerHTML+=`&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:${myZobj.detailfontsize||&amp;quot;0.8em&amp;quot;};&amp;quot;&amp;gt;${myZobj.detail||&amp;quot;&amp;quot;}&amp;lt;/span&amp;gt;`;&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				mylabel.appendChild(checkbox);&lt;br /&gt;
				mylabel.innerHTML+=myZobj.label+&amp;quot;&amp;lt;br&amp;gt;&amp;quot;+(myZobj.detail?(`&amp;lt;span style=&amp;quot;margin-left:${myZobj.boxsize||&amp;quot;1em&amp;quot;};&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`):&amp;quot;&amp;quot;)+`&amp;lt;span style=&amp;quot;font-size:${myZobj.detailfontsize||&amp;quot;0.8em&amp;quot;};&amp;quot;&amp;gt;${myZobj.detail||&amp;quot;&amp;quot;}&amp;lt;/span&amp;gt;`;&lt;br /&gt;
			}&lt;br /&gt;
			element.after(mylabel);&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			element.after(checkbox);&lt;br /&gt;
		}&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-text&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-text&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mytextbox=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mytextbox.type=&amp;quot;text&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		mytextbox.value=myZobj.value||&amp;quot;&amp;quot;;&lt;br /&gt;
		mytextbox.placeholder=myZobj.placeholder||&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mytextbox.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mytextbox.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		mytextbox.style.height=myZobj.height||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mytextbox.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mytextbox.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mytextbox.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mytextbox);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;mw-upload-polandball-rule-checkbox&amp;quot;)?document.getElementById(&amp;quot;mw-upload-polandball-rule-checkbox&amp;quot;).onchange=function(e){&lt;br /&gt;
		if(e.target.checked){&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
			document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=function(event){&lt;br /&gt;
				event.preventDefault();&lt;br /&gt;
				let isCheckboxChecked=true;&lt;br /&gt;
				for(let myElementLength=0;myElementLength&amp;lt;document.querySelectorAll(&amp;quot;.mw-upload-polandball-rule-confirm-checkbox&amp;quot;).length;myElementLength++){&lt;br /&gt;
					if(document.querySelectorAll(&amp;quot;.mw-upload-polandball-rule-confirm-checkbox&amp;quot;)[myElementLength].checked==false){&lt;br /&gt;
						isCheckboxChecked=false;&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if(isCheckboxChecked){&lt;br /&gt;
					document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=null;&lt;br /&gt;
					document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).click();&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					window.alert(&amp;quot;ポーランドボールのルールに則ったイラストをアップロードしてください。&amp;quot;);&lt;br /&gt;
					location.hash=&amp;quot;&amp;quot;;&lt;br /&gt;
					location.hash=&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
			};&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
			document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=null;&lt;br /&gt;
		}&lt;br /&gt;
	}:&amp;quot;&amp;quot;;&lt;br /&gt;
	if(document.getElementById(&amp;quot;wpDestFile&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;wpDestFile&amp;quot;).value!=&amp;quot;&amp;quot;){&lt;br /&gt;
		document.getElementById(&amp;quot;mw-upload-polandball-rule-parent-div&amp;quot;).innerHTML=&amp;quot;&amp;lt;span style=&#039;font-size:1.2em;&#039;&amp;gt;※回答済み&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	document.querySelector(&amp;quot;.filehistory,.mw-blocklist&amp;quot;)?document.querySelectorAll(&amp;quot;.filehistory,.mw-blocklist&amp;quot;).forEach(function(element){&lt;br /&gt;
		let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		mydiv.style.cssText=&amp;quot;max-width:100%;overflow-x:auto;&amp;quot;;&lt;br /&gt;
		mydiv.appendChild(element.cloneNode(true));&lt;br /&gt;
		element.after(mydiv);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	if(mw.config.values.wgAction==&amp;quot;edit&amp;quot;||mw.config.values.wgAction==&amp;quot;submit&amp;quot;){&lt;br /&gt;
		let mylabel=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		mylabel.style.cssText=&amp;quot;font-size:1.2em;font-weight:bold;&amp;quot;;&lt;br /&gt;
		mylabel.innerHTML=`&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;mw-edit-rule-checker&amp;quot; style=&amp;quot;width:1.5em;height:1.5em;margin-right:1.5em&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;Project:ルール&amp;quot; style=&amp;quot;color:var(--theme-link-color) !important;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;ルール&amp;lt;/a&amp;gt;をよく読み、これに遵守します。`;&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(document.createElement(&amp;quot;br&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(document.createElement(&amp;quot;br&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(mylabel);&lt;br /&gt;
		document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			if(document.getElementById(&amp;quot;mw-edit-rule-checker&amp;quot;).checked){&lt;br /&gt;
				document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=null;&lt;br /&gt;
				document.getElementById(&amp;quot;wpSave&amp;quot;).click();&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				window.alert(&amp;quot;wikiのルールに則った編集を行ってください。過激な発言等は削除されます。&amp;quot;);&lt;br /&gt;
				if(window.confirm(&amp;quot;ルールに同意して保存しますか？\n編集画面に戻る際はキャンセルを選択してください。&amp;quot;)){&lt;br /&gt;
					document.getElementById(&amp;quot;mw-edit-rule-checker&amp;quot;).checked=true;&lt;br /&gt;
					document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=null;&lt;br /&gt;
					document.getElementById(&amp;quot;wpSave&amp;quot;).click();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cursor&amp;quot;)){&lt;br /&gt;
		document.querySelector(&amp;quot;html&amp;quot;).style.cssText=&amp;quot;--theme-page-cursor:url(/wiki/Special:FilePath/&amp;quot;+document.getElementById(&amp;quot;template-cursor-auto&amp;quot;).innerHTML+&amp;quot;),auto !important;--theme-page-cursor-link:url(/wiki/Special:FilePath/&amp;quot;+document.getElementById(&amp;quot;template-cursor-pointer&amp;quot;).innerHTML+&amp;quot;),pointer !important;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;mw-upload-file-uploader&amp;quot;)){&lt;br /&gt;
		let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		let myspan=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		mydiv.id=&amp;quot;mw-upload-file-uploader-area&amp;quot;;&lt;br /&gt;
		myspan.id=&amp;quot;mw-upload-file-uploader-text&amp;quot;;&lt;br /&gt;
		myspan.innerHTML=&amp;quot;ファイルをここにドロップ&amp;quot;;&lt;br /&gt;
		mydiv.appendChild(myspan);&lt;br /&gt;
		document.body.appendChild(mydiv);&lt;br /&gt;
		document.getElementById(&amp;quot;mw-upload-file-uploader&amp;quot;).remove();&lt;br /&gt;
		window.ondragover=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.body.onmousemove=function(){&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.body.ondrop=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			document.querySelector(&amp;quot;input[type=&#039;file&#039;]&amp;quot;).files=e.dataTransfer.files;&lt;br /&gt;
			document.getElementById(&amp;quot;wpDestFile&amp;quot;).value==&amp;quot;&amp;quot;?document.getElementById(&amp;quot;wpDestFile&amp;quot;).value=document.querySelector(&amp;quot;input[type=&#039;file&#039;]&amp;quot;).files[0].name:&amp;quot;&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	//Template:LCS&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-lcs&amp;quot;)||mw.config.values.wgNamespaceNumber==1){&lt;br /&gt;
		document.body.classList.add(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	//Template:DSC&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-dsc&amp;quot;)){&lt;br /&gt;
		document.body.classList.remove(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	//Talk Radio Button&lt;br /&gt;
	if(document.getElementById(&amp;quot;top-notice-ns&amp;quot;)&amp;amp;&amp;amp;document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)){&lt;br /&gt;
		let myForm=document.createElement(&amp;quot;form&amp;quot;);&lt;br /&gt;
		let myLabelDefault=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		let myLabelCS=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		let myLabelReply=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		myLabelDefault.innerHTML=`&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;talkCommentMode&amp;quot; id=&amp;quot;talk-comment-mode--default&amp;quot; value=&amp;quot;default&amp;quot;&amp;gt;デフォルトモード`;&lt;br /&gt;
		myLabelDefault.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myLabelCS.innerHTML=`&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;talkCommentMode&amp;quot; id=&amp;quot;talk-comment-mode--cs&amp;quot; value=&amp;quot;cs&amp;quot;&amp;gt;疑似CS`;&lt;br /&gt;
		myLabelCS.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myLabelReply.innerHTML=`&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;reply-button-click&amp;quot;&amp;gt;&amp;lt;a&amp;gt;&amp;gt;&amp;gt;返信先&amp;lt;/a&amp;gt;をデフォルトで入力`;&lt;br /&gt;
		myLabelReply.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myForm.id=&amp;quot;talk-comment-form&amp;quot;;&lt;br /&gt;
		myForm.style.cssText=&amp;quot;border-bottom:1px solid var(--theme-text-color);font-size:1.1em;margin-bottom:0.8em;&amp;quot;;&lt;br /&gt;
		myForm.appendChild(myLabelDefault);&lt;br /&gt;
		myForm.appendChild(myLabelCS);&lt;br /&gt;
		myForm.appendChild(myLabelReply);&lt;br /&gt;
		myForm.innerHTML+=`&amp;lt;br&amp;gt;&amp;lt;label style=&amp;quot;margin-right:1em;&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;template-scroll-button-visibility&amp;quot;&amp;gt;スクロールボタンを表示&amp;lt;/label&amp;gt;`;&lt;br /&gt;
		document.getElementById(&amp;quot;top-notice-ns&amp;quot;).after(myForm);&lt;br /&gt;
		//talk-comment-mode&lt;br /&gt;
		if(document.body.classList.contains(&amp;quot;talk-comment-mode--cs&amp;quot;)){&lt;br /&gt;
			document.getElementById(&amp;quot;talk-comment-mode--cs&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			document.getElementById(&amp;quot;talk-comment-mode--default&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		//reply-button-click&lt;br /&gt;
		if(localStorage.getItem(&amp;quot;reply-button-click&amp;quot;)){&lt;br /&gt;
			if(localStorage.getItem(&amp;quot;reply-button-click&amp;quot;)==&amp;quot;yes&amp;quot;){&lt;br /&gt;
				document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked=true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;yes&amp;quot;);&lt;br /&gt;
			document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		//scroll-button-visibility&lt;br /&gt;
		if(localStorage.getItem(&amp;quot;scroll-button-visibility&amp;quot;)){&lt;br /&gt;
			if(localStorage.getItem(&amp;quot;scroll-button-visibility&amp;quot;)==&amp;quot;visible&amp;quot;){&lt;br /&gt;
				document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked=true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;visible&amp;quot;);&lt;br /&gt;
			document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		myForm.oninput=function(){&lt;br /&gt;
			if(myForm.talkCommentMode.value==&amp;quot;cs&amp;quot;){&lt;br /&gt;
				document.body.classList.add(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				document.body.classList.remove(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
				document.querySelectorAll(&amp;quot;span.splited+hr&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.remove();&lt;br /&gt;
				});&lt;br /&gt;
				document.querySelectorAll(&amp;quot;span.splited&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.classList.remove(&amp;quot;splited&amp;quot;);&lt;br /&gt;
				});&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;reply-button-click&amp;quot;).onchange=function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked){&lt;br /&gt;
				localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;yes&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;no&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).onchange=function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked){&lt;br /&gt;
				localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;visible&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;hidden&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	//Scroll Button&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)||document.getElementById(&amp;quot;template-scroll-button&amp;quot;)){&lt;br /&gt;
		let myScrollUpBtn=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		let myScrollDownBtn=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		myScrollUpBtn.classList.add(&amp;quot;template-scroll-button&amp;quot;);&lt;br /&gt;
		myScrollDownBtn.classList.add(&amp;quot;template-scroll-button&amp;quot;);&lt;br /&gt;
		myScrollUpBtn.style.bottom=&amp;quot;9em&amp;quot;;&lt;br /&gt;
		myScrollDownBtn.style.bottom=&amp;quot;5em&amp;quot;;&lt;br /&gt;
		myScrollUpBtn.innerHTML=`&amp;lt;span class=&amp;quot;template-scroll-button-mark template-scroll-button-mark-up&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`;&lt;br /&gt;
		myScrollDownBtn.innerHTML=`&amp;lt;span class=&amp;quot;template-scroll-button-mark template-scroll-button-mark-down&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`;&lt;br /&gt;
		document.body.appendChild(myScrollUpBtn);&lt;br /&gt;
		document.body.appendChild(myScrollDownBtn);&lt;br /&gt;
		myScrollUpBtn.onclick=function(){&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;smooth&amp;quot;;&lt;br /&gt;
			window.scroll(0,0);&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		myScrollDownBtn.onclick=function(){&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;smooth&amp;quot;;&lt;br /&gt;
			window.scroll(0,document.body.offsetHeight);&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		setInterval(function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;)){&lt;br /&gt;
				if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked){&lt;br /&gt;
					myScrollUpBtn.style.display=&amp;quot;&amp;quot;;&lt;br /&gt;
					myScrollDownBtn.style.display=&amp;quot;&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myScrollUpBtn.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					myScrollDownBtn.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},10);&lt;br /&gt;
	}&lt;br /&gt;
	//color-menu&lt;br /&gt;
	if(mw.config.values.wgUserName&amp;amp;&amp;amp;(mw.config.values.wgAction==&amp;quot;edit&amp;quot;||mw.config.values.wgAction==&amp;quot;submit&amp;quot;||document.body.classList.contains(&amp;quot;ns-talk&amp;quot;))){&lt;br /&gt;
		function toHEX(rgbdata){&lt;br /&gt;
			let rgb=rgbdata.replaceAll(&amp;quot;rgba(&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot;rgb(&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot;)&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot; &amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;,&amp;quot;);&lt;br /&gt;
			rgb=rgb.map(function(data){&lt;br /&gt;
				return Number(data);&lt;br /&gt;
			});&lt;br /&gt;
			return &amp;quot;#&amp;quot;+rgb.map(function(data){&lt;br /&gt;
				return (&amp;quot;0&amp;quot;+data.toString(16)).slice(-2);&lt;br /&gt;
			}).join(&amp;quot;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		function nn(number){&lt;br /&gt;
			if(number.length==1){&lt;br /&gt;
				number=&amp;quot;0&amp;quot;+number;&lt;br /&gt;
			}&lt;br /&gt;
			return number;&lt;br /&gt;
		}&lt;br /&gt;
		let myColor=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		let myMenu=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		myColor.id=&amp;quot;colorTestButton&amp;quot;;&lt;br /&gt;
		myColor.innerHTML=&amp;quot;🎨&amp;quot;;&lt;br /&gt;
		myMenu.id=&amp;quot;colorTestMenu&amp;quot;;&lt;br /&gt;
		myMenu.innerHTML=`色合い&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;文字色&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-color&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; data-value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-color-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-color-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;背景色&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-bgcolor&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;0&amp;quot; data-value=&amp;quot;0&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-bgcolor-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-bgcolor-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;colorTestMenu-preview&amp;quot; class=&amp;quot;colorTestMenu-result&amp;quot;&amp;gt;テキスト&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;太字テキスト&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;a style=&amp;quot;color:var(--theme-link-color)&amp;quot;&amp;gt;リンクテキスト&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		CSS:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-cssText&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;background:;color:;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-cssText,innerHTML&amp;quot; value=&amp;quot;CSSをコピー&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;リセット&amp;quot; class=&amp;quot;colorTestMenu-reset&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;hr&amp;gt;&lt;br /&gt;
		混色&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;色A&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-colorA&amp;quot; value=&amp;quot;#000000&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-colorA-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-colorA-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;色B&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-colorB&amp;quot; value=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-colorB-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-colorB-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;colorTestMenu-mix-preview&amp;quot; class=&amp;quot;colorTestMenu-result&amp;quot; style=&amp;quot;background:color-mix(in srgb,red,black);&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		カラーコード:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-mix-colorCode&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;color(srgb 0.5 0 0)&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-mix-colorCode,innerHTML&amp;quot; value=&amp;quot;カラーコードをコピー&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;hr&amp;gt;&lt;br /&gt;
		カスタムプロパティ一覧&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;select id=&amp;quot;colorTestMenu-varTable&amp;quot;&amp;gt;&amp;lt;/select&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		ライトモード：&amp;lt;div class=&amp;quot;colorTestMenu-varTable-modepreview&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;client-defaultmode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		ダークモード：&amp;lt;div class=&amp;quot;colorTestMenu-varTable-modepreview&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;client-darkmode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		CSS:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-varTable-property&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-varTable-property,innerHTML&amp;quot; value=&amp;quot;CSSをコピー&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		値として利用:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-varTable-value&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-varTable-value,innerHTML&amp;quot; value=&amp;quot;値をコピー&amp;quot;&amp;gt;&lt;br /&gt;
		`;&lt;br /&gt;
		document.body.appendChild(myColor);&lt;br /&gt;
		document.body.appendChild(myMenu);&lt;br /&gt;
		myColor.onclick=function(){&lt;br /&gt;
			myMenu.classList.toggle(&amp;quot;visible&amp;quot;);&lt;br /&gt;
			if(myMenu.classList.contains(&amp;quot;visible&amp;quot;)){&lt;br /&gt;
				let closeArea=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
				closeArea.style.cssText=&amp;quot;background:transparent;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:2999;&amp;quot;;&lt;br /&gt;
				closeArea.id=&amp;quot;colorTestCloseArea&amp;quot;;&lt;br /&gt;
				closeArea.onclick=function(){&lt;br /&gt;
					myColor.click();&lt;br /&gt;
				};&lt;br /&gt;
				document.body.appendChild(closeArea);&lt;br /&gt;
				myColor.innerHTML=&amp;quot;✕&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				myColor.innerHTML=&amp;quot;🎨&amp;quot;;&lt;br /&gt;
				document.getElementById(&amp;quot;colorTestCloseArea&amp;quot;).remove();&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		let sbody=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		sbody.style.cssText=&amp;quot;background:var(--theme-main-color);color:var(--theme-text-color);&amp;quot;;&lt;br /&gt;
		document.body.appendChild(sbody);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;).value=document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;).dataset.value=toHEX(window.getComputedStyle(sbody).color);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;).value=document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;).dataset.value=toHEX(window.getComputedStyle(sbody).getPropertyValue(&amp;quot;background-color&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-cssText&amp;quot;).innerHTML=&amp;quot;background:&amp;quot;+toHEX(window.getComputedStyle(sbody).getPropertyValue(&amp;quot;background-color&amp;quot;))+&amp;quot;00;color:&amp;quot;+toHEX(window.getComputedStyle(sbody).color)+&amp;quot;ff;&amp;quot;;&lt;br /&gt;
		sbody.remove();&lt;br /&gt;
		function inputAreaFnc(){&lt;br /&gt;
		let color=document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;);&lt;br /&gt;
		let coloropa=document.getElementById(&amp;quot;colorTestMenu-color-opacity&amp;quot;);&lt;br /&gt;
		let bg=document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;);&lt;br /&gt;
		let bgopa=document.getElementById(&amp;quot;colorTestMenu-bgcolor-opacity&amp;quot;);&lt;br /&gt;
		let colorA=document.getElementById(&amp;quot;colorTestMenu-colorA&amp;quot;);&lt;br /&gt;
		let colorAopa=document.getElementById(&amp;quot;colorTestMenu-colorA-opacity&amp;quot;);&lt;br /&gt;
		let colorB=document.getElementById(&amp;quot;colorTestMenu-colorB&amp;quot;);&lt;br /&gt;
		let colorBopa=document.getElementById(&amp;quot;colorTestMenu-colorB-opacity&amp;quot;);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-preview&amp;quot;).style.cssText=document.getElementById(&amp;quot;colorTestMenu-cssText&amp;quot;).innerHTML=&amp;quot;background:&amp;quot;+bg.value+nn(Math.round(bgopa.value*255).toString(16))+&amp;quot;;color:&amp;quot;+color.value+nn(Math.round(coloropa.value*255).toString(16))+&amp;quot;;&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-color-opacity-value&amp;quot;).innerHTML=coloropa.value*10;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-bgcolor-opacity-value&amp;quot;).innerHTML=bgopa.value*10;&lt;br /&gt;
		let mix=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		mix.style.background=&amp;quot;color-mix(in srgb,&amp;quot;+colorA.value+nn(Math.round(colorAopa.value*255).toString(16))+&amp;quot;,&amp;quot;+colorB.value+nn(Math.round(colorBopa.value*255).toString(16))+&amp;quot;)&amp;quot;;&lt;br /&gt;
		document.body.appendChild(mix);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-mix-preview&amp;quot;).style.background=document.getElementById(&amp;quot;colorTestMenu-mix-colorCode&amp;quot;).innerHTML=window.getComputedStyle(mix).getPropertyValue(&amp;quot;background-color&amp;quot;);&lt;br /&gt;
		mix.remove();&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-colorA-opacity-value&amp;quot;).innerHTML=colorAopa.value*10;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-colorB-opacity-value&amp;quot;).innerHTML=colorBopa.value*10;&lt;br /&gt;
		}&lt;br /&gt;
		let customProperty=[[&amp;quot;文字色&amp;quot;,&amp;quot;--theme-text-color&amp;quot;],[&amp;quot;リンク色&amp;quot;,&amp;quot;--theme-link-color&amp;quot;],[&amp;quot;hover時のリンク色&amp;quot;,&amp;quot;--theme-link-color--hover&amp;quot;],[&amp;quot;メインカラー&amp;quot;,&amp;quot;--theme-main-bg-color&amp;quot;],[&amp;quot;中間色&amp;quot;,&amp;quot;--theme-page-second-color&amp;quot;]];&lt;br /&gt;
		let cps=document.getElementById(&amp;quot;colorTestMenu-varTable&amp;quot;);&lt;br /&gt;
		customProperty.forEach(function(data){&lt;br /&gt;
			let myOption=document.createElement(&amp;quot;option&amp;quot;);&lt;br /&gt;
			myOption.innerHTML=data[0];&lt;br /&gt;
			myOption.value=data[1];&lt;br /&gt;
			cps.appendChild(myOption);&lt;br /&gt;
		});&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-varTable-value&amp;quot;).innerHTML=customProperty[0][1]+&amp;quot;:;&amp;quot;;&lt;br /&gt;
		function selectVarTableFnc(){&lt;br /&gt;
			document.getElementById(&amp;quot;colorTestMenu-varTable-property&amp;quot;).innerHTML=cps.value+&amp;quot;:;&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;colorTestMenu-varTable-value&amp;quot;).innerHTML=&amp;quot;var(&amp;quot;+cps.value+&amp;quot;)&amp;quot;;&lt;br /&gt;
			document.querySelectorAll(&amp;quot;.colorTestMenu-varTable-modepreview&amp;quot;).forEach(function(element){&lt;br /&gt;
				element.querySelector(&amp;quot;div&amp;quot;).style.background=&amp;quot;var(&amp;quot;+cps.value+&amp;quot;)&amp;quot;;&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		selectVarTableFnc();&lt;br /&gt;
		cps.oninput=selectVarTableFnc;&lt;br /&gt;
		myMenu.oninput=inputAreaFnc;&lt;br /&gt;
		document.querySelector(&amp;quot;.colorTestMenu-copyButton&amp;quot;)?document.querySelectorAll(&amp;quot;.colorTestMenu-copyButton&amp;quot;).forEach(function(element){&lt;br /&gt;
			if(window.isSecureContext){&lt;br /&gt;
				element.onclick=function(){&lt;br /&gt;
					let originValue=element.value;&lt;br /&gt;
					navigator.clipboard.writeText(document.getElementById(element.dataset.target.split(&amp;quot;,&amp;quot;)[0])[element.dataset.target.split(&amp;quot;,&amp;quot;)[1]]);&lt;br /&gt;
					element.value=&amp;quot;コピーしました&amp;quot;;&lt;br /&gt;
					element.disabled=true;&lt;br /&gt;
					setTimeout(function(){&lt;br /&gt;
						element.value=originValue;&lt;br /&gt;
						element.disabled=false;&lt;br /&gt;
					},1000);&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				element.remove();&lt;br /&gt;
			}&lt;br /&gt;
		}):&amp;quot;&amp;quot;;&lt;br /&gt;
		document.querySelector(&amp;quot;.colorTestMenu-reset&amp;quot;)?document.querySelectorAll(&amp;quot;.colorTestMenu-reset&amp;quot;).forEach(function(reset){&lt;br /&gt;
			reset.onclick=function(){&lt;br /&gt;
				document.querySelectorAll(&amp;quot;#colorTestMenu input[data-value]&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.value=element.dataset.value;&lt;br /&gt;
					inputAreaFnc();&lt;br /&gt;
				});&lt;br /&gt;
			};&lt;br /&gt;
		}):&amp;quot;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	//upload-icon&lt;br /&gt;
	if(mw.config.values.wgUserName){&lt;br /&gt;
		let uploadIcon=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
		uploadIcon.classList.add(&amp;quot;wds-button&amp;quot;);&lt;br /&gt;
		uploadIcon.classList.add(&amp;quot;wds-is-secondary&amp;quot;);&lt;br /&gt;
		uploadIcon.href=&amp;quot;https://japolitiball.myht.org/index.php?title=Special:Upload&amp;quot;;&lt;br /&gt;
		uploadIcon.innerHTML=&amp;quot;&amp;lt;img src=&#039;https://japolandball.miraheze.org/wiki/Special:FilePath/Upload-icon.svg&#039; width=&#039;22&#039; height=&#039;22&#039; class=&#039;wds-icon-small&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
		uploadIcon.title=&amp;quot;ファイルをアップロード&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;createpage&amp;quot;).after(uploadIcon);&lt;br /&gt;
	}&lt;br /&gt;
	//Template:CF&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cf&amp;quot;)){&lt;br /&gt;
		let myStorage=localStorage.getItem(&amp;quot;template-cf&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
		let visible=true;&lt;br /&gt;
		for(let data of myStorage.split(&amp;quot;\n&amp;quot;)){&lt;br /&gt;
			if(mw.config.values.wgPageName==data){&lt;br /&gt;
				visible=false;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(visible){&lt;br /&gt;
			let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			mydiv.classList.add(&amp;quot;template-confirm&amp;quot;);&lt;br /&gt;
			mydiv.id=&amp;quot;template-cf-confirmbox&amp;quot;;&lt;br /&gt;
			mydiv.innerHTML=`&amp;lt;div class=&amp;quot;template-confirm-main&amp;quot; id=&amp;quot;template-cf-confirmbox-main&amp;quot; style=&amp;quot;background:${document.getElementById(&amp;quot;template-cf-bgcolor&amp;quot;).innerHTML};color:${document.getElementById(&amp;quot;template-cf-color&amp;quot;).innerHTML};&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:1.2em;font-weight:bold;display:inline-block;margin-bottom:0.5em;&amp;quot;&amp;gt;${document.getElementById(&amp;quot;template-cf-title&amp;quot;).innerHTML}&amp;lt;/span&amp;gt;&lt;br /&gt;
			&amp;lt;br&amp;gt;&lt;br /&gt;
			${document.getElementById(&amp;quot;template-cf-message&amp;quot;).innerHTML}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;label style=&amp;quot;font-size:0.9em;position:relative;top:1em;&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;template-cf-checkbox&amp;quot; style=&amp;quot;width:0.9em;height:0.9em;&amp;quot;&amp;gt;次回からは表示しない&amp;lt;/label&amp;gt;&lt;br /&gt;
			&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;a href=&amp;quot;/wiki/Template:CF/doc&amp;quot; style=&amp;quot;--theme-link-color:#003399;font-size:0.8em;position:relative;top:2em;&amp;quot;&amp;gt;詳細&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;div style=&amp;quot;text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;いいえ&amp;quot; id=&amp;quot;template-cf-cancel-btn&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;はい&amp;quot; id=&amp;quot;template-cf-ok-btn&amp;quot; style=&amp;quot;background:var(--theme-main-bg-color);color:white;border-color:var(--theme-main-bg-color);&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;`;&lt;br /&gt;
			document.body.appendChild(mydiv);&lt;br /&gt;
			window.scroll(0,0);&lt;br /&gt;
			document.body.style.overflow=&amp;quot;hidden&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;mw-content&amp;quot;).style.filter=&amp;quot;blur(5px)&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-confirmbox-main&amp;quot;).style.top=((window.innerHeight-document.getElementById(&amp;quot;template-cf-confirmbox-main&amp;quot;).offsetHeight)/2)+&amp;quot;px&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-cancel-btn&amp;quot;).onclick=function(){&lt;br /&gt;
				document.getElementById(&amp;quot;template-cf-checkbox&amp;quot;).checked=false;&lt;br /&gt;
				document.querySelector(&amp;quot;#template-cf-return a&amp;quot;).click();&lt;br /&gt;
			};&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-ok-btn&amp;quot;).onclick=function(){&lt;br /&gt;
				document.body.style.overflow=&amp;quot;auto&amp;quot;;&lt;br /&gt;
				document.getElementById(&amp;quot;mw-content&amp;quot;).style.filter=&amp;quot;&amp;quot;;&lt;br /&gt;
				if(document.getElementById(&amp;quot;template-cf-checkbox&amp;quot;).checked){&lt;br /&gt;
					myStorage+=mw.config.values.wgPageName+&amp;quot;\n&amp;quot;;&lt;br /&gt;
					localStorage.setItem(&amp;quot;template-cf&amp;quot;,myStorage);&lt;br /&gt;
				}&lt;br /&gt;
				mydiv.remove();	&lt;br /&gt;
			};&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-ok-btn&amp;quot;).focus();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cf-form&amp;quot;)){&lt;br /&gt;
		let myStorage=localStorage.getItem(&amp;quot;template-cf&amp;quot;);&lt;br /&gt;
		let textarea=document.createElement(&amp;quot;textarea&amp;quot;);&lt;br /&gt;
		textarea.value=myStorage;&lt;br /&gt;
		textarea.oninput=function(){&lt;br /&gt;
			localStorage.setItem(&amp;quot;template-cf&amp;quot;,textarea.value);&lt;br /&gt;
		};&lt;br /&gt;
		textarea.onblur=function(){&lt;br /&gt;
			if(textarea.value.split(&amp;quot;&amp;quot;)[textarea.value.length-1]!=&amp;quot;\n&amp;quot;&amp;amp;&amp;amp;textarea.value!=&amp;quot;&amp;quot;){&lt;br /&gt;
				textarea.value+=&amp;quot;\n&amp;quot;;&lt;br /&gt;
				localStorage.setItem(&amp;quot;template-cf&amp;quot;,textarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		textarea.style.cssText=&amp;quot;width:90%;height:300px;font-size:1em;&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-textarea&amp;quot;).after(textarea);&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-textarea&amp;quot;).remove();&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-reload&amp;quot;).onclick=function(e){&lt;br /&gt;
			if(!e.target.classList.contains(&amp;quot;clicked&amp;quot;)){&lt;br /&gt;
				let loadmsg=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
				textarea.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
				loadmsg.innerHTML=&amp;quot;読み込み中...&amp;quot;;&lt;br /&gt;
				textarea.after(loadmsg);&lt;br /&gt;
				e.target.classList.add(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				setTimeout(function(){&lt;br /&gt;
					textarea.value=localStorage.getItem(&amp;quot;template-cf&amp;quot;);&lt;br /&gt;
					textarea.style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
					loadmsg.remove();&lt;br /&gt;
					e.target.classList.remove(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				},1000);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	/*template-imageLoad*/&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-imageLoad&amp;quot;)){&lt;br /&gt;
		document.querySelectorAll(&amp;quot;img&amp;quot;).forEach(function(element){&lt;br /&gt;
			element.src?element.src=element.src:&amp;quot;&amp;quot;;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	//Button Tag&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-button&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-button&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mybtn=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mybtn.type=&amp;quot;button&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		mybtn.value=myZobj.value||&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mybtn.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mybtn.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		mybtn.style.height=myZobj.height||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mybtn.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mybtn.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mybtn.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mybtn);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	//File Tag&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-file&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-file&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mybtn=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mybtn.type=&amp;quot;file&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mybtn.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mybtn.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mybtn.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mybtn.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mybtn.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mybtn);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	//Extension Conversion&lt;br /&gt;
	if(document.getElementById(&amp;quot;page-ec&amp;quot;)){&lt;br /&gt;
	function topngFnc(){&lt;br /&gt;
			let myfile=document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;);&lt;br /&gt;
			let r=new FileReader();&lt;br /&gt;
			r.readAsDataURL(myfile.files[0]);&lt;br /&gt;
			r.onload=function(){&lt;br /&gt;
				let myimg=new Image();&lt;br /&gt;
				myimg.src=r.result;&lt;br /&gt;
				myimg.onload=function(){&lt;br /&gt;
					let mycanvas=document.createElement(&amp;quot;canvas&amp;quot;);&lt;br /&gt;
					let myctx=mycanvas.getContext(&amp;quot;2d&amp;quot;);&lt;br /&gt;
					mycanvas.height=myimg.height;&lt;br /&gt;
					mycanvas.width=myimg.width;&lt;br /&gt;
					myctx.drawImage(myimg,0,0,mycanvas.width,mycanvas.height);&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).value=&amp;quot;ダウンロード&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=function(){&lt;br /&gt;
						let mya=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
						mya.href=mycanvas.toDataURL();&lt;br /&gt;
						mya.download=(document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value||&amp;quot;download&amp;quot;).split(&amp;quot;.&amp;quot;)[0]+&amp;quot;.png&amp;quot;;&lt;br /&gt;
						mya.click();&lt;br /&gt;
					};&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).onclick=function(){&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).value=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).value=&amp;quot;変換&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=topngFnc;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-data&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-file-name&amp;quot;).innerHTML=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					};&lt;br /&gt;
				};&lt;br /&gt;
				myimg.onerror=function(){&lt;br /&gt;
					window.alert(&amp;quot;エラーが発生しました。&amp;quot;);	&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		}&lt;br /&gt;
		document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).onchange=function(e){&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-file-name&amp;quot;).innerHTML=e.target.files[0].name;&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value=e.target.files[0].name.split(&amp;quot;.&amp;quot;)[0];&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-data&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=topngFnc;&lt;br /&gt;
	}&lt;br /&gt;
	let myobj={};&lt;br /&gt;
	document.querySelector(&amp;quot;span.sitestyle&amp;quot;)?document.querySelector(&amp;quot;span.sitestyle&amp;quot;).innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
		myobj[mypp.split(&amp;quot;:&amp;quot;)[0]]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;mw-content&amp;quot;).style.background=myobj.bgcolor?(&amp;quot;color-mix(in srgb, &amp;quot;+myobj.bgcolor+&amp;quot; var(--theme-mode-opacity), rgba(var(--theme-page-color--rgb),0.9))&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.maincolor?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-main-bg-color&amp;quot;,myobj.maincolor):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.link?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-link-color&amp;quot;,myobj.link):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.linkhover?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-link-color--hover&amp;quot;,myobj.linkhover):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.cosmos-header&amp;quot;).style.background=myobj.headerbg||&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.cosmos-header&amp;quot;).style.color=myobj.headercolor||&amp;quot;&amp;quot;;&lt;br /&gt;
})();&lt;br /&gt;
//jsload-delete&lt;br /&gt;
(function(){&lt;br /&gt;
	document.querySelector(&amp;quot;.jsload-delete&amp;quot;)?document.querySelectorAll(&amp;quot;.jsload-delete&amp;quot;).forEach(function(element){&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=MediaWiki:Cosmos.js&amp;diff=155</id>
		<title>MediaWiki:Cosmos.js</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=MediaWiki:Cosmos.js&amp;diff=155"/>
		<updated>2026-07-20T08:54:13Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$(function() {&lt;br /&gt;
	window.PBWTools = {&lt;br /&gt;
		collapseToolbar: function () {&lt;br /&gt;
			var toolbarCollapsed = mw.storage.get(&amp;quot;pbw-toolbar-collapsed&amp;quot;) !== &amp;quot;true&amp;quot; ? false : true;&lt;br /&gt;
			$(&amp;quot;&amp;lt;div&amp;gt;&amp;quot;).addClass(&amp;quot;cosmos-toolbar-collapse-button&amp;quot;).appendTo(&amp;quot;#cosmos-toolbar&amp;quot;);&lt;br /&gt;
			$(&amp;quot;.cosmos-toolbar-collapse-button&amp;quot;).click(function(target) {&lt;br /&gt;
				$(&amp;quot;#cosmos-toolbar&amp;quot;).toggleClass(&amp;quot;cosmos-toolbar-collapsed&amp;quot;);&lt;br /&gt;
				mw.storage.set(&amp;quot;pbw-toolbar-collapsed&amp;quot;, !toolbarCollapsed);&lt;br /&gt;
			});&lt;br /&gt;
			if (toolbarCollapsed) {&lt;br /&gt;
				$(&amp;quot;#cosmos-toolbar&amp;quot;).addClass(&amp;quot;cosmos-toolbar-collapsed&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		init: function () {&lt;br /&gt;
			mw.loader.using(&amp;quot;mediawiki.storage&amp;quot;).then(this.collapseToolbar);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
	window.PBWTools.init();&lt;br /&gt;
});&lt;br /&gt;
/*font tag for HTML5*/&lt;br /&gt;
document.querySelectorAll(&amp;quot;font&amp;quot;).forEach(function(element){&lt;br /&gt;
	element.style.color=element.getAttribute(&amp;quot;color&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
	element.style.fontFamily=element.getAttribute(&amp;quot;face&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
	element.style.fontSize=[&amp;quot;x-small&amp;quot;,&amp;quot;small&amp;quot;,&amp;quot;medium&amp;quot;,&amp;quot;large&amp;quot;,&amp;quot;x-large&amp;quot;,&amp;quot;xx-large&amp;quot;,&amp;quot;xxx-large&amp;quot;][Number(element.getAttribute(&amp;quot;size&amp;quot;))-1||2]||&amp;quot;&amp;quot;;&lt;br /&gt;
});&lt;br /&gt;
/*cosmos-banner*/&lt;br /&gt;
(function(){&lt;br /&gt;
	let myHomeLink=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
	myHomeLink.innerHTML=`&amp;lt;a href=&amp;quot;/&amp;quot;&amp;gt;ポリティボールwiki&amp;lt;/a&amp;gt;`;&lt;br /&gt;
	myHomeLink.id=&amp;quot;mw-banner-home&amp;quot;;&lt;br /&gt;
	myHomeLink.classList.add(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	document.getElementById(&amp;quot;cosmos-banner-content&amp;quot;).prepend(myHomeLink);&lt;br /&gt;
	if(window.innerWidth&amp;gt;850&amp;amp;&amp;amp;window.scrollY&amp;lt;60){&lt;br /&gt;
		document.getElementById(&amp;quot;cosmos-banner&amp;quot;).classList.add(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
		myHomeLink.classList.remove(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
})();&lt;br /&gt;
window.onscroll=function(){&lt;br /&gt;
let cosmosBanner=document.getElementById(&amp;quot;cosmos-banner&amp;quot;);&lt;br /&gt;
if(window.scrollY&amp;gt;60){&lt;br /&gt;
	if(document.querySelector(&amp;quot;html&amp;quot;).classList.contains(&amp;quot;client-darkmode&amp;quot;)){&lt;br /&gt;
		cosmosBanner.style.background=&amp;quot;rgba(20,20,20,0.7)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	else{&lt;br /&gt;
		cosmosBanner.style.background=&amp;quot;rgba(20,20,20,0.75)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	cosmosBanner.style.boxShadow=&amp;quot;0 2px 5px rgba(0, 0, 0, .4)&amp;quot;;&lt;br /&gt;
	cosmosBanner.classList.remove(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
	document.getElementById(&amp;quot;mw-banner-home&amp;quot;).classList.add(&amp;quot;visible&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
else{&lt;br /&gt;
	cosmosBanner.style.background=&amp;quot;&amp;quot;;&lt;br /&gt;
	cosmosBanner.style.boxShadow=&amp;quot;&amp;quot;;&lt;br /&gt;
	if(window.innerWidth&amp;gt;850){&lt;br /&gt;
		cosmosBanner.classList.add(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
		document.getElementById(&amp;quot;mw-banner-home&amp;quot;).classList.remove(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	else{&lt;br /&gt;
		cosmosBanner.classList.remove(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
document.body.style.setProperty(&amp;quot;--theme-body-background-position&amp;quot;,&amp;quot;center &amp;quot;+(window.scrollY/(document.body.scrollHeight-window.innerHeight)*((1080-window.innerHeight)/(1080/window.innerHeight*3)))+&amp;quot;px&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
setInterval(function(){&lt;br /&gt;
	/*spoiler*/&lt;br /&gt;
	document.querySelectorAll(&amp;quot;.mw-spoiler&amp;quot;).forEach(function(element){&lt;br /&gt;
		element.title=&amp;quot;クリックで表示&amp;quot;;&lt;br /&gt;
		element.onclick=function(e){&lt;br /&gt;
		if(element.classList.contains(&amp;quot;mw-spoiler&amp;quot;)){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
		}&lt;br /&gt;
		element.classList.remove(&amp;quot;mw-spoiler&amp;quot;);&lt;br /&gt;
		element.classList.add(&amp;quot;mw-spoiler-visible&amp;quot;);&lt;br /&gt;
		element.title=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
	});&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;talk-comment-mode--cs&amp;quot;)){&lt;br /&gt;
			document.querySelectorAll(&amp;quot;span[data-mw-comment-end]:not(h2 span):not(.splited)&amp;quot;).forEach(function(element){&lt;br /&gt;
			element.after(document.createElement(&amp;quot;hr&amp;quot;));&lt;br /&gt;
			element.classList.add(&amp;quot;splited&amp;quot;);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	//Reply-Link&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)){&lt;br /&gt;
			document.querySelectorAll(&amp;quot;.ext-discussiontools-init-replylink-buttons:not(.added):not(.ext-discussiontools-ui-replyWidget-preview .ext-discussiontools-init-replylink-buttons)&amp;quot;).forEach(function(element){&lt;br /&gt;
			let myLink=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
			myLink.innerHTML=&amp;quot;返信リンクを追加&amp;quot;;&lt;br /&gt;
			myLink.style.cssText=&amp;quot;margin-left:1em;display:none;&amp;quot;;&lt;br /&gt;
			element.after(myLink);&lt;br /&gt;
			element.classList.add(&amp;quot;added&amp;quot;);&lt;br /&gt;
			setInterval(function(){&lt;br /&gt;
				if(element.classList.contains(&amp;quot;ext-discussiontools-init-replylink-active&amp;quot;)){&lt;br /&gt;
					myLink.style.fontWeight=&amp;quot;bold&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myLink.style.fontWeight=&amp;quot;&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				if(document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;)){&lt;br /&gt;
					myLink.style.display=&amp;quot;inline&amp;quot;;&lt;br /&gt;
					if(element.classList.contains(&amp;quot;ext-discussiontools-init-replylink-active&amp;quot;)&amp;amp;&amp;amp;!element.classList.contains(&amp;quot;clicked&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;reply-button-click&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked){&lt;br /&gt;
						setTimeout(function(){&lt;br /&gt;
							myLink.click();&lt;br /&gt;
						},500);&lt;br /&gt;
						element.classList.add(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myLink.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					element.classList.remove(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
			},10);&lt;br /&gt;
			myLink.addEventListener(&amp;quot;click&amp;quot;,function(){&lt;br /&gt;
				document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).focus();&lt;br /&gt;
				setTimeout(function(){&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode span&amp;quot;).innerHTML=&amp;quot;[[{{FULLPAGENAME}}#&amp;quot;+element.getAttribute(&amp;quot;data-mw-thread-id&amp;quot;)+&amp;quot;|&amp;gt;&amp;gt;返信先]]\n\n&amp;quot;+document.querySelector(&amp;quot;.ve-ce-attachedRootNode span&amp;quot;).innerHTML;&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).blur();&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).focus();&lt;br /&gt;
				},1000);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
		document.querySelectorAll(&amp;quot;a:not(.added)&amp;quot;).forEach(function(element){&lt;br /&gt;
			if(decodeURI(element.href).indexOf(&amp;quot;#c-&amp;quot;)!=-1&amp;amp;&amp;amp;element.classList.contains(&amp;quot;mw-selflink-fragment&amp;quot;)){&lt;br /&gt;
					let inputNode=document.getElementById(decodeURI(element.href).split(&amp;quot;#&amp;quot;)[1]).parentElement.cloneNode(true);&lt;br /&gt;
					element.title=inputNode.textContent;&lt;br /&gt;
					element.classList.add(&amp;quot;added&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
},100);&lt;br /&gt;
/*Snow Flake Fnc&lt;br /&gt;
(function(){&lt;br /&gt;
	for(var yukiLength=0;yukiLength&amp;lt;(Math.round(document.body.offsetHeight/40)&amp;lt;500?Math.round(document.body.offsetHeight/40):500);yukiLength++){&lt;br /&gt;
	let myimg=document.createElement(&amp;quot;img&amp;quot;);&lt;br /&gt;
	myimg.src=&amp;quot;https://japolandballfanon.miraheze.org/wiki/Special:FilePath/Pagesnowflake.svg&amp;quot;;&lt;br /&gt;
	myimg.width=&amp;quot;40&amp;quot;;&lt;br /&gt;
	myimg.height=&amp;quot;40&amp;quot;;&lt;br /&gt;
	myimg.style.cssText=&amp;quot;position:absolute;&amp;quot;;&lt;br /&gt;
	myimg.style.top=(Math.floor(Math.random() *(document.body.offsetHeight-40))+1)+&amp;quot;px&amp;quot;;&lt;br /&gt;
	myimg.style.left=(Math.floor(Math.random() *(document.body.offsetWidth-40))+1)+&amp;quot;px&amp;quot;;&lt;br /&gt;
	document.body.style.background=window.getComputedStyle(document.getElementById(&amp;quot;mw-content&amp;quot;)).background;&lt;br /&gt;
	document.body.appendChild(myimg);&lt;br /&gt;
	myimg.onclick=function(){&lt;br /&gt;
	myimg.remove();	&lt;br /&gt;
	};&lt;br /&gt;
	}&lt;br /&gt;
})();&lt;br /&gt;
*/&lt;br /&gt;
function addScript(src){&lt;br /&gt;
	let scr=document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	scr.src=&amp;quot;https://japolandball.miraheze.org/wiki/MediaWiki:&amp;quot;+src+&amp;quot;.js?action=raw&amp;amp;ctype=text/javascript&amp;quot;;&lt;br /&gt;
	document.body.appendChild(scr);&lt;br /&gt;
}&lt;br /&gt;
function importItem(href,rel,element=&amp;quot;head&amp;quot;){&lt;br /&gt;
	let link=document.createElement(&amp;quot;link&amp;quot;);&lt;br /&gt;
	link.href=href;&lt;br /&gt;
	link.rel=rel;&lt;br /&gt;
	document.querySelector(element).appendChild(link);&lt;br /&gt;
}&lt;br /&gt;
/*iconMaker*/&lt;br /&gt;
addScript(&amp;quot;IconMaker&amp;quot;);&lt;br /&gt;
/*AutoFill*/&lt;br /&gt;
addScript(&amp;quot;AutoFill&amp;quot;);&lt;br /&gt;
/*AbuseFilter*/&lt;br /&gt;
addScript(&amp;quot;AbuseFilter&amp;quot;);&lt;br /&gt;
/*limited design*/&lt;br /&gt;
addScript(&amp;quot;LimitedDesign&amp;quot;);&lt;br /&gt;
/*ArticleTemplate*/&lt;br /&gt;
addScript(&amp;quot;ArticleTemplate&amp;quot;);&lt;br /&gt;
/*UserColor*/&lt;br /&gt;
addScript(&amp;quot;LinkColor&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
(function(){&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-checkbox&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-checkbox&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let checkbox=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		checkbox.type=&amp;quot;checkbox&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		myZobj.boxsize?checkbox.style.width=myZobj.boxsize:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.boxsize?checkbox.style.height=myZobj.boxsize:&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				checkbox.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		myZobj.id?checkbox.id=myZobj.id:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.value?checkbox.value=myZobj.value:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.checked==&amp;quot;true&amp;quot;?checkbox.checked=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?checkbox.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.label){&lt;br /&gt;
			let mylabel=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			mylabel.style.userSelect=&amp;quot;none&amp;quot;;&lt;br /&gt;
			myZobj.labelfontsize?mylabel.style.fontSize=myZobj.labelfontsize:&amp;quot;&amp;quot;;&lt;br /&gt;
			if(myZobj.labelposition&amp;amp;&amp;amp;myZobj.labelposition==&amp;quot;after&amp;quot;){&lt;br /&gt;
				mylabel.innerHTML=myZobj.label;&lt;br /&gt;
				mylabel.appendChild(checkbox);&lt;br /&gt;
				mylabel.innerHTML+=`&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:${myZobj.detailfontsize||&amp;quot;0.8em&amp;quot;};&amp;quot;&amp;gt;${myZobj.detail||&amp;quot;&amp;quot;}&amp;lt;/span&amp;gt;`;&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				mylabel.appendChild(checkbox);&lt;br /&gt;
				mylabel.innerHTML+=myZobj.label+&amp;quot;&amp;lt;br&amp;gt;&amp;quot;+(myZobj.detail?(`&amp;lt;span style=&amp;quot;margin-left:${myZobj.boxsize||&amp;quot;1em&amp;quot;};&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`):&amp;quot;&amp;quot;)+`&amp;lt;span style=&amp;quot;font-size:${myZobj.detailfontsize||&amp;quot;0.8em&amp;quot;};&amp;quot;&amp;gt;${myZobj.detail||&amp;quot;&amp;quot;}&amp;lt;/span&amp;gt;`;&lt;br /&gt;
			}&lt;br /&gt;
			element.after(mylabel);&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			element.after(checkbox);&lt;br /&gt;
		}&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-text&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-text&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mytextbox=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mytextbox.type=&amp;quot;text&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		mytextbox.value=myZobj.value||&amp;quot;&amp;quot;;&lt;br /&gt;
		mytextbox.placeholder=myZobj.placeholder||&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mytextbox.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mytextbox.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		mytextbox.style.height=myZobj.height||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mytextbox.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mytextbox.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mytextbox.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mytextbox);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;mw-upload-polandball-rule-checkbox&amp;quot;)?document.getElementById(&amp;quot;mw-upload-polandball-rule-checkbox&amp;quot;).onchange=function(e){&lt;br /&gt;
		if(e.target.checked){&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
			document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=function(event){&lt;br /&gt;
				event.preventDefault();&lt;br /&gt;
				let isCheckboxChecked=true;&lt;br /&gt;
				for(let myElementLength=0;myElementLength&amp;lt;document.querySelectorAll(&amp;quot;.mw-upload-polandball-rule-confirm-checkbox&amp;quot;).length;myElementLength++){&lt;br /&gt;
					if(document.querySelectorAll(&amp;quot;.mw-upload-polandball-rule-confirm-checkbox&amp;quot;)[myElementLength].checked==false){&lt;br /&gt;
						isCheckboxChecked=false;&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if(isCheckboxChecked){&lt;br /&gt;
					document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=null;&lt;br /&gt;
					document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).click();&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					window.alert(&amp;quot;ポーランドボールのルールに則ったイラストをアップロードしてください。&amp;quot;);&lt;br /&gt;
					location.hash=&amp;quot;&amp;quot;;&lt;br /&gt;
					location.hash=&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
			};&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
			document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=null;&lt;br /&gt;
		}&lt;br /&gt;
	}:&amp;quot;&amp;quot;;&lt;br /&gt;
	if(document.getElementById(&amp;quot;wpDestFile&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;wpDestFile&amp;quot;).value!=&amp;quot;&amp;quot;){&lt;br /&gt;
		document.getElementById(&amp;quot;mw-upload-polandball-rule-parent-div&amp;quot;).innerHTML=&amp;quot;&amp;lt;span style=&#039;font-size:1.2em;&#039;&amp;gt;※回答済み&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	document.querySelector(&amp;quot;.filehistory,.mw-blocklist&amp;quot;)?document.querySelectorAll(&amp;quot;.filehistory,.mw-blocklist&amp;quot;).forEach(function(element){&lt;br /&gt;
		let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		mydiv.style.cssText=&amp;quot;max-width:100%;overflow-x:auto;&amp;quot;;&lt;br /&gt;
		mydiv.appendChild(element.cloneNode(true));&lt;br /&gt;
		element.after(mydiv);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	if(mw.config.values.wgAction==&amp;quot;edit&amp;quot;||mw.config.values.wgAction==&amp;quot;submit&amp;quot;){&lt;br /&gt;
		let mylabel=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		mylabel.style.cssText=&amp;quot;font-size:1.2em;font-weight:bold;&amp;quot;;&lt;br /&gt;
		mylabel.innerHTML=`&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;mw-edit-rule-checker&amp;quot; style=&amp;quot;width:1.5em;height:1.5em;margin-right:1.5em&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;Project:ルール&amp;quot; style=&amp;quot;color:var(--theme-link-color) !important;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;ルール&amp;lt;/a&amp;gt;をよく読み、これに遵守します。`;&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(document.createElement(&amp;quot;br&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(document.createElement(&amp;quot;br&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(mylabel);&lt;br /&gt;
		document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			if(document.getElementById(&amp;quot;mw-edit-rule-checker&amp;quot;).checked){&lt;br /&gt;
				document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=null;&lt;br /&gt;
				document.getElementById(&amp;quot;wpSave&amp;quot;).click();&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				window.alert(&amp;quot;wikiのルールに則った編集を行ってください。過激な発言等は削除されます。&amp;quot;);&lt;br /&gt;
				if(window.confirm(&amp;quot;ルールに同意して保存しますか？\n編集画面に戻る際はキャンセルを選択してください。&amp;quot;)){&lt;br /&gt;
					document.getElementById(&amp;quot;mw-edit-rule-checker&amp;quot;).checked=true;&lt;br /&gt;
					document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=null;&lt;br /&gt;
					document.getElementById(&amp;quot;wpSave&amp;quot;).click();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cursor&amp;quot;)){&lt;br /&gt;
		document.querySelector(&amp;quot;html&amp;quot;).style.cssText=&amp;quot;--theme-page-cursor:url(/wiki/Special:FilePath/&amp;quot;+document.getElementById(&amp;quot;template-cursor-auto&amp;quot;).innerHTML+&amp;quot;),auto !important;--theme-page-cursor-link:url(/wiki/Special:FilePath/&amp;quot;+document.getElementById(&amp;quot;template-cursor-pointer&amp;quot;).innerHTML+&amp;quot;),pointer !important;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;mw-upload-file-uploader&amp;quot;)){&lt;br /&gt;
		let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		let myspan=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		mydiv.id=&amp;quot;mw-upload-file-uploader-area&amp;quot;;&lt;br /&gt;
		myspan.id=&amp;quot;mw-upload-file-uploader-text&amp;quot;;&lt;br /&gt;
		myspan.innerHTML=&amp;quot;ファイルをここにドロップ&amp;quot;;&lt;br /&gt;
		mydiv.appendChild(myspan);&lt;br /&gt;
		document.body.appendChild(mydiv);&lt;br /&gt;
		document.getElementById(&amp;quot;mw-upload-file-uploader&amp;quot;).remove();&lt;br /&gt;
		window.ondragover=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.body.onmousemove=function(){&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.body.ondrop=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			document.querySelector(&amp;quot;input[type=&#039;file&#039;]&amp;quot;).files=e.dataTransfer.files;&lt;br /&gt;
			document.getElementById(&amp;quot;wpDestFile&amp;quot;).value==&amp;quot;&amp;quot;?document.getElementById(&amp;quot;wpDestFile&amp;quot;).value=document.querySelector(&amp;quot;input[type=&#039;file&#039;]&amp;quot;).files[0].name:&amp;quot;&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	//Template:LCS&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-lcs&amp;quot;)||mw.config.values.wgNamespaceNumber==1){&lt;br /&gt;
		document.body.classList.add(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	//Template:DSC&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-dsc&amp;quot;)){&lt;br /&gt;
		document.body.classList.remove(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	//Talk Radio Button&lt;br /&gt;
	if(document.getElementById(&amp;quot;top-notice-ns&amp;quot;)&amp;amp;&amp;amp;document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)){&lt;br /&gt;
		let myForm=document.createElement(&amp;quot;form&amp;quot;);&lt;br /&gt;
		let myLabelDefault=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		let myLabelCS=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		let myLabelReply=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		myLabelDefault.innerHTML=`&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;talkCommentMode&amp;quot; id=&amp;quot;talk-comment-mode--default&amp;quot; value=&amp;quot;default&amp;quot;&amp;gt;デフォルトモード`;&lt;br /&gt;
		myLabelDefault.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myLabelCS.innerHTML=`&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;talkCommentMode&amp;quot; id=&amp;quot;talk-comment-mode--cs&amp;quot; value=&amp;quot;cs&amp;quot;&amp;gt;疑似CS`;&lt;br /&gt;
		myLabelCS.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myLabelReply.innerHTML=`&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;reply-button-click&amp;quot;&amp;gt;&amp;lt;a&amp;gt;&amp;gt;&amp;gt;返信先&amp;lt;/a&amp;gt;をデフォルトで入力`;&lt;br /&gt;
		myLabelReply.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myForm.id=&amp;quot;talk-comment-form&amp;quot;;&lt;br /&gt;
		myForm.style.cssText=&amp;quot;border-bottom:1px solid var(--theme-text-color);font-size:1.1em;margin-bottom:0.8em;&amp;quot;;&lt;br /&gt;
		myForm.appendChild(myLabelDefault);&lt;br /&gt;
		myForm.appendChild(myLabelCS);&lt;br /&gt;
		myForm.appendChild(myLabelReply);&lt;br /&gt;
		myForm.innerHTML+=`&amp;lt;br&amp;gt;&amp;lt;label style=&amp;quot;margin-right:1em;&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;template-scroll-button-visibility&amp;quot;&amp;gt;スクロールボタンを表示&amp;lt;/label&amp;gt;`;&lt;br /&gt;
		document.getElementById(&amp;quot;top-notice-ns&amp;quot;).after(myForm);&lt;br /&gt;
		//talk-comment-mode&lt;br /&gt;
		if(document.body.classList.contains(&amp;quot;talk-comment-mode--cs&amp;quot;)){&lt;br /&gt;
			document.getElementById(&amp;quot;talk-comment-mode--cs&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			document.getElementById(&amp;quot;talk-comment-mode--default&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		//reply-button-click&lt;br /&gt;
		if(localStorage.getItem(&amp;quot;reply-button-click&amp;quot;)){&lt;br /&gt;
			if(localStorage.getItem(&amp;quot;reply-button-click&amp;quot;)==&amp;quot;yes&amp;quot;){&lt;br /&gt;
				document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked=true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;yes&amp;quot;);&lt;br /&gt;
			document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		//scroll-button-visibility&lt;br /&gt;
		if(localStorage.getItem(&amp;quot;scroll-button-visibility&amp;quot;)){&lt;br /&gt;
			if(localStorage.getItem(&amp;quot;scroll-button-visibility&amp;quot;)==&amp;quot;visible&amp;quot;){&lt;br /&gt;
				document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked=true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;visible&amp;quot;);&lt;br /&gt;
			document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		myForm.oninput=function(){&lt;br /&gt;
			if(myForm.talkCommentMode.value==&amp;quot;cs&amp;quot;){&lt;br /&gt;
				document.body.classList.add(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				document.body.classList.remove(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
				document.querySelectorAll(&amp;quot;span.splited+hr&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.remove();&lt;br /&gt;
				});&lt;br /&gt;
				document.querySelectorAll(&amp;quot;span.splited&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.classList.remove(&amp;quot;splited&amp;quot;);&lt;br /&gt;
				});&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;reply-button-click&amp;quot;).onchange=function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked){&lt;br /&gt;
				localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;yes&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;no&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).onchange=function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked){&lt;br /&gt;
				localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;visible&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;hidden&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	//Scroll Button&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)||document.getElementById(&amp;quot;template-scroll-button&amp;quot;)){&lt;br /&gt;
		let myScrollUpBtn=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		let myScrollDownBtn=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		myScrollUpBtn.classList.add(&amp;quot;template-scroll-button&amp;quot;);&lt;br /&gt;
		myScrollDownBtn.classList.add(&amp;quot;template-scroll-button&amp;quot;);&lt;br /&gt;
		myScrollUpBtn.style.bottom=&amp;quot;9em&amp;quot;;&lt;br /&gt;
		myScrollDownBtn.style.bottom=&amp;quot;5em&amp;quot;;&lt;br /&gt;
		myScrollUpBtn.innerHTML=`&amp;lt;span class=&amp;quot;template-scroll-button-mark template-scroll-button-mark-up&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`;&lt;br /&gt;
		myScrollDownBtn.innerHTML=`&amp;lt;span class=&amp;quot;template-scroll-button-mark template-scroll-button-mark-down&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`;&lt;br /&gt;
		document.body.appendChild(myScrollUpBtn);&lt;br /&gt;
		document.body.appendChild(myScrollDownBtn);&lt;br /&gt;
		myScrollUpBtn.onclick=function(){&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;smooth&amp;quot;;&lt;br /&gt;
			window.scroll(0,0);&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		myScrollDownBtn.onclick=function(){&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;smooth&amp;quot;;&lt;br /&gt;
			window.scroll(0,document.body.offsetHeight);&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		setInterval(function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;)){&lt;br /&gt;
				if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked){&lt;br /&gt;
					myScrollUpBtn.style.display=&amp;quot;&amp;quot;;&lt;br /&gt;
					myScrollDownBtn.style.display=&amp;quot;&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myScrollUpBtn.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					myScrollDownBtn.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},10);&lt;br /&gt;
	}&lt;br /&gt;
	//color-menu&lt;br /&gt;
	if(mw.config.values.wgUserName&amp;amp;&amp;amp;(mw.config.values.wgAction==&amp;quot;edit&amp;quot;||mw.config.values.wgAction==&amp;quot;submit&amp;quot;||document.body.classList.contains(&amp;quot;ns-talk&amp;quot;))){&lt;br /&gt;
		function toHEX(rgbdata){&lt;br /&gt;
			let rgb=rgbdata.replaceAll(&amp;quot;rgba(&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot;rgb(&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot;)&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot; &amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;,&amp;quot;);&lt;br /&gt;
			rgb=rgb.map(function(data){&lt;br /&gt;
				return Number(data);&lt;br /&gt;
			});&lt;br /&gt;
			return &amp;quot;#&amp;quot;+rgb.map(function(data){&lt;br /&gt;
				return (&amp;quot;0&amp;quot;+data.toString(16)).slice(-2);&lt;br /&gt;
			}).join(&amp;quot;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		function nn(number){&lt;br /&gt;
			if(number.length==1){&lt;br /&gt;
				number=&amp;quot;0&amp;quot;+number;&lt;br /&gt;
			}&lt;br /&gt;
			return number;&lt;br /&gt;
		}&lt;br /&gt;
		let myColor=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		let myMenu=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		myColor.id=&amp;quot;colorTestButton&amp;quot;;&lt;br /&gt;
		myColor.innerHTML=&amp;quot;🎨&amp;quot;;&lt;br /&gt;
		myMenu.id=&amp;quot;colorTestMenu&amp;quot;;&lt;br /&gt;
		myMenu.innerHTML=`色合い&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;文字色&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-color&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; data-value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-color-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-color-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;背景色&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-bgcolor&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;0&amp;quot; data-value=&amp;quot;0&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-bgcolor-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-bgcolor-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;colorTestMenu-preview&amp;quot; class=&amp;quot;colorTestMenu-result&amp;quot;&amp;gt;テキスト&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;太字テキスト&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;a style=&amp;quot;color:var(--theme-link-color)&amp;quot;&amp;gt;リンクテキスト&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		CSS:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-cssText&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;background:;color:;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-cssText,innerHTML&amp;quot; value=&amp;quot;CSSをコピー&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;リセット&amp;quot; class=&amp;quot;colorTestMenu-reset&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;hr&amp;gt;&lt;br /&gt;
		混色&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;色A&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-colorA&amp;quot; value=&amp;quot;#000000&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-colorA-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-colorA-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;色B&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-colorB&amp;quot; value=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-colorB-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-colorB-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;colorTestMenu-mix-preview&amp;quot; class=&amp;quot;colorTestMenu-result&amp;quot; style=&amp;quot;background:color-mix(in srgb,red,black);&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		カラーコード:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-mix-colorCode&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;color(srgb 0.5 0 0)&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-mix-colorCode,innerHTML&amp;quot; value=&amp;quot;カラーコードをコピー&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;hr&amp;gt;&lt;br /&gt;
		カスタムプロパティ一覧&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;select id=&amp;quot;colorTestMenu-varTable&amp;quot;&amp;gt;&amp;lt;/select&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		ライトモード：&amp;lt;div class=&amp;quot;colorTestMenu-varTable-modepreview&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;client-defaultmode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		ダークモード：&amp;lt;div class=&amp;quot;colorTestMenu-varTable-modepreview&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;client-darkmode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		CSS:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-varTable-property&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-varTable-property,innerHTML&amp;quot; value=&amp;quot;CSSをコピー&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		値として利用:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-varTable-value&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-varTable-value,innerHTML&amp;quot; value=&amp;quot;値をコピー&amp;quot;&amp;gt;&lt;br /&gt;
		`;&lt;br /&gt;
		document.body.appendChild(myColor);&lt;br /&gt;
		document.body.appendChild(myMenu);&lt;br /&gt;
		myColor.onclick=function(){&lt;br /&gt;
			myMenu.classList.toggle(&amp;quot;visible&amp;quot;);&lt;br /&gt;
			if(myMenu.classList.contains(&amp;quot;visible&amp;quot;)){&lt;br /&gt;
				let closeArea=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
				closeArea.style.cssText=&amp;quot;background:transparent;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:2999;&amp;quot;;&lt;br /&gt;
				closeArea.id=&amp;quot;colorTestCloseArea&amp;quot;;&lt;br /&gt;
				closeArea.onclick=function(){&lt;br /&gt;
					myColor.click();&lt;br /&gt;
				};&lt;br /&gt;
				document.body.appendChild(closeArea);&lt;br /&gt;
				myColor.innerHTML=&amp;quot;✕&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				myColor.innerHTML=&amp;quot;🎨&amp;quot;;&lt;br /&gt;
				document.getElementById(&amp;quot;colorTestCloseArea&amp;quot;).remove();&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		let sbody=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		sbody.style.cssText=&amp;quot;background:var(--theme-main-color);color:var(--theme-text-color);&amp;quot;;&lt;br /&gt;
		document.body.appendChild(sbody);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;).value=document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;).dataset.value=toHEX(window.getComputedStyle(sbody).color);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;).value=document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;).dataset.value=toHEX(window.getComputedStyle(sbody).getPropertyValue(&amp;quot;background-color&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-cssText&amp;quot;).innerHTML=&amp;quot;background:&amp;quot;+toHEX(window.getComputedStyle(sbody).getPropertyValue(&amp;quot;background-color&amp;quot;))+&amp;quot;00;color:&amp;quot;+toHEX(window.getComputedStyle(sbody).color)+&amp;quot;ff;&amp;quot;;&lt;br /&gt;
		sbody.remove();&lt;br /&gt;
		function inputAreaFnc(){&lt;br /&gt;
		let color=document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;);&lt;br /&gt;
		let coloropa=document.getElementById(&amp;quot;colorTestMenu-color-opacity&amp;quot;);&lt;br /&gt;
		let bg=document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;);&lt;br /&gt;
		let bgopa=document.getElementById(&amp;quot;colorTestMenu-bgcolor-opacity&amp;quot;);&lt;br /&gt;
		let colorA=document.getElementById(&amp;quot;colorTestMenu-colorA&amp;quot;);&lt;br /&gt;
		let colorAopa=document.getElementById(&amp;quot;colorTestMenu-colorA-opacity&amp;quot;);&lt;br /&gt;
		let colorB=document.getElementById(&amp;quot;colorTestMenu-colorB&amp;quot;);&lt;br /&gt;
		let colorBopa=document.getElementById(&amp;quot;colorTestMenu-colorB-opacity&amp;quot;);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-preview&amp;quot;).style.cssText=document.getElementById(&amp;quot;colorTestMenu-cssText&amp;quot;).innerHTML=&amp;quot;background:&amp;quot;+bg.value+nn(Math.round(bgopa.value*255).toString(16))+&amp;quot;;color:&amp;quot;+color.value+nn(Math.round(coloropa.value*255).toString(16))+&amp;quot;;&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-color-opacity-value&amp;quot;).innerHTML=coloropa.value*10;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-bgcolor-opacity-value&amp;quot;).innerHTML=bgopa.value*10;&lt;br /&gt;
		let mix=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		mix.style.background=&amp;quot;color-mix(in srgb,&amp;quot;+colorA.value+nn(Math.round(colorAopa.value*255).toString(16))+&amp;quot;,&amp;quot;+colorB.value+nn(Math.round(colorBopa.value*255).toString(16))+&amp;quot;)&amp;quot;;&lt;br /&gt;
		document.body.appendChild(mix);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-mix-preview&amp;quot;).style.background=document.getElementById(&amp;quot;colorTestMenu-mix-colorCode&amp;quot;).innerHTML=window.getComputedStyle(mix).getPropertyValue(&amp;quot;background-color&amp;quot;);&lt;br /&gt;
		mix.remove();&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-colorA-opacity-value&amp;quot;).innerHTML=colorAopa.value*10;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-colorB-opacity-value&amp;quot;).innerHTML=colorBopa.value*10;&lt;br /&gt;
		}&lt;br /&gt;
		let customProperty=[[&amp;quot;文字色&amp;quot;,&amp;quot;--theme-text-color&amp;quot;],[&amp;quot;リンク色&amp;quot;,&amp;quot;--theme-link-color&amp;quot;],[&amp;quot;hover時のリンク色&amp;quot;,&amp;quot;--theme-link-color--hover&amp;quot;],[&amp;quot;メインカラー&amp;quot;,&amp;quot;--theme-main-bg-color&amp;quot;],[&amp;quot;中間色&amp;quot;,&amp;quot;--theme-page-second-color&amp;quot;]];&lt;br /&gt;
		let cps=document.getElementById(&amp;quot;colorTestMenu-varTable&amp;quot;);&lt;br /&gt;
		customProperty.forEach(function(data){&lt;br /&gt;
			let myOption=document.createElement(&amp;quot;option&amp;quot;);&lt;br /&gt;
			myOption.innerHTML=data[0];&lt;br /&gt;
			myOption.value=data[1];&lt;br /&gt;
			cps.appendChild(myOption);&lt;br /&gt;
		});&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-varTable-value&amp;quot;).innerHTML=customProperty[0][1]+&amp;quot;:;&amp;quot;;&lt;br /&gt;
		function selectVarTableFnc(){&lt;br /&gt;
			document.getElementById(&amp;quot;colorTestMenu-varTable-property&amp;quot;).innerHTML=cps.value+&amp;quot;:;&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;colorTestMenu-varTable-value&amp;quot;).innerHTML=&amp;quot;var(&amp;quot;+cps.value+&amp;quot;)&amp;quot;;&lt;br /&gt;
			document.querySelectorAll(&amp;quot;.colorTestMenu-varTable-modepreview&amp;quot;).forEach(function(element){&lt;br /&gt;
				element.querySelector(&amp;quot;div&amp;quot;).style.background=&amp;quot;var(&amp;quot;+cps.value+&amp;quot;)&amp;quot;;&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		selectVarTableFnc();&lt;br /&gt;
		cps.oninput=selectVarTableFnc;&lt;br /&gt;
		myMenu.oninput=inputAreaFnc;&lt;br /&gt;
		document.querySelector(&amp;quot;.colorTestMenu-copyButton&amp;quot;)?document.querySelectorAll(&amp;quot;.colorTestMenu-copyButton&amp;quot;).forEach(function(element){&lt;br /&gt;
			if(window.isSecureContext){&lt;br /&gt;
				element.onclick=function(){&lt;br /&gt;
					let originValue=element.value;&lt;br /&gt;
					navigator.clipboard.writeText(document.getElementById(element.dataset.target.split(&amp;quot;,&amp;quot;)[0])[element.dataset.target.split(&amp;quot;,&amp;quot;)[1]]);&lt;br /&gt;
					element.value=&amp;quot;コピーしました&amp;quot;;&lt;br /&gt;
					element.disabled=true;&lt;br /&gt;
					setTimeout(function(){&lt;br /&gt;
						element.value=originValue;&lt;br /&gt;
						element.disabled=false;&lt;br /&gt;
					},1000);&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				element.remove();&lt;br /&gt;
			}&lt;br /&gt;
		}):&amp;quot;&amp;quot;;&lt;br /&gt;
		document.querySelector(&amp;quot;.colorTestMenu-reset&amp;quot;)?document.querySelectorAll(&amp;quot;.colorTestMenu-reset&amp;quot;).forEach(function(reset){&lt;br /&gt;
			reset.onclick=function(){&lt;br /&gt;
				document.querySelectorAll(&amp;quot;#colorTestMenu input[data-value]&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.value=element.dataset.value;&lt;br /&gt;
					inputAreaFnc();&lt;br /&gt;
				});&lt;br /&gt;
			};&lt;br /&gt;
		}):&amp;quot;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	//upload-icon&lt;br /&gt;
	if(mw.config.values.wgUserName){&lt;br /&gt;
		let uploadIcon=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
		uploadIcon.classList.add(&amp;quot;wds-button&amp;quot;);&lt;br /&gt;
		uploadIcon.classList.add(&amp;quot;wds-is-secondary&amp;quot;);&lt;br /&gt;
		uploadIcon.href=&amp;quot;https://japolitiball.myht.org/wiki/Special:Upload&amp;quot;;&lt;br /&gt;
		uploadIcon.innerHTML=&amp;quot;&amp;lt;img src=&#039;https://japolandball.miraheze.org/wiki/Special:FilePath/Upload-icon.svg&#039; width=&#039;22&#039; height=&#039;22&#039; class=&#039;wds-icon-small&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
		uploadIcon.title=&amp;quot;ファイルをアップロード&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;createpage&amp;quot;).after(uploadIcon);&lt;br /&gt;
	}&lt;br /&gt;
	//Template:CF&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cf&amp;quot;)){&lt;br /&gt;
		let myStorage=localStorage.getItem(&amp;quot;template-cf&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
		let visible=true;&lt;br /&gt;
		for(let data of myStorage.split(&amp;quot;\n&amp;quot;)){&lt;br /&gt;
			if(mw.config.values.wgPageName==data){&lt;br /&gt;
				visible=false;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(visible){&lt;br /&gt;
			let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			mydiv.classList.add(&amp;quot;template-confirm&amp;quot;);&lt;br /&gt;
			mydiv.id=&amp;quot;template-cf-confirmbox&amp;quot;;&lt;br /&gt;
			mydiv.innerHTML=`&amp;lt;div class=&amp;quot;template-confirm-main&amp;quot; id=&amp;quot;template-cf-confirmbox-main&amp;quot; style=&amp;quot;background:${document.getElementById(&amp;quot;template-cf-bgcolor&amp;quot;).innerHTML};color:${document.getElementById(&amp;quot;template-cf-color&amp;quot;).innerHTML};&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:1.2em;font-weight:bold;display:inline-block;margin-bottom:0.5em;&amp;quot;&amp;gt;${document.getElementById(&amp;quot;template-cf-title&amp;quot;).innerHTML}&amp;lt;/span&amp;gt;&lt;br /&gt;
			&amp;lt;br&amp;gt;&lt;br /&gt;
			${document.getElementById(&amp;quot;template-cf-message&amp;quot;).innerHTML}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;label style=&amp;quot;font-size:0.9em;position:relative;top:1em;&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;template-cf-checkbox&amp;quot; style=&amp;quot;width:0.9em;height:0.9em;&amp;quot;&amp;gt;次回からは表示しない&amp;lt;/label&amp;gt;&lt;br /&gt;
			&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;a href=&amp;quot;/wiki/Template:CF/doc&amp;quot; style=&amp;quot;--theme-link-color:#003399;font-size:0.8em;position:relative;top:2em;&amp;quot;&amp;gt;詳細&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;div style=&amp;quot;text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;いいえ&amp;quot; id=&amp;quot;template-cf-cancel-btn&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;はい&amp;quot; id=&amp;quot;template-cf-ok-btn&amp;quot; style=&amp;quot;background:var(--theme-main-bg-color);color:white;border-color:var(--theme-main-bg-color);&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;`;&lt;br /&gt;
			document.body.appendChild(mydiv);&lt;br /&gt;
			window.scroll(0,0);&lt;br /&gt;
			document.body.style.overflow=&amp;quot;hidden&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;mw-content&amp;quot;).style.filter=&amp;quot;blur(5px)&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-confirmbox-main&amp;quot;).style.top=((window.innerHeight-document.getElementById(&amp;quot;template-cf-confirmbox-main&amp;quot;).offsetHeight)/2)+&amp;quot;px&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-cancel-btn&amp;quot;).onclick=function(){&lt;br /&gt;
				document.getElementById(&amp;quot;template-cf-checkbox&amp;quot;).checked=false;&lt;br /&gt;
				document.querySelector(&amp;quot;#template-cf-return a&amp;quot;).click();&lt;br /&gt;
			};&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-ok-btn&amp;quot;).onclick=function(){&lt;br /&gt;
				document.body.style.overflow=&amp;quot;auto&amp;quot;;&lt;br /&gt;
				document.getElementById(&amp;quot;mw-content&amp;quot;).style.filter=&amp;quot;&amp;quot;;&lt;br /&gt;
				if(document.getElementById(&amp;quot;template-cf-checkbox&amp;quot;).checked){&lt;br /&gt;
					myStorage+=mw.config.values.wgPageName+&amp;quot;\n&amp;quot;;&lt;br /&gt;
					localStorage.setItem(&amp;quot;template-cf&amp;quot;,myStorage);&lt;br /&gt;
				}&lt;br /&gt;
				mydiv.remove();	&lt;br /&gt;
			};&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-ok-btn&amp;quot;).focus();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cf-form&amp;quot;)){&lt;br /&gt;
		let myStorage=localStorage.getItem(&amp;quot;template-cf&amp;quot;);&lt;br /&gt;
		let textarea=document.createElement(&amp;quot;textarea&amp;quot;);&lt;br /&gt;
		textarea.value=myStorage;&lt;br /&gt;
		textarea.oninput=function(){&lt;br /&gt;
			localStorage.setItem(&amp;quot;template-cf&amp;quot;,textarea.value);&lt;br /&gt;
		};&lt;br /&gt;
		textarea.onblur=function(){&lt;br /&gt;
			if(textarea.value.split(&amp;quot;&amp;quot;)[textarea.value.length-1]!=&amp;quot;\n&amp;quot;&amp;amp;&amp;amp;textarea.value!=&amp;quot;&amp;quot;){&lt;br /&gt;
				textarea.value+=&amp;quot;\n&amp;quot;;&lt;br /&gt;
				localStorage.setItem(&amp;quot;template-cf&amp;quot;,textarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		textarea.style.cssText=&amp;quot;width:90%;height:300px;font-size:1em;&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-textarea&amp;quot;).after(textarea);&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-textarea&amp;quot;).remove();&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-reload&amp;quot;).onclick=function(e){&lt;br /&gt;
			if(!e.target.classList.contains(&amp;quot;clicked&amp;quot;)){&lt;br /&gt;
				let loadmsg=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
				textarea.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
				loadmsg.innerHTML=&amp;quot;読み込み中...&amp;quot;;&lt;br /&gt;
				textarea.after(loadmsg);&lt;br /&gt;
				e.target.classList.add(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				setTimeout(function(){&lt;br /&gt;
					textarea.value=localStorage.getItem(&amp;quot;template-cf&amp;quot;);&lt;br /&gt;
					textarea.style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
					loadmsg.remove();&lt;br /&gt;
					e.target.classList.remove(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				},1000);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	/*template-imageLoad*/&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-imageLoad&amp;quot;)){&lt;br /&gt;
		document.querySelectorAll(&amp;quot;img&amp;quot;).forEach(function(element){&lt;br /&gt;
			element.src?element.src=element.src:&amp;quot;&amp;quot;;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	//Button Tag&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-button&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-button&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mybtn=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mybtn.type=&amp;quot;button&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		mybtn.value=myZobj.value||&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mybtn.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mybtn.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		mybtn.style.height=myZobj.height||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mybtn.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mybtn.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mybtn.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mybtn);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	//File Tag&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-file&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-file&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mybtn=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mybtn.type=&amp;quot;file&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mybtn.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mybtn.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mybtn.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mybtn.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mybtn.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mybtn);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	//Extension Conversion&lt;br /&gt;
	if(document.getElementById(&amp;quot;page-ec&amp;quot;)){&lt;br /&gt;
	function topngFnc(){&lt;br /&gt;
			let myfile=document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;);&lt;br /&gt;
			let r=new FileReader();&lt;br /&gt;
			r.readAsDataURL(myfile.files[0]);&lt;br /&gt;
			r.onload=function(){&lt;br /&gt;
				let myimg=new Image();&lt;br /&gt;
				myimg.src=r.result;&lt;br /&gt;
				myimg.onload=function(){&lt;br /&gt;
					let mycanvas=document.createElement(&amp;quot;canvas&amp;quot;);&lt;br /&gt;
					let myctx=mycanvas.getContext(&amp;quot;2d&amp;quot;);&lt;br /&gt;
					mycanvas.height=myimg.height;&lt;br /&gt;
					mycanvas.width=myimg.width;&lt;br /&gt;
					myctx.drawImage(myimg,0,0,mycanvas.width,mycanvas.height);&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).value=&amp;quot;ダウンロード&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=function(){&lt;br /&gt;
						let mya=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
						mya.href=mycanvas.toDataURL();&lt;br /&gt;
						mya.download=(document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value||&amp;quot;download&amp;quot;).split(&amp;quot;.&amp;quot;)[0]+&amp;quot;.png&amp;quot;;&lt;br /&gt;
						mya.click();&lt;br /&gt;
					};&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).onclick=function(){&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).value=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).value=&amp;quot;変換&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=topngFnc;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-data&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-file-name&amp;quot;).innerHTML=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					};&lt;br /&gt;
				};&lt;br /&gt;
				myimg.onerror=function(){&lt;br /&gt;
					window.alert(&amp;quot;エラーが発生しました。&amp;quot;);	&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		}&lt;br /&gt;
		document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).onchange=function(e){&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-file-name&amp;quot;).innerHTML=e.target.files[0].name;&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value=e.target.files[0].name.split(&amp;quot;.&amp;quot;)[0];&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-data&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=topngFnc;&lt;br /&gt;
	}&lt;br /&gt;
	let myobj={};&lt;br /&gt;
	document.querySelector(&amp;quot;span.sitestyle&amp;quot;)?document.querySelector(&amp;quot;span.sitestyle&amp;quot;).innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
		myobj[mypp.split(&amp;quot;:&amp;quot;)[0]]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;mw-content&amp;quot;).style.background=myobj.bgcolor?(&amp;quot;color-mix(in srgb, &amp;quot;+myobj.bgcolor+&amp;quot; var(--theme-mode-opacity), rgba(var(--theme-page-color--rgb),0.9))&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.maincolor?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-main-bg-color&amp;quot;,myobj.maincolor):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.link?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-link-color&amp;quot;,myobj.link):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.linkhover?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-link-color--hover&amp;quot;,myobj.linkhover):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.cosmos-header&amp;quot;).style.background=myobj.headerbg||&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.cosmos-header&amp;quot;).style.color=myobj.headercolor||&amp;quot;&amp;quot;;&lt;br /&gt;
})();&lt;br /&gt;
//jsload-delete&lt;br /&gt;
(function(){&lt;br /&gt;
	document.querySelector(&amp;quot;.jsload-delete&amp;quot;)?document.querySelectorAll(&amp;quot;.jsload-delete&amp;quot;).forEach(function(element){&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=MediaWiki:Cosmos.js&amp;diff=154</id>
		<title>MediaWiki:Cosmos.js</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=MediaWiki:Cosmos.js&amp;diff=154"/>
		<updated>2026-07-20T08:50:41Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: LiberalPolandball (トーク) による編集を デリゾール による直前の版へ差し戻しました&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$(function() {&lt;br /&gt;
	window.PBWTools = {&lt;br /&gt;
		collapseToolbar: function () {&lt;br /&gt;
			var toolbarCollapsed = mw.storage.get(&amp;quot;pbw-toolbar-collapsed&amp;quot;) !== &amp;quot;true&amp;quot; ? false : true;&lt;br /&gt;
			$(&amp;quot;&amp;lt;div&amp;gt;&amp;quot;).addClass(&amp;quot;cosmos-toolbar-collapse-button&amp;quot;).appendTo(&amp;quot;#cosmos-toolbar&amp;quot;);&lt;br /&gt;
			$(&amp;quot;.cosmos-toolbar-collapse-button&amp;quot;).click(function(target) {&lt;br /&gt;
				$(&amp;quot;#cosmos-toolbar&amp;quot;).toggleClass(&amp;quot;cosmos-toolbar-collapsed&amp;quot;);&lt;br /&gt;
				mw.storage.set(&amp;quot;pbw-toolbar-collapsed&amp;quot;, !toolbarCollapsed);&lt;br /&gt;
			});&lt;br /&gt;
			if (toolbarCollapsed) {&lt;br /&gt;
				$(&amp;quot;#cosmos-toolbar&amp;quot;).addClass(&amp;quot;cosmos-toolbar-collapsed&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		init: function () {&lt;br /&gt;
			mw.loader.using(&amp;quot;mediawiki.storage&amp;quot;).then(this.collapseToolbar);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
	window.PBWTools.init();&lt;br /&gt;
});&lt;br /&gt;
/*font tag for HTML5*/&lt;br /&gt;
document.querySelectorAll(&amp;quot;font&amp;quot;).forEach(function(element){&lt;br /&gt;
	element.style.color=element.getAttribute(&amp;quot;color&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
	element.style.fontFamily=element.getAttribute(&amp;quot;face&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
	element.style.fontSize=[&amp;quot;x-small&amp;quot;,&amp;quot;small&amp;quot;,&amp;quot;medium&amp;quot;,&amp;quot;large&amp;quot;,&amp;quot;x-large&amp;quot;,&amp;quot;xx-large&amp;quot;,&amp;quot;xxx-large&amp;quot;][Number(element.getAttribute(&amp;quot;size&amp;quot;))-1||2]||&amp;quot;&amp;quot;;&lt;br /&gt;
});&lt;br /&gt;
/*cosmos-banner*/&lt;br /&gt;
(function(){&lt;br /&gt;
	let myHomeLink=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
	myHomeLink.innerHTML=`&amp;lt;a href=&amp;quot;/&amp;quot;&amp;gt;ポリティボールwiki&amp;lt;/a&amp;gt;`;&lt;br /&gt;
	myHomeLink.id=&amp;quot;mw-banner-home&amp;quot;;&lt;br /&gt;
	myHomeLink.classList.add(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	document.getElementById(&amp;quot;cosmos-banner-content&amp;quot;).prepend(myHomeLink);&lt;br /&gt;
	if(window.innerWidth&amp;gt;850&amp;amp;&amp;amp;window.scrollY&amp;lt;60){&lt;br /&gt;
		document.getElementById(&amp;quot;cosmos-banner&amp;quot;).classList.add(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
		myHomeLink.classList.remove(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
})();&lt;br /&gt;
window.onscroll=function(){&lt;br /&gt;
let cosmosBanner=document.getElementById(&amp;quot;cosmos-banner&amp;quot;);&lt;br /&gt;
if(window.scrollY&amp;gt;60){&lt;br /&gt;
	if(document.querySelector(&amp;quot;html&amp;quot;).classList.contains(&amp;quot;client-darkmode&amp;quot;)){&lt;br /&gt;
		cosmosBanner.style.background=&amp;quot;rgba(20,20,20,0.7)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	else{&lt;br /&gt;
		cosmosBanner.style.background=&amp;quot;rgba(20,20,20,0.75)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	cosmosBanner.style.boxShadow=&amp;quot;0 2px 5px rgba(0, 0, 0, .4)&amp;quot;;&lt;br /&gt;
	cosmosBanner.classList.remove(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
	document.getElementById(&amp;quot;mw-banner-home&amp;quot;).classList.add(&amp;quot;visible&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
else{&lt;br /&gt;
	cosmosBanner.style.background=&amp;quot;&amp;quot;;&lt;br /&gt;
	cosmosBanner.style.boxShadow=&amp;quot;&amp;quot;;&lt;br /&gt;
	if(window.innerWidth&amp;gt;850){&lt;br /&gt;
		cosmosBanner.classList.add(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
		document.getElementById(&amp;quot;mw-banner-home&amp;quot;).classList.remove(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	else{&lt;br /&gt;
		cosmosBanner.classList.remove(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
document.body.style.setProperty(&amp;quot;--theme-body-background-position&amp;quot;,&amp;quot;center &amp;quot;+(window.scrollY/(document.body.scrollHeight-window.innerHeight)*((1080-window.innerHeight)/(1080/window.innerHeight*3)))+&amp;quot;px&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
setInterval(function(){&lt;br /&gt;
	/*spoiler*/&lt;br /&gt;
	document.querySelectorAll(&amp;quot;.mw-spoiler&amp;quot;).forEach(function(element){&lt;br /&gt;
		element.title=&amp;quot;クリックで表示&amp;quot;;&lt;br /&gt;
		element.onclick=function(e){&lt;br /&gt;
		if(element.classList.contains(&amp;quot;mw-spoiler&amp;quot;)){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
		}&lt;br /&gt;
		element.classList.remove(&amp;quot;mw-spoiler&amp;quot;);&lt;br /&gt;
		element.classList.add(&amp;quot;mw-spoiler-visible&amp;quot;);&lt;br /&gt;
		element.title=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
	});&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;talk-comment-mode--cs&amp;quot;)){&lt;br /&gt;
			document.querySelectorAll(&amp;quot;span[data-mw-comment-end]:not(h2 span):not(.splited)&amp;quot;).forEach(function(element){&lt;br /&gt;
			element.after(document.createElement(&amp;quot;hr&amp;quot;));&lt;br /&gt;
			element.classList.add(&amp;quot;splited&amp;quot;);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	//Reply-Link&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)){&lt;br /&gt;
			document.querySelectorAll(&amp;quot;.ext-discussiontools-init-replylink-buttons:not(.added):not(.ext-discussiontools-ui-replyWidget-preview .ext-discussiontools-init-replylink-buttons)&amp;quot;).forEach(function(element){&lt;br /&gt;
			let myLink=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
			myLink.innerHTML=&amp;quot;返信リンクを追加&amp;quot;;&lt;br /&gt;
			myLink.style.cssText=&amp;quot;margin-left:1em;display:none;&amp;quot;;&lt;br /&gt;
			element.after(myLink);&lt;br /&gt;
			element.classList.add(&amp;quot;added&amp;quot;);&lt;br /&gt;
			setInterval(function(){&lt;br /&gt;
				if(element.classList.contains(&amp;quot;ext-discussiontools-init-replylink-active&amp;quot;)){&lt;br /&gt;
					myLink.style.fontWeight=&amp;quot;bold&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myLink.style.fontWeight=&amp;quot;&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				if(document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;)){&lt;br /&gt;
					myLink.style.display=&amp;quot;inline&amp;quot;;&lt;br /&gt;
					if(element.classList.contains(&amp;quot;ext-discussiontools-init-replylink-active&amp;quot;)&amp;amp;&amp;amp;!element.classList.contains(&amp;quot;clicked&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;reply-button-click&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked){&lt;br /&gt;
						setTimeout(function(){&lt;br /&gt;
							myLink.click();&lt;br /&gt;
						},500);&lt;br /&gt;
						element.classList.add(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myLink.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					element.classList.remove(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
			},10);&lt;br /&gt;
			myLink.addEventListener(&amp;quot;click&amp;quot;,function(){&lt;br /&gt;
				document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).focus();&lt;br /&gt;
				setTimeout(function(){&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode span&amp;quot;).innerHTML=&amp;quot;[[{{FULLPAGENAME}}#&amp;quot;+element.getAttribute(&amp;quot;data-mw-thread-id&amp;quot;)+&amp;quot;|&amp;gt;&amp;gt;返信先]]\n\n&amp;quot;+document.querySelector(&amp;quot;.ve-ce-attachedRootNode span&amp;quot;).innerHTML;&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).blur();&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).focus();&lt;br /&gt;
				},1000);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
		document.querySelectorAll(&amp;quot;a:not(.added)&amp;quot;).forEach(function(element){&lt;br /&gt;
			if(decodeURI(element.href).indexOf(&amp;quot;#c-&amp;quot;)!=-1&amp;amp;&amp;amp;element.classList.contains(&amp;quot;mw-selflink-fragment&amp;quot;)){&lt;br /&gt;
					let inputNode=document.getElementById(decodeURI(element.href).split(&amp;quot;#&amp;quot;)[1]).parentElement.cloneNode(true);&lt;br /&gt;
					element.title=inputNode.textContent;&lt;br /&gt;
					element.classList.add(&amp;quot;added&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
},100);&lt;br /&gt;
/*Snow Flake Fnc&lt;br /&gt;
(function(){&lt;br /&gt;
	for(var yukiLength=0;yukiLength&amp;lt;(Math.round(document.body.offsetHeight/40)&amp;lt;500?Math.round(document.body.offsetHeight/40):500);yukiLength++){&lt;br /&gt;
	let myimg=document.createElement(&amp;quot;img&amp;quot;);&lt;br /&gt;
	myimg.src=&amp;quot;https://japolandballfanon.miraheze.org/wiki/Special:FilePath/Pagesnowflake.svg&amp;quot;;&lt;br /&gt;
	myimg.width=&amp;quot;40&amp;quot;;&lt;br /&gt;
	myimg.height=&amp;quot;40&amp;quot;;&lt;br /&gt;
	myimg.style.cssText=&amp;quot;position:absolute;&amp;quot;;&lt;br /&gt;
	myimg.style.top=(Math.floor(Math.random() *(document.body.offsetHeight-40))+1)+&amp;quot;px&amp;quot;;&lt;br /&gt;
	myimg.style.left=(Math.floor(Math.random() *(document.body.offsetWidth-40))+1)+&amp;quot;px&amp;quot;;&lt;br /&gt;
	document.body.style.background=window.getComputedStyle(document.getElementById(&amp;quot;mw-content&amp;quot;)).background;&lt;br /&gt;
	document.body.appendChild(myimg);&lt;br /&gt;
	myimg.onclick=function(){&lt;br /&gt;
	myimg.remove();	&lt;br /&gt;
	};&lt;br /&gt;
	}&lt;br /&gt;
})();&lt;br /&gt;
*/&lt;br /&gt;
function addScript(src){&lt;br /&gt;
	let scr=document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	scr.src=&amp;quot;https://japolandball.miraheze.org/wiki/MediaWiki:&amp;quot;+src+&amp;quot;.js?action=raw&amp;amp;ctype=text/javascript&amp;quot;;&lt;br /&gt;
	document.body.appendChild(scr);&lt;br /&gt;
}&lt;br /&gt;
function importItem(href,rel,element=&amp;quot;head&amp;quot;){&lt;br /&gt;
	let link=document.createElement(&amp;quot;link&amp;quot;);&lt;br /&gt;
	link.href=href;&lt;br /&gt;
	link.rel=rel;&lt;br /&gt;
	document.querySelector(element).appendChild(link);&lt;br /&gt;
}&lt;br /&gt;
/*iconMaker*/&lt;br /&gt;
addScript(&amp;quot;IconMaker&amp;quot;);&lt;br /&gt;
/*AutoFill*/&lt;br /&gt;
addScript(&amp;quot;AutoFill&amp;quot;);&lt;br /&gt;
/*AbuseFilter*/&lt;br /&gt;
addScript(&amp;quot;AbuseFilter&amp;quot;);&lt;br /&gt;
/*limited design*/&lt;br /&gt;
addScript(&amp;quot;LimitedDesign&amp;quot;);&lt;br /&gt;
/*ArticleTemplate*/&lt;br /&gt;
addScript(&amp;quot;ArticleTemplate&amp;quot;);&lt;br /&gt;
/*UserColor*/&lt;br /&gt;
addScript(&amp;quot;LinkColor&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
(function(){&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-checkbox&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-checkbox&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let checkbox=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		checkbox.type=&amp;quot;checkbox&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		myZobj.boxsize?checkbox.style.width=myZobj.boxsize:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.boxsize?checkbox.style.height=myZobj.boxsize:&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				checkbox.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		myZobj.id?checkbox.id=myZobj.id:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.value?checkbox.value=myZobj.value:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.checked==&amp;quot;true&amp;quot;?checkbox.checked=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?checkbox.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.label){&lt;br /&gt;
			let mylabel=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			mylabel.style.userSelect=&amp;quot;none&amp;quot;;&lt;br /&gt;
			myZobj.labelfontsize?mylabel.style.fontSize=myZobj.labelfontsize:&amp;quot;&amp;quot;;&lt;br /&gt;
			if(myZobj.labelposition&amp;amp;&amp;amp;myZobj.labelposition==&amp;quot;after&amp;quot;){&lt;br /&gt;
				mylabel.innerHTML=myZobj.label;&lt;br /&gt;
				mylabel.appendChild(checkbox);&lt;br /&gt;
				mylabel.innerHTML+=`&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:${myZobj.detailfontsize||&amp;quot;0.8em&amp;quot;};&amp;quot;&amp;gt;${myZobj.detail||&amp;quot;&amp;quot;}&amp;lt;/span&amp;gt;`;&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				mylabel.appendChild(checkbox);&lt;br /&gt;
				mylabel.innerHTML+=myZobj.label+&amp;quot;&amp;lt;br&amp;gt;&amp;quot;+(myZobj.detail?(`&amp;lt;span style=&amp;quot;margin-left:${myZobj.boxsize||&amp;quot;1em&amp;quot;};&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`):&amp;quot;&amp;quot;)+`&amp;lt;span style=&amp;quot;font-size:${myZobj.detailfontsize||&amp;quot;0.8em&amp;quot;};&amp;quot;&amp;gt;${myZobj.detail||&amp;quot;&amp;quot;}&amp;lt;/span&amp;gt;`;&lt;br /&gt;
			}&lt;br /&gt;
			element.after(mylabel);&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			element.after(checkbox);&lt;br /&gt;
		}&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-text&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-text&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mytextbox=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mytextbox.type=&amp;quot;text&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		mytextbox.value=myZobj.value||&amp;quot;&amp;quot;;&lt;br /&gt;
		mytextbox.placeholder=myZobj.placeholder||&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mytextbox.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mytextbox.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		mytextbox.style.height=myZobj.height||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mytextbox.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mytextbox.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mytextbox.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mytextbox);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;mw-upload-polandball-rule-checkbox&amp;quot;)?document.getElementById(&amp;quot;mw-upload-polandball-rule-checkbox&amp;quot;).onchange=function(e){&lt;br /&gt;
		if(e.target.checked){&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
			document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=function(event){&lt;br /&gt;
				event.preventDefault();&lt;br /&gt;
				let isCheckboxChecked=true;&lt;br /&gt;
				for(let myElementLength=0;myElementLength&amp;lt;document.querySelectorAll(&amp;quot;.mw-upload-polandball-rule-confirm-checkbox&amp;quot;).length;myElementLength++){&lt;br /&gt;
					if(document.querySelectorAll(&amp;quot;.mw-upload-polandball-rule-confirm-checkbox&amp;quot;)[myElementLength].checked==false){&lt;br /&gt;
						isCheckboxChecked=false;&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if(isCheckboxChecked){&lt;br /&gt;
					document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=null;&lt;br /&gt;
					document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).click();&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					window.alert(&amp;quot;ポーランドボールのルールに則ったイラストをアップロードしてください。&amp;quot;);&lt;br /&gt;
					location.hash=&amp;quot;&amp;quot;;&lt;br /&gt;
					location.hash=&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
			};&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
			document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=null;&lt;br /&gt;
		}&lt;br /&gt;
	}:&amp;quot;&amp;quot;;&lt;br /&gt;
	if(document.getElementById(&amp;quot;wpDestFile&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;wpDestFile&amp;quot;).value!=&amp;quot;&amp;quot;){&lt;br /&gt;
		document.getElementById(&amp;quot;mw-upload-polandball-rule-parent-div&amp;quot;).innerHTML=&amp;quot;&amp;lt;span style=&#039;font-size:1.2em;&#039;&amp;gt;※回答済み&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	document.querySelector(&amp;quot;.filehistory,.mw-blocklist&amp;quot;)?document.querySelectorAll(&amp;quot;.filehistory,.mw-blocklist&amp;quot;).forEach(function(element){&lt;br /&gt;
		let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		mydiv.style.cssText=&amp;quot;max-width:100%;overflow-x:auto;&amp;quot;;&lt;br /&gt;
		mydiv.appendChild(element.cloneNode(true));&lt;br /&gt;
		element.after(mydiv);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	if(mw.config.values.wgAction==&amp;quot;edit&amp;quot;||mw.config.values.wgAction==&amp;quot;submit&amp;quot;){&lt;br /&gt;
		let mylabel=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		mylabel.style.cssText=&amp;quot;font-size:1.2em;font-weight:bold;&amp;quot;;&lt;br /&gt;
		mylabel.innerHTML=`&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;mw-edit-rule-checker&amp;quot; style=&amp;quot;width:1.5em;height:1.5em;margin-right:1.5em&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;Project:ルール&amp;quot; style=&amp;quot;color:var(--theme-link-color) !important;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;ルール&amp;lt;/a&amp;gt;をよく読み、これに遵守します。`;&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(document.createElement(&amp;quot;br&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(document.createElement(&amp;quot;br&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(mylabel);&lt;br /&gt;
		document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			if(document.getElementById(&amp;quot;mw-edit-rule-checker&amp;quot;).checked){&lt;br /&gt;
				document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=null;&lt;br /&gt;
				document.getElementById(&amp;quot;wpSave&amp;quot;).click();&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				window.alert(&amp;quot;wikiのルールに則った編集を行ってください。過激な発言等は削除されます。&amp;quot;);&lt;br /&gt;
				if(window.confirm(&amp;quot;ルールに同意して保存しますか？\n編集画面に戻る際はキャンセルを選択してください。&amp;quot;)){&lt;br /&gt;
					document.getElementById(&amp;quot;mw-edit-rule-checker&amp;quot;).checked=true;&lt;br /&gt;
					document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=null;&lt;br /&gt;
					document.getElementById(&amp;quot;wpSave&amp;quot;).click();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cursor&amp;quot;)){&lt;br /&gt;
		document.querySelector(&amp;quot;html&amp;quot;).style.cssText=&amp;quot;--theme-page-cursor:url(/wiki/Special:FilePath/&amp;quot;+document.getElementById(&amp;quot;template-cursor-auto&amp;quot;).innerHTML+&amp;quot;),auto !important;--theme-page-cursor-link:url(/wiki/Special:FilePath/&amp;quot;+document.getElementById(&amp;quot;template-cursor-pointer&amp;quot;).innerHTML+&amp;quot;),pointer !important;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;mw-upload-file-uploader&amp;quot;)){&lt;br /&gt;
		let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		let myspan=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		mydiv.id=&amp;quot;mw-upload-file-uploader-area&amp;quot;;&lt;br /&gt;
		myspan.id=&amp;quot;mw-upload-file-uploader-text&amp;quot;;&lt;br /&gt;
		myspan.innerHTML=&amp;quot;ファイルをここにドロップ&amp;quot;;&lt;br /&gt;
		mydiv.appendChild(myspan);&lt;br /&gt;
		document.body.appendChild(mydiv);&lt;br /&gt;
		document.getElementById(&amp;quot;mw-upload-file-uploader&amp;quot;).remove();&lt;br /&gt;
		window.ondragover=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.body.onmousemove=function(){&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.body.ondrop=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			document.querySelector(&amp;quot;input[type=&#039;file&#039;]&amp;quot;).files=e.dataTransfer.files;&lt;br /&gt;
			document.getElementById(&amp;quot;wpDestFile&amp;quot;).value==&amp;quot;&amp;quot;?document.getElementById(&amp;quot;wpDestFile&amp;quot;).value=document.querySelector(&amp;quot;input[type=&#039;file&#039;]&amp;quot;).files[0].name:&amp;quot;&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	//Template:LCS&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-lcs&amp;quot;)||mw.config.values.wgNamespaceNumber==1){&lt;br /&gt;
		document.body.classList.add(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	//Template:DSC&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-dsc&amp;quot;)){&lt;br /&gt;
		document.body.classList.remove(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	//Talk Radio Button&lt;br /&gt;
	if(document.getElementById(&amp;quot;top-notice-ns&amp;quot;)&amp;amp;&amp;amp;document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)){&lt;br /&gt;
		let myForm=document.createElement(&amp;quot;form&amp;quot;);&lt;br /&gt;
		let myLabelDefault=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		let myLabelCS=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		let myLabelReply=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		myLabelDefault.innerHTML=`&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;talkCommentMode&amp;quot; id=&amp;quot;talk-comment-mode--default&amp;quot; value=&amp;quot;default&amp;quot;&amp;gt;デフォルトモード`;&lt;br /&gt;
		myLabelDefault.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myLabelCS.innerHTML=`&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;talkCommentMode&amp;quot; id=&amp;quot;talk-comment-mode--cs&amp;quot; value=&amp;quot;cs&amp;quot;&amp;gt;疑似CS`;&lt;br /&gt;
		myLabelCS.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myLabelReply.innerHTML=`&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;reply-button-click&amp;quot;&amp;gt;&amp;lt;a&amp;gt;&amp;gt;&amp;gt;返信先&amp;lt;/a&amp;gt;をデフォルトで入力`;&lt;br /&gt;
		myLabelReply.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myForm.id=&amp;quot;talk-comment-form&amp;quot;;&lt;br /&gt;
		myForm.style.cssText=&amp;quot;border-bottom:1px solid var(--theme-text-color);font-size:1.1em;margin-bottom:0.8em;&amp;quot;;&lt;br /&gt;
		myForm.appendChild(myLabelDefault);&lt;br /&gt;
		myForm.appendChild(myLabelCS);&lt;br /&gt;
		myForm.appendChild(myLabelReply);&lt;br /&gt;
		myForm.innerHTML+=`&amp;lt;br&amp;gt;&amp;lt;label style=&amp;quot;margin-right:1em;&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;template-scroll-button-visibility&amp;quot;&amp;gt;スクロールボタンを表示&amp;lt;/label&amp;gt;`;&lt;br /&gt;
		document.getElementById(&amp;quot;top-notice-ns&amp;quot;).after(myForm);&lt;br /&gt;
		//talk-comment-mode&lt;br /&gt;
		if(document.body.classList.contains(&amp;quot;talk-comment-mode--cs&amp;quot;)){&lt;br /&gt;
			document.getElementById(&amp;quot;talk-comment-mode--cs&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			document.getElementById(&amp;quot;talk-comment-mode--default&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		//reply-button-click&lt;br /&gt;
		if(localStorage.getItem(&amp;quot;reply-button-click&amp;quot;)){&lt;br /&gt;
			if(localStorage.getItem(&amp;quot;reply-button-click&amp;quot;)==&amp;quot;yes&amp;quot;){&lt;br /&gt;
				document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked=true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;yes&amp;quot;);&lt;br /&gt;
			document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		//scroll-button-visibility&lt;br /&gt;
		if(localStorage.getItem(&amp;quot;scroll-button-visibility&amp;quot;)){&lt;br /&gt;
			if(localStorage.getItem(&amp;quot;scroll-button-visibility&amp;quot;)==&amp;quot;visible&amp;quot;){&lt;br /&gt;
				document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked=true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;visible&amp;quot;);&lt;br /&gt;
			document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		myForm.oninput=function(){&lt;br /&gt;
			if(myForm.talkCommentMode.value==&amp;quot;cs&amp;quot;){&lt;br /&gt;
				document.body.classList.add(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				document.body.classList.remove(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
				document.querySelectorAll(&amp;quot;span.splited+hr&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.remove();&lt;br /&gt;
				});&lt;br /&gt;
				document.querySelectorAll(&amp;quot;span.splited&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.classList.remove(&amp;quot;splited&amp;quot;);&lt;br /&gt;
				});&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;reply-button-click&amp;quot;).onchange=function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked){&lt;br /&gt;
				localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;yes&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;no&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).onchange=function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked){&lt;br /&gt;
				localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;visible&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;hidden&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	//Scroll Button&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)||document.getElementById(&amp;quot;template-scroll-button&amp;quot;)){&lt;br /&gt;
		let myScrollUpBtn=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		let myScrollDownBtn=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		myScrollUpBtn.classList.add(&amp;quot;template-scroll-button&amp;quot;);&lt;br /&gt;
		myScrollDownBtn.classList.add(&amp;quot;template-scroll-button&amp;quot;);&lt;br /&gt;
		myScrollUpBtn.style.bottom=&amp;quot;9em&amp;quot;;&lt;br /&gt;
		myScrollDownBtn.style.bottom=&amp;quot;5em&amp;quot;;&lt;br /&gt;
		myScrollUpBtn.innerHTML=`&amp;lt;span class=&amp;quot;template-scroll-button-mark template-scroll-button-mark-up&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`;&lt;br /&gt;
		myScrollDownBtn.innerHTML=`&amp;lt;span class=&amp;quot;template-scroll-button-mark template-scroll-button-mark-down&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`;&lt;br /&gt;
		document.body.appendChild(myScrollUpBtn);&lt;br /&gt;
		document.body.appendChild(myScrollDownBtn);&lt;br /&gt;
		myScrollUpBtn.onclick=function(){&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;smooth&amp;quot;;&lt;br /&gt;
			window.scroll(0,0);&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		myScrollDownBtn.onclick=function(){&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;smooth&amp;quot;;&lt;br /&gt;
			window.scroll(0,document.body.offsetHeight);&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		setInterval(function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;)){&lt;br /&gt;
				if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked){&lt;br /&gt;
					myScrollUpBtn.style.display=&amp;quot;&amp;quot;;&lt;br /&gt;
					myScrollDownBtn.style.display=&amp;quot;&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myScrollUpBtn.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					myScrollDownBtn.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},10);&lt;br /&gt;
	}&lt;br /&gt;
	//color-menu&lt;br /&gt;
	if(mw.config.values.wgUserName&amp;amp;&amp;amp;(mw.config.values.wgAction==&amp;quot;edit&amp;quot;||mw.config.values.wgAction==&amp;quot;submit&amp;quot;||document.body.classList.contains(&amp;quot;ns-talk&amp;quot;))){&lt;br /&gt;
		function toHEX(rgbdata){&lt;br /&gt;
			let rgb=rgbdata.replaceAll(&amp;quot;rgba(&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot;rgb(&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot;)&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot; &amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;,&amp;quot;);&lt;br /&gt;
			rgb=rgb.map(function(data){&lt;br /&gt;
				return Number(data);&lt;br /&gt;
			});&lt;br /&gt;
			return &amp;quot;#&amp;quot;+rgb.map(function(data){&lt;br /&gt;
				return (&amp;quot;0&amp;quot;+data.toString(16)).slice(-2);&lt;br /&gt;
			}).join(&amp;quot;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		function nn(number){&lt;br /&gt;
			if(number.length==1){&lt;br /&gt;
				number=&amp;quot;0&amp;quot;+number;&lt;br /&gt;
			}&lt;br /&gt;
			return number;&lt;br /&gt;
		}&lt;br /&gt;
		let myColor=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		let myMenu=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		myColor.id=&amp;quot;colorTestButton&amp;quot;;&lt;br /&gt;
		myColor.innerHTML=&amp;quot;🎨&amp;quot;;&lt;br /&gt;
		myMenu.id=&amp;quot;colorTestMenu&amp;quot;;&lt;br /&gt;
		myMenu.innerHTML=`色合い&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;文字色&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-color&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; data-value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-color-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-color-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;背景色&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-bgcolor&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;0&amp;quot; data-value=&amp;quot;0&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-bgcolor-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-bgcolor-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;colorTestMenu-preview&amp;quot; class=&amp;quot;colorTestMenu-result&amp;quot;&amp;gt;テキスト&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;太字テキスト&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;a style=&amp;quot;color:var(--theme-link-color)&amp;quot;&amp;gt;リンクテキスト&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		CSS:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-cssText&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;background:;color:;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-cssText,innerHTML&amp;quot; value=&amp;quot;CSSをコピー&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;リセット&amp;quot; class=&amp;quot;colorTestMenu-reset&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;hr&amp;gt;&lt;br /&gt;
		混色&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;色A&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-colorA&amp;quot; value=&amp;quot;#000000&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-colorA-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-colorA-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;色B&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-colorB&amp;quot; value=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-colorB-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-colorB-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;colorTestMenu-mix-preview&amp;quot; class=&amp;quot;colorTestMenu-result&amp;quot; style=&amp;quot;background:color-mix(in srgb,red,black);&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		カラーコード:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-mix-colorCode&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;color(srgb 0.5 0 0)&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-mix-colorCode,innerHTML&amp;quot; value=&amp;quot;カラーコードをコピー&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;hr&amp;gt;&lt;br /&gt;
		カスタムプロパティ一覧&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;select id=&amp;quot;colorTestMenu-varTable&amp;quot;&amp;gt;&amp;lt;/select&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		ライトモード：&amp;lt;div class=&amp;quot;colorTestMenu-varTable-modepreview&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;client-defaultmode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		ダークモード：&amp;lt;div class=&amp;quot;colorTestMenu-varTable-modepreview&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;client-darkmode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		CSS:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-varTable-property&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-varTable-property,innerHTML&amp;quot; value=&amp;quot;CSSをコピー&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		値として利用:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-varTable-value&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-varTable-value,innerHTML&amp;quot; value=&amp;quot;値をコピー&amp;quot;&amp;gt;&lt;br /&gt;
		`;&lt;br /&gt;
		document.body.appendChild(myColor);&lt;br /&gt;
		document.body.appendChild(myMenu);&lt;br /&gt;
		myColor.onclick=function(){&lt;br /&gt;
			myMenu.classList.toggle(&amp;quot;visible&amp;quot;);&lt;br /&gt;
			if(myMenu.classList.contains(&amp;quot;visible&amp;quot;)){&lt;br /&gt;
				let closeArea=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
				closeArea.style.cssText=&amp;quot;background:transparent;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:2999;&amp;quot;;&lt;br /&gt;
				closeArea.id=&amp;quot;colorTestCloseArea&amp;quot;;&lt;br /&gt;
				closeArea.onclick=function(){&lt;br /&gt;
					myColor.click();&lt;br /&gt;
				};&lt;br /&gt;
				document.body.appendChild(closeArea);&lt;br /&gt;
				myColor.innerHTML=&amp;quot;✕&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				myColor.innerHTML=&amp;quot;🎨&amp;quot;;&lt;br /&gt;
				document.getElementById(&amp;quot;colorTestCloseArea&amp;quot;).remove();&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		let sbody=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		sbody.style.cssText=&amp;quot;background:var(--theme-main-color);color:var(--theme-text-color);&amp;quot;;&lt;br /&gt;
		document.body.appendChild(sbody);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;).value=document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;).dataset.value=toHEX(window.getComputedStyle(sbody).color);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;).value=document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;).dataset.value=toHEX(window.getComputedStyle(sbody).getPropertyValue(&amp;quot;background-color&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-cssText&amp;quot;).innerHTML=&amp;quot;background:&amp;quot;+toHEX(window.getComputedStyle(sbody).getPropertyValue(&amp;quot;background-color&amp;quot;))+&amp;quot;00;color:&amp;quot;+toHEX(window.getComputedStyle(sbody).color)+&amp;quot;ff;&amp;quot;;&lt;br /&gt;
		sbody.remove();&lt;br /&gt;
		function inputAreaFnc(){&lt;br /&gt;
		let color=document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;);&lt;br /&gt;
		let coloropa=document.getElementById(&amp;quot;colorTestMenu-color-opacity&amp;quot;);&lt;br /&gt;
		let bg=document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;);&lt;br /&gt;
		let bgopa=document.getElementById(&amp;quot;colorTestMenu-bgcolor-opacity&amp;quot;);&lt;br /&gt;
		let colorA=document.getElementById(&amp;quot;colorTestMenu-colorA&amp;quot;);&lt;br /&gt;
		let colorAopa=document.getElementById(&amp;quot;colorTestMenu-colorA-opacity&amp;quot;);&lt;br /&gt;
		let colorB=document.getElementById(&amp;quot;colorTestMenu-colorB&amp;quot;);&lt;br /&gt;
		let colorBopa=document.getElementById(&amp;quot;colorTestMenu-colorB-opacity&amp;quot;);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-preview&amp;quot;).style.cssText=document.getElementById(&amp;quot;colorTestMenu-cssText&amp;quot;).innerHTML=&amp;quot;background:&amp;quot;+bg.value+nn(Math.round(bgopa.value*255).toString(16))+&amp;quot;;color:&amp;quot;+color.value+nn(Math.round(coloropa.value*255).toString(16))+&amp;quot;;&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-color-opacity-value&amp;quot;).innerHTML=coloropa.value*10;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-bgcolor-opacity-value&amp;quot;).innerHTML=bgopa.value*10;&lt;br /&gt;
		let mix=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		mix.style.background=&amp;quot;color-mix(in srgb,&amp;quot;+colorA.value+nn(Math.round(colorAopa.value*255).toString(16))+&amp;quot;,&amp;quot;+colorB.value+nn(Math.round(colorBopa.value*255).toString(16))+&amp;quot;)&amp;quot;;&lt;br /&gt;
		document.body.appendChild(mix);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-mix-preview&amp;quot;).style.background=document.getElementById(&amp;quot;colorTestMenu-mix-colorCode&amp;quot;).innerHTML=window.getComputedStyle(mix).getPropertyValue(&amp;quot;background-color&amp;quot;);&lt;br /&gt;
		mix.remove();&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-colorA-opacity-value&amp;quot;).innerHTML=colorAopa.value*10;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-colorB-opacity-value&amp;quot;).innerHTML=colorBopa.value*10;&lt;br /&gt;
		}&lt;br /&gt;
		let customProperty=[[&amp;quot;文字色&amp;quot;,&amp;quot;--theme-text-color&amp;quot;],[&amp;quot;リンク色&amp;quot;,&amp;quot;--theme-link-color&amp;quot;],[&amp;quot;hover時のリンク色&amp;quot;,&amp;quot;--theme-link-color--hover&amp;quot;],[&amp;quot;メインカラー&amp;quot;,&amp;quot;--theme-main-bg-color&amp;quot;],[&amp;quot;中間色&amp;quot;,&amp;quot;--theme-page-second-color&amp;quot;]];&lt;br /&gt;
		let cps=document.getElementById(&amp;quot;colorTestMenu-varTable&amp;quot;);&lt;br /&gt;
		customProperty.forEach(function(data){&lt;br /&gt;
			let myOption=document.createElement(&amp;quot;option&amp;quot;);&lt;br /&gt;
			myOption.innerHTML=data[0];&lt;br /&gt;
			myOption.value=data[1];&lt;br /&gt;
			cps.appendChild(myOption);&lt;br /&gt;
		});&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-varTable-value&amp;quot;).innerHTML=customProperty[0][1]+&amp;quot;:;&amp;quot;;&lt;br /&gt;
		function selectVarTableFnc(){&lt;br /&gt;
			document.getElementById(&amp;quot;colorTestMenu-varTable-property&amp;quot;).innerHTML=cps.value+&amp;quot;:;&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;colorTestMenu-varTable-value&amp;quot;).innerHTML=&amp;quot;var(&amp;quot;+cps.value+&amp;quot;)&amp;quot;;&lt;br /&gt;
			document.querySelectorAll(&amp;quot;.colorTestMenu-varTable-modepreview&amp;quot;).forEach(function(element){&lt;br /&gt;
				element.querySelector(&amp;quot;div&amp;quot;).style.background=&amp;quot;var(&amp;quot;+cps.value+&amp;quot;)&amp;quot;;&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		selectVarTableFnc();&lt;br /&gt;
		cps.oninput=selectVarTableFnc;&lt;br /&gt;
		myMenu.oninput=inputAreaFnc;&lt;br /&gt;
		document.querySelector(&amp;quot;.colorTestMenu-copyButton&amp;quot;)?document.querySelectorAll(&amp;quot;.colorTestMenu-copyButton&amp;quot;).forEach(function(element){&lt;br /&gt;
			if(window.isSecureContext){&lt;br /&gt;
				element.onclick=function(){&lt;br /&gt;
					let originValue=element.value;&lt;br /&gt;
					navigator.clipboard.writeText(document.getElementById(element.dataset.target.split(&amp;quot;,&amp;quot;)[0])[element.dataset.target.split(&amp;quot;,&amp;quot;)[1]]);&lt;br /&gt;
					element.value=&amp;quot;コピーしました&amp;quot;;&lt;br /&gt;
					element.disabled=true;&lt;br /&gt;
					setTimeout(function(){&lt;br /&gt;
						element.value=originValue;&lt;br /&gt;
						element.disabled=false;&lt;br /&gt;
					},1000);&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				element.remove();&lt;br /&gt;
			}&lt;br /&gt;
		}):&amp;quot;&amp;quot;;&lt;br /&gt;
		document.querySelector(&amp;quot;.colorTestMenu-reset&amp;quot;)?document.querySelectorAll(&amp;quot;.colorTestMenu-reset&amp;quot;).forEach(function(reset){&lt;br /&gt;
			reset.onclick=function(){&lt;br /&gt;
				document.querySelectorAll(&amp;quot;#colorTestMenu input[data-value]&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.value=element.dataset.value;&lt;br /&gt;
					inputAreaFnc();&lt;br /&gt;
				});&lt;br /&gt;
			};&lt;br /&gt;
		}):&amp;quot;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	//upload-icon&lt;br /&gt;
	if(mw.config.values.wgUserName){&lt;br /&gt;
		let uploadIcon=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
		uploadIcon.classList.add(&amp;quot;wds-button&amp;quot;);&lt;br /&gt;
		uploadIcon.classList.add(&amp;quot;wds-is-secondary&amp;quot;);&lt;br /&gt;
		uploadIcon.href=&amp;quot;https://japolandball.miraheze.org/wiki/Special:Upload&amp;quot;;&lt;br /&gt;
		uploadIcon.innerHTML=&amp;quot;&amp;lt;img src=&#039;https://japolandball.miraheze.org/wiki/Special:FilePath/Upload-icon.svg&#039; width=&#039;22&#039; height=&#039;22&#039; class=&#039;wds-icon-small&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
		uploadIcon.title=&amp;quot;ファイルをアップロード&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;createpage&amp;quot;).after(uploadIcon);&lt;br /&gt;
	}&lt;br /&gt;
	//Template:CF&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cf&amp;quot;)){&lt;br /&gt;
		let myStorage=localStorage.getItem(&amp;quot;template-cf&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
		let visible=true;&lt;br /&gt;
		for(let data of myStorage.split(&amp;quot;\n&amp;quot;)){&lt;br /&gt;
			if(mw.config.values.wgPageName==data){&lt;br /&gt;
				visible=false;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(visible){&lt;br /&gt;
			let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			mydiv.classList.add(&amp;quot;template-confirm&amp;quot;);&lt;br /&gt;
			mydiv.id=&amp;quot;template-cf-confirmbox&amp;quot;;&lt;br /&gt;
			mydiv.innerHTML=`&amp;lt;div class=&amp;quot;template-confirm-main&amp;quot; id=&amp;quot;template-cf-confirmbox-main&amp;quot; style=&amp;quot;background:${document.getElementById(&amp;quot;template-cf-bgcolor&amp;quot;).innerHTML};color:${document.getElementById(&amp;quot;template-cf-color&amp;quot;).innerHTML};&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:1.2em;font-weight:bold;display:inline-block;margin-bottom:0.5em;&amp;quot;&amp;gt;${document.getElementById(&amp;quot;template-cf-title&amp;quot;).innerHTML}&amp;lt;/span&amp;gt;&lt;br /&gt;
			&amp;lt;br&amp;gt;&lt;br /&gt;
			${document.getElementById(&amp;quot;template-cf-message&amp;quot;).innerHTML}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;label style=&amp;quot;font-size:0.9em;position:relative;top:1em;&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;template-cf-checkbox&amp;quot; style=&amp;quot;width:0.9em;height:0.9em;&amp;quot;&amp;gt;次回からは表示しない&amp;lt;/label&amp;gt;&lt;br /&gt;
			&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;a href=&amp;quot;/wiki/Template:CF/doc&amp;quot; style=&amp;quot;--theme-link-color:#003399;font-size:0.8em;position:relative;top:2em;&amp;quot;&amp;gt;詳細&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;div style=&amp;quot;text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;いいえ&amp;quot; id=&amp;quot;template-cf-cancel-btn&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;はい&amp;quot; id=&amp;quot;template-cf-ok-btn&amp;quot; style=&amp;quot;background:var(--theme-main-bg-color);color:white;border-color:var(--theme-main-bg-color);&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;`;&lt;br /&gt;
			document.body.appendChild(mydiv);&lt;br /&gt;
			window.scroll(0,0);&lt;br /&gt;
			document.body.style.overflow=&amp;quot;hidden&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;mw-content&amp;quot;).style.filter=&amp;quot;blur(5px)&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-confirmbox-main&amp;quot;).style.top=((window.innerHeight-document.getElementById(&amp;quot;template-cf-confirmbox-main&amp;quot;).offsetHeight)/2)+&amp;quot;px&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-cancel-btn&amp;quot;).onclick=function(){&lt;br /&gt;
				document.getElementById(&amp;quot;template-cf-checkbox&amp;quot;).checked=false;&lt;br /&gt;
				document.querySelector(&amp;quot;#template-cf-return a&amp;quot;).click();&lt;br /&gt;
			};&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-ok-btn&amp;quot;).onclick=function(){&lt;br /&gt;
				document.body.style.overflow=&amp;quot;auto&amp;quot;;&lt;br /&gt;
				document.getElementById(&amp;quot;mw-content&amp;quot;).style.filter=&amp;quot;&amp;quot;;&lt;br /&gt;
				if(document.getElementById(&amp;quot;template-cf-checkbox&amp;quot;).checked){&lt;br /&gt;
					myStorage+=mw.config.values.wgPageName+&amp;quot;\n&amp;quot;;&lt;br /&gt;
					localStorage.setItem(&amp;quot;template-cf&amp;quot;,myStorage);&lt;br /&gt;
				}&lt;br /&gt;
				mydiv.remove();	&lt;br /&gt;
			};&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-ok-btn&amp;quot;).focus();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cf-form&amp;quot;)){&lt;br /&gt;
		let myStorage=localStorage.getItem(&amp;quot;template-cf&amp;quot;);&lt;br /&gt;
		let textarea=document.createElement(&amp;quot;textarea&amp;quot;);&lt;br /&gt;
		textarea.value=myStorage;&lt;br /&gt;
		textarea.oninput=function(){&lt;br /&gt;
			localStorage.setItem(&amp;quot;template-cf&amp;quot;,textarea.value);&lt;br /&gt;
		};&lt;br /&gt;
		textarea.onblur=function(){&lt;br /&gt;
			if(textarea.value.split(&amp;quot;&amp;quot;)[textarea.value.length-1]!=&amp;quot;\n&amp;quot;&amp;amp;&amp;amp;textarea.value!=&amp;quot;&amp;quot;){&lt;br /&gt;
				textarea.value+=&amp;quot;\n&amp;quot;;&lt;br /&gt;
				localStorage.setItem(&amp;quot;template-cf&amp;quot;,textarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		textarea.style.cssText=&amp;quot;width:90%;height:300px;font-size:1em;&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-textarea&amp;quot;).after(textarea);&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-textarea&amp;quot;).remove();&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-reload&amp;quot;).onclick=function(e){&lt;br /&gt;
			if(!e.target.classList.contains(&amp;quot;clicked&amp;quot;)){&lt;br /&gt;
				let loadmsg=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
				textarea.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
				loadmsg.innerHTML=&amp;quot;読み込み中...&amp;quot;;&lt;br /&gt;
				textarea.after(loadmsg);&lt;br /&gt;
				e.target.classList.add(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				setTimeout(function(){&lt;br /&gt;
					textarea.value=localStorage.getItem(&amp;quot;template-cf&amp;quot;);&lt;br /&gt;
					textarea.style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
					loadmsg.remove();&lt;br /&gt;
					e.target.classList.remove(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				},1000);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	/*template-imageLoad*/&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-imageLoad&amp;quot;)){&lt;br /&gt;
		document.querySelectorAll(&amp;quot;img&amp;quot;).forEach(function(element){&lt;br /&gt;
			element.src?element.src=element.src:&amp;quot;&amp;quot;;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	//Button Tag&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-button&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-button&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mybtn=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mybtn.type=&amp;quot;button&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		mybtn.value=myZobj.value||&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mybtn.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mybtn.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		mybtn.style.height=myZobj.height||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mybtn.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mybtn.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mybtn.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mybtn);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	//File Tag&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-file&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-file&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mybtn=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mybtn.type=&amp;quot;file&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mybtn.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mybtn.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mybtn.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mybtn.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mybtn.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mybtn);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	//Extension Conversion&lt;br /&gt;
	if(document.getElementById(&amp;quot;page-ec&amp;quot;)){&lt;br /&gt;
	function topngFnc(){&lt;br /&gt;
			let myfile=document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;);&lt;br /&gt;
			let r=new FileReader();&lt;br /&gt;
			r.readAsDataURL(myfile.files[0]);&lt;br /&gt;
			r.onload=function(){&lt;br /&gt;
				let myimg=new Image();&lt;br /&gt;
				myimg.src=r.result;&lt;br /&gt;
				myimg.onload=function(){&lt;br /&gt;
					let mycanvas=document.createElement(&amp;quot;canvas&amp;quot;);&lt;br /&gt;
					let myctx=mycanvas.getContext(&amp;quot;2d&amp;quot;);&lt;br /&gt;
					mycanvas.height=myimg.height;&lt;br /&gt;
					mycanvas.width=myimg.width;&lt;br /&gt;
					myctx.drawImage(myimg,0,0,mycanvas.width,mycanvas.height);&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).value=&amp;quot;ダウンロード&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=function(){&lt;br /&gt;
						let mya=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
						mya.href=mycanvas.toDataURL();&lt;br /&gt;
						mya.download=(document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value||&amp;quot;download&amp;quot;).split(&amp;quot;.&amp;quot;)[0]+&amp;quot;.png&amp;quot;;&lt;br /&gt;
						mya.click();&lt;br /&gt;
					};&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).onclick=function(){&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).value=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).value=&amp;quot;変換&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=topngFnc;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-data&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-file-name&amp;quot;).innerHTML=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					};&lt;br /&gt;
				};&lt;br /&gt;
				myimg.onerror=function(){&lt;br /&gt;
					window.alert(&amp;quot;エラーが発生しました。&amp;quot;);	&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		}&lt;br /&gt;
		document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).onchange=function(e){&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-file-name&amp;quot;).innerHTML=e.target.files[0].name;&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value=e.target.files[0].name.split(&amp;quot;.&amp;quot;)[0];&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-data&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=topngFnc;&lt;br /&gt;
	}&lt;br /&gt;
	let myobj={};&lt;br /&gt;
	document.querySelector(&amp;quot;span.sitestyle&amp;quot;)?document.querySelector(&amp;quot;span.sitestyle&amp;quot;).innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
		myobj[mypp.split(&amp;quot;:&amp;quot;)[0]]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;mw-content&amp;quot;).style.background=myobj.bgcolor?(&amp;quot;color-mix(in srgb, &amp;quot;+myobj.bgcolor+&amp;quot; var(--theme-mode-opacity), rgba(var(--theme-page-color--rgb),0.9))&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.maincolor?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-main-bg-color&amp;quot;,myobj.maincolor):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.link?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-link-color&amp;quot;,myobj.link):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.linkhover?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-link-color--hover&amp;quot;,myobj.linkhover):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.cosmos-header&amp;quot;).style.background=myobj.headerbg||&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.cosmos-header&amp;quot;).style.color=myobj.headercolor||&amp;quot;&amp;quot;;&lt;br /&gt;
})();&lt;br /&gt;
//jsload-delete&lt;br /&gt;
(function(){&lt;br /&gt;
	document.querySelector(&amp;quot;.jsload-delete&amp;quot;)?document.querySelectorAll(&amp;quot;.jsload-delete&amp;quot;).forEach(function(element){&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=MediaWiki:Cosmos.js&amp;diff=153</id>
		<title>MediaWiki:Cosmos.js</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=MediaWiki:Cosmos.js&amp;diff=153"/>
		<updated>2026-07-20T08:48:57Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;$(function() {&lt;br /&gt;
	window.PBWTools = {&lt;br /&gt;
		collapseToolbar: function () {&lt;br /&gt;
			var toolbarCollapsed = mw.storage.get(&amp;quot;pbw-toolbar-collapsed&amp;quot;) !== &amp;quot;true&amp;quot; ? false : true;&lt;br /&gt;
			$(&amp;quot;&amp;lt;div&amp;gt;&amp;quot;).addClass(&amp;quot;cosmos-toolbar-collapse-button&amp;quot;).appendTo(&amp;quot;#cosmos-toolbar&amp;quot;);&lt;br /&gt;
			$(&amp;quot;.cosmos-toolbar-collapse-button&amp;quot;).click(function(target) {&lt;br /&gt;
				$(&amp;quot;#cosmos-toolbar&amp;quot;).toggleClass(&amp;quot;cosmos-toolbar-collapsed&amp;quot;);&lt;br /&gt;
				mw.storage.set(&amp;quot;pbw-toolbar-collapsed&amp;quot;, !toolbarCollapsed);&lt;br /&gt;
			});&lt;br /&gt;
			if (toolbarCollapsed) {&lt;br /&gt;
				$(&amp;quot;#cosmos-toolbar&amp;quot;).addClass(&amp;quot;cosmos-toolbar-collapsed&amp;quot;);	&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		init: function () {&lt;br /&gt;
			mw.loader.using(&amp;quot;mediawiki.storage&amp;quot;).then(this.collapseToolbar);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
	window.PBWTools.init();&lt;br /&gt;
});&lt;br /&gt;
/*font tag for HTML5*/&lt;br /&gt;
document.querySelectorAll(&amp;quot;font&amp;quot;).forEach(function(element){&lt;br /&gt;
	element.style.color=element.getAttribute(&amp;quot;color&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
	element.style.fontFamily=element.getAttribute(&amp;quot;face&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
	element.style.fontSize=[&amp;quot;x-small&amp;quot;,&amp;quot;small&amp;quot;,&amp;quot;medium&amp;quot;,&amp;quot;large&amp;quot;,&amp;quot;x-large&amp;quot;,&amp;quot;xx-large&amp;quot;,&amp;quot;xxx-large&amp;quot;][Number(element.getAttribute(&amp;quot;size&amp;quot;))-1||2]||&amp;quot;&amp;quot;;&lt;br /&gt;
});&lt;br /&gt;
/*cosmos-banner*/&lt;br /&gt;
(function(){&lt;br /&gt;
	let myHomeLink=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
	myHomeLink.innerHTML=`&amp;lt;a href=&amp;quot;/&amp;quot;&amp;gt;ポリティボールwiki&amp;lt;/a&amp;gt;`;&lt;br /&gt;
	myHomeLink.id=&amp;quot;mw-banner-home&amp;quot;;&lt;br /&gt;
	myHomeLink.classList.add(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	document.getElementById(&amp;quot;cosmos-banner-content&amp;quot;).prepend(myHomeLink);&lt;br /&gt;
	if(window.innerWidth&amp;gt;850&amp;amp;&amp;amp;window.scrollY&amp;lt;60){&lt;br /&gt;
		document.getElementById(&amp;quot;cosmos-banner&amp;quot;).classList.add(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
		myHomeLink.classList.remove(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
})();&lt;br /&gt;
window.onscroll=function(){&lt;br /&gt;
let cosmosBanner=document.getElementById(&amp;quot;cosmos-banner&amp;quot;);&lt;br /&gt;
if(window.scrollY&amp;gt;60){&lt;br /&gt;
	if(document.querySelector(&amp;quot;html&amp;quot;).classList.contains(&amp;quot;client-darkmode&amp;quot;)){&lt;br /&gt;
		cosmosBanner.style.background=&amp;quot;rgba(20,20,20,0.7)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	else{&lt;br /&gt;
		cosmosBanner.style.background=&amp;quot;rgba(20,20,20,0.75)&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	cosmosBanner.style.boxShadow=&amp;quot;0 2px 5px rgba(0, 0, 0, .4)&amp;quot;;&lt;br /&gt;
	cosmosBanner.classList.remove(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
	document.getElementById(&amp;quot;mw-banner-home&amp;quot;).classList.add(&amp;quot;visible&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
else{&lt;br /&gt;
	cosmosBanner.style.background=&amp;quot;&amp;quot;;&lt;br /&gt;
	cosmosBanner.style.boxShadow=&amp;quot;&amp;quot;;&lt;br /&gt;
	if(window.innerWidth&amp;gt;850){&lt;br /&gt;
		cosmosBanner.classList.add(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
		document.getElementById(&amp;quot;mw-banner-home&amp;quot;).classList.remove(&amp;quot;visible&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	else{&lt;br /&gt;
		cosmosBanner.classList.remove(&amp;quot;banner-position-top&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
document.body.style.setProperty(&amp;quot;--theme-body-background-position&amp;quot;,&amp;quot;center &amp;quot;+(window.scrollY/(document.body.scrollHeight-window.innerHeight)*((1080-window.innerHeight)/(1080/window.innerHeight*3)))+&amp;quot;px&amp;quot;);&lt;br /&gt;
};&lt;br /&gt;
setInterval(function(){&lt;br /&gt;
	/*spoiler*/&lt;br /&gt;
	document.querySelectorAll(&amp;quot;.mw-spoiler&amp;quot;).forEach(function(element){&lt;br /&gt;
		element.title=&amp;quot;クリックで表示&amp;quot;;&lt;br /&gt;
		element.onclick=function(e){&lt;br /&gt;
		if(element.classList.contains(&amp;quot;mw-spoiler&amp;quot;)){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
		}&lt;br /&gt;
		element.classList.remove(&amp;quot;mw-spoiler&amp;quot;);&lt;br /&gt;
		element.classList.add(&amp;quot;mw-spoiler-visible&amp;quot;);&lt;br /&gt;
		element.title=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
	});&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;talk-comment-mode--cs&amp;quot;)){&lt;br /&gt;
			document.querySelectorAll(&amp;quot;span[data-mw-comment-end]:not(h2 span):not(.splited)&amp;quot;).forEach(function(element){&lt;br /&gt;
			element.after(document.createElement(&amp;quot;hr&amp;quot;));&lt;br /&gt;
			element.classList.add(&amp;quot;splited&amp;quot;);&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	//Reply-Link&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)){&lt;br /&gt;
			document.querySelectorAll(&amp;quot;.ext-discussiontools-init-replylink-buttons:not(.added):not(.ext-discussiontools-ui-replyWidget-preview .ext-discussiontools-init-replylink-buttons)&amp;quot;).forEach(function(element){&lt;br /&gt;
			let myLink=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
			myLink.innerHTML=&amp;quot;返信リンクを追加&amp;quot;;&lt;br /&gt;
			myLink.style.cssText=&amp;quot;margin-left:1em;display:none;&amp;quot;;&lt;br /&gt;
			element.after(myLink);&lt;br /&gt;
			element.classList.add(&amp;quot;added&amp;quot;);&lt;br /&gt;
			setInterval(function(){&lt;br /&gt;
				if(element.classList.contains(&amp;quot;ext-discussiontools-init-replylink-active&amp;quot;)){&lt;br /&gt;
					myLink.style.fontWeight=&amp;quot;bold&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myLink.style.fontWeight=&amp;quot;&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				if(document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;)){&lt;br /&gt;
					myLink.style.display=&amp;quot;inline&amp;quot;;&lt;br /&gt;
					if(element.classList.contains(&amp;quot;ext-discussiontools-init-replylink-active&amp;quot;)&amp;amp;&amp;amp;!element.classList.contains(&amp;quot;clicked&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;reply-button-click&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked){&lt;br /&gt;
						setTimeout(function(){&lt;br /&gt;
							myLink.click();&lt;br /&gt;
						},500);&lt;br /&gt;
						element.classList.add(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myLink.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					element.classList.remove(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				}&lt;br /&gt;
			},10);&lt;br /&gt;
			myLink.addEventListener(&amp;quot;click&amp;quot;,function(){&lt;br /&gt;
				document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).focus();&lt;br /&gt;
				setTimeout(function(){&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode span&amp;quot;).innerHTML=&amp;quot;[[{{FULLPAGENAME}}#&amp;quot;+element.getAttribute(&amp;quot;data-mw-thread-id&amp;quot;)+&amp;quot;|&amp;gt;&amp;gt;返信先]]\n\n&amp;quot;+document.querySelector(&amp;quot;.ve-ce-attachedRootNode span&amp;quot;).innerHTML;&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).blur();&lt;br /&gt;
					document.querySelector(&amp;quot;.ve-ce-attachedRootNode&amp;quot;).focus();&lt;br /&gt;
				},1000);&lt;br /&gt;
			});&lt;br /&gt;
		});&lt;br /&gt;
		document.querySelectorAll(&amp;quot;a:not(.added)&amp;quot;).forEach(function(element){&lt;br /&gt;
			if(decodeURI(element.href).indexOf(&amp;quot;#c-&amp;quot;)!=-1&amp;amp;&amp;amp;element.classList.contains(&amp;quot;mw-selflink-fragment&amp;quot;)){&lt;br /&gt;
					let inputNode=document.getElementById(decodeURI(element.href).split(&amp;quot;#&amp;quot;)[1]).parentElement.cloneNode(true);&lt;br /&gt;
					element.title=inputNode.textContent;&lt;br /&gt;
					element.classList.add(&amp;quot;added&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
},100);&lt;br /&gt;
/*Snow Flake Fnc&lt;br /&gt;
(function(){&lt;br /&gt;
	for(var yukiLength=0;yukiLength&amp;lt;(Math.round(document.body.offsetHeight/40)&amp;lt;500?Math.round(document.body.offsetHeight/40):500);yukiLength++){&lt;br /&gt;
	let myimg=document.createElement(&amp;quot;img&amp;quot;);&lt;br /&gt;
	myimg.src=&amp;quot;https://japolandballfanon.miraheze.org/wiki/Special:FilePath/Pagesnowflake.svg&amp;quot;;&lt;br /&gt;
	myimg.width=&amp;quot;40&amp;quot;;&lt;br /&gt;
	myimg.height=&amp;quot;40&amp;quot;;&lt;br /&gt;
	myimg.style.cssText=&amp;quot;position:absolute;&amp;quot;;&lt;br /&gt;
	myimg.style.top=(Math.floor(Math.random() *(document.body.offsetHeight-40))+1)+&amp;quot;px&amp;quot;;&lt;br /&gt;
	myimg.style.left=(Math.floor(Math.random() *(document.body.offsetWidth-40))+1)+&amp;quot;px&amp;quot;;&lt;br /&gt;
	document.body.style.background=window.getComputedStyle(document.getElementById(&amp;quot;mw-content&amp;quot;)).background;&lt;br /&gt;
	document.body.appendChild(myimg);&lt;br /&gt;
	myimg.onclick=function(){&lt;br /&gt;
	myimg.remove();	&lt;br /&gt;
	};&lt;br /&gt;
	}&lt;br /&gt;
})();&lt;br /&gt;
*/&lt;br /&gt;
function addScript(src){&lt;br /&gt;
	let scr=document.createElement(&amp;quot;script&amp;quot;);&lt;br /&gt;
	scr.src=&amp;quot;https://japolandball.miraheze.org/wiki/MediaWiki:&amp;quot;+src+&amp;quot;.js?action=raw&amp;amp;ctype=text/javascript&amp;quot;;&lt;br /&gt;
	document.body.appendChild(scr);&lt;br /&gt;
}&lt;br /&gt;
function importItem(href,rel,element=&amp;quot;head&amp;quot;){&lt;br /&gt;
	let link=document.createElement(&amp;quot;link&amp;quot;);&lt;br /&gt;
	link.href=href;&lt;br /&gt;
	link.rel=rel;&lt;br /&gt;
	document.querySelector(element).appendChild(link);&lt;br /&gt;
}&lt;br /&gt;
/*iconMaker*/&lt;br /&gt;
addScript(&amp;quot;IconMaker&amp;quot;);&lt;br /&gt;
/*AutoFill*/&lt;br /&gt;
addScript(&amp;quot;AutoFill&amp;quot;);&lt;br /&gt;
/*AbuseFilter*/&lt;br /&gt;
addScript(&amp;quot;AbuseFilter&amp;quot;);&lt;br /&gt;
/*limited design*/&lt;br /&gt;
addScript(&amp;quot;LimitedDesign&amp;quot;);&lt;br /&gt;
/*ArticleTemplate*/&lt;br /&gt;
addScript(&amp;quot;ArticleTemplate&amp;quot;);&lt;br /&gt;
/*UserColor*/&lt;br /&gt;
addScript(&amp;quot;LinkColor&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
(function(){&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-checkbox&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-checkbox&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let checkbox=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		checkbox.type=&amp;quot;checkbox&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		myZobj.boxsize?checkbox.style.width=myZobj.boxsize:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.boxsize?checkbox.style.height=myZobj.boxsize:&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				checkbox.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		myZobj.id?checkbox.id=myZobj.id:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.value?checkbox.value=myZobj.value:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.checked==&amp;quot;true&amp;quot;?checkbox.checked=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?checkbox.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.label){&lt;br /&gt;
			let mylabel=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
			mylabel.style.userSelect=&amp;quot;none&amp;quot;;&lt;br /&gt;
			myZobj.labelfontsize?mylabel.style.fontSize=myZobj.labelfontsize:&amp;quot;&amp;quot;;&lt;br /&gt;
			if(myZobj.labelposition&amp;amp;&amp;amp;myZobj.labelposition==&amp;quot;after&amp;quot;){&lt;br /&gt;
				mylabel.innerHTML=myZobj.label;&lt;br /&gt;
				mylabel.appendChild(checkbox);&lt;br /&gt;
				mylabel.innerHTML+=`&amp;lt;br&amp;gt;&amp;lt;span style=&amp;quot;font-size:${myZobj.detailfontsize||&amp;quot;0.8em&amp;quot;};&amp;quot;&amp;gt;${myZobj.detail||&amp;quot;&amp;quot;}&amp;lt;/span&amp;gt;`;&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				mylabel.appendChild(checkbox);&lt;br /&gt;
				mylabel.innerHTML+=myZobj.label+&amp;quot;&amp;lt;br&amp;gt;&amp;quot;+(myZobj.detail?(`&amp;lt;span style=&amp;quot;margin-left:${myZobj.boxsize||&amp;quot;1em&amp;quot;};&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`):&amp;quot;&amp;quot;)+`&amp;lt;span style=&amp;quot;font-size:${myZobj.detailfontsize||&amp;quot;0.8em&amp;quot;};&amp;quot;&amp;gt;${myZobj.detail||&amp;quot;&amp;quot;}&amp;lt;/span&amp;gt;`;&lt;br /&gt;
			}&lt;br /&gt;
			element.after(mylabel);&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			element.after(checkbox);&lt;br /&gt;
		}&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-text&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-text&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mytextbox=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mytextbox.type=&amp;quot;text&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		mytextbox.value=myZobj.value||&amp;quot;&amp;quot;;&lt;br /&gt;
		mytextbox.placeholder=myZobj.placeholder||&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mytextbox.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mytextbox.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		mytextbox.style.height=myZobj.height||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mytextbox.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mytextbox.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mytextbox.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mytextbox);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;mw-upload-polandball-rule-checkbox&amp;quot;)?document.getElementById(&amp;quot;mw-upload-polandball-rule-checkbox&amp;quot;).onchange=function(e){&lt;br /&gt;
		if(e.target.checked){&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
			document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=function(event){&lt;br /&gt;
				event.preventDefault();&lt;br /&gt;
				let isCheckboxChecked=true;&lt;br /&gt;
				for(let myElementLength=0;myElementLength&amp;lt;document.querySelectorAll(&amp;quot;.mw-upload-polandball-rule-confirm-checkbox&amp;quot;).length;myElementLength++){&lt;br /&gt;
					if(document.querySelectorAll(&amp;quot;.mw-upload-polandball-rule-confirm-checkbox&amp;quot;)[myElementLength].checked==false){&lt;br /&gt;
						isCheckboxChecked=false;&lt;br /&gt;
						break;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				if(isCheckboxChecked){&lt;br /&gt;
					document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=null;&lt;br /&gt;
					document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).click();&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					window.alert(&amp;quot;ポーランドボールのルールに則ったイラストをアップロードしてください。&amp;quot;);&lt;br /&gt;
					location.hash=&amp;quot;&amp;quot;;&lt;br /&gt;
					location.hash=&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
			};&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-polandball-rule-fieldset&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
			document.querySelector(&amp;quot;input[name=&#039;wpUpload&#039;]&amp;quot;).onclick=null;&lt;br /&gt;
		}&lt;br /&gt;
	}:&amp;quot;&amp;quot;;&lt;br /&gt;
	if(document.getElementById(&amp;quot;wpDestFile&amp;quot;)&amp;amp;&amp;amp;document.getElementById(&amp;quot;wpDestFile&amp;quot;).value!=&amp;quot;&amp;quot;){&lt;br /&gt;
		document.getElementById(&amp;quot;mw-upload-polandball-rule-parent-div&amp;quot;).innerHTML=&amp;quot;&amp;lt;span style=&#039;font-size:1.2em;&#039;&amp;gt;※回答済み&amp;lt;/span&amp;gt;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	document.querySelector(&amp;quot;.filehistory,.mw-blocklist&amp;quot;)?document.querySelectorAll(&amp;quot;.filehistory,.mw-blocklist&amp;quot;).forEach(function(element){&lt;br /&gt;
		let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		mydiv.style.cssText=&amp;quot;max-width:100%;overflow-x:auto;&amp;quot;;&lt;br /&gt;
		mydiv.appendChild(element.cloneNode(true));&lt;br /&gt;
		element.after(mydiv);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	if(mw.config.values.wgAction==&amp;quot;edit&amp;quot;||mw.config.values.wgAction==&amp;quot;submit&amp;quot;){&lt;br /&gt;
		let mylabel=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		mylabel.style.cssText=&amp;quot;font-size:1.2em;font-weight:bold;&amp;quot;;&lt;br /&gt;
		mylabel.innerHTML=`&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;mw-edit-rule-checker&amp;quot; style=&amp;quot;width:1.5em;height:1.5em;margin-right:1.5em&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;Project:ルール&amp;quot; style=&amp;quot;color:var(--theme-link-color) !important;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;ルール&amp;lt;/a&amp;gt;をよく読み、これに遵守します。`;&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(document.createElement(&amp;quot;br&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(document.createElement(&amp;quot;br&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;editpage-copywarn&amp;quot;).after(mylabel);&lt;br /&gt;
		document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			if(document.getElementById(&amp;quot;mw-edit-rule-checker&amp;quot;).checked){&lt;br /&gt;
				document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=null;&lt;br /&gt;
				document.getElementById(&amp;quot;wpSave&amp;quot;).click();&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				window.alert(&amp;quot;wikiのルールに則った編集を行ってください。過激な発言等は削除されます。&amp;quot;);&lt;br /&gt;
				if(window.confirm(&amp;quot;ルールに同意して保存しますか？\n編集画面に戻る際はキャンセルを選択してください。&amp;quot;)){&lt;br /&gt;
					document.getElementById(&amp;quot;mw-edit-rule-checker&amp;quot;).checked=true;&lt;br /&gt;
					document.getElementById(&amp;quot;wpSave&amp;quot;).onclick=null;&lt;br /&gt;
					document.getElementById(&amp;quot;wpSave&amp;quot;).click();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cursor&amp;quot;)){&lt;br /&gt;
		document.querySelector(&amp;quot;html&amp;quot;).style.cssText=&amp;quot;--theme-page-cursor:url(/wiki/Special:FilePath/&amp;quot;+document.getElementById(&amp;quot;template-cursor-auto&amp;quot;).innerHTML+&amp;quot;),auto !important;--theme-page-cursor-link:url(/wiki/Special:FilePath/&amp;quot;+document.getElementById(&amp;quot;template-cursor-pointer&amp;quot;).innerHTML+&amp;quot;),pointer !important;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;mw-upload-file-uploader&amp;quot;)){&lt;br /&gt;
		let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		let myspan=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		mydiv.id=&amp;quot;mw-upload-file-uploader-area&amp;quot;;&lt;br /&gt;
		myspan.id=&amp;quot;mw-upload-file-uploader-text&amp;quot;;&lt;br /&gt;
		myspan.innerHTML=&amp;quot;ファイルをここにドロップ&amp;quot;;&lt;br /&gt;
		mydiv.appendChild(myspan);&lt;br /&gt;
		document.body.appendChild(mydiv);&lt;br /&gt;
		document.getElementById(&amp;quot;mw-upload-file-uploader&amp;quot;).remove();&lt;br /&gt;
		window.ondragover=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.body.onmousemove=function(){&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.body.ondrop=function(e){&lt;br /&gt;
			e.preventDefault();&lt;br /&gt;
			document.querySelector(&amp;quot;input[type=&#039;file&#039;]&amp;quot;).files=e.dataTransfer.files;&lt;br /&gt;
			document.getElementById(&amp;quot;wpDestFile&amp;quot;).value==&amp;quot;&amp;quot;?document.getElementById(&amp;quot;wpDestFile&amp;quot;).value=document.querySelector(&amp;quot;input[type=&#039;file&#039;]&amp;quot;).files[0].name:&amp;quot;&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;mw-upload-file-uploader-area&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	//Template:LCS&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-lcs&amp;quot;)||mw.config.values.wgNamespaceNumber==1){&lt;br /&gt;
		document.body.classList.add(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	//Template:DSC&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-dsc&amp;quot;)){&lt;br /&gt;
		document.body.classList.remove(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
	//Talk Radio Button&lt;br /&gt;
	if(document.getElementById(&amp;quot;top-notice-ns&amp;quot;)&amp;amp;&amp;amp;document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)){&lt;br /&gt;
		let myForm=document.createElement(&amp;quot;form&amp;quot;);&lt;br /&gt;
		let myLabelDefault=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		let myLabelCS=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		let myLabelReply=document.createElement(&amp;quot;label&amp;quot;);&lt;br /&gt;
		myLabelDefault.innerHTML=`&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;talkCommentMode&amp;quot; id=&amp;quot;talk-comment-mode--default&amp;quot; value=&amp;quot;default&amp;quot;&amp;gt;デフォルトモード`;&lt;br /&gt;
		myLabelDefault.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myLabelCS.innerHTML=`&amp;lt;input type=&amp;quot;radio&amp;quot; name=&amp;quot;talkCommentMode&amp;quot; id=&amp;quot;talk-comment-mode--cs&amp;quot; value=&amp;quot;cs&amp;quot;&amp;gt;疑似CS`;&lt;br /&gt;
		myLabelCS.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myLabelReply.innerHTML=`&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;reply-button-click&amp;quot;&amp;gt;&amp;lt;a&amp;gt;&amp;gt;&amp;gt;返信先&amp;lt;/a&amp;gt;をデフォルトで入力`;&lt;br /&gt;
		myLabelReply.style.cssText=&amp;quot;margin-right:1em;&amp;quot;;&lt;br /&gt;
		myForm.id=&amp;quot;talk-comment-form&amp;quot;;&lt;br /&gt;
		myForm.style.cssText=&amp;quot;border-bottom:1px solid var(--theme-text-color);font-size:1.1em;margin-bottom:0.8em;&amp;quot;;&lt;br /&gt;
		myForm.appendChild(myLabelDefault);&lt;br /&gt;
		myForm.appendChild(myLabelCS);&lt;br /&gt;
		myForm.appendChild(myLabelReply);&lt;br /&gt;
		myForm.innerHTML+=`&amp;lt;br&amp;gt;&amp;lt;label style=&amp;quot;margin-right:1em;&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;template-scroll-button-visibility&amp;quot;&amp;gt;スクロールボタンを表示&amp;lt;/label&amp;gt;`;&lt;br /&gt;
		document.getElementById(&amp;quot;top-notice-ns&amp;quot;).after(myForm);&lt;br /&gt;
		//talk-comment-mode&lt;br /&gt;
		if(document.body.classList.contains(&amp;quot;talk-comment-mode--cs&amp;quot;)){&lt;br /&gt;
			document.getElementById(&amp;quot;talk-comment-mode--cs&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			document.getElementById(&amp;quot;talk-comment-mode--default&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		//reply-button-click&lt;br /&gt;
		if(localStorage.getItem(&amp;quot;reply-button-click&amp;quot;)){&lt;br /&gt;
			if(localStorage.getItem(&amp;quot;reply-button-click&amp;quot;)==&amp;quot;yes&amp;quot;){&lt;br /&gt;
				document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked=true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;yes&amp;quot;);&lt;br /&gt;
			document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		//scroll-button-visibility&lt;br /&gt;
		if(localStorage.getItem(&amp;quot;scroll-button-visibility&amp;quot;)){&lt;br /&gt;
			if(localStorage.getItem(&amp;quot;scroll-button-visibility&amp;quot;)==&amp;quot;visible&amp;quot;){&lt;br /&gt;
				document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked=true;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		else{&lt;br /&gt;
			localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;visible&amp;quot;);&lt;br /&gt;
			document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked=true;&lt;br /&gt;
		}&lt;br /&gt;
		myForm.oninput=function(){&lt;br /&gt;
			if(myForm.talkCommentMode.value==&amp;quot;cs&amp;quot;){&lt;br /&gt;
				document.body.classList.add(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				document.body.classList.remove(&amp;quot;talk-comment-mode--cs&amp;quot;);&lt;br /&gt;
				document.querySelectorAll(&amp;quot;span.splited+hr&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.remove();&lt;br /&gt;
				});&lt;br /&gt;
				document.querySelectorAll(&amp;quot;span.splited&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.classList.remove(&amp;quot;splited&amp;quot;);&lt;br /&gt;
				});&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;reply-button-click&amp;quot;).onchange=function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;reply-button-click&amp;quot;).checked){&lt;br /&gt;
				localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;yes&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				localStorage.setItem(&amp;quot;reply-button-click&amp;quot;,&amp;quot;no&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).onchange=function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked){&lt;br /&gt;
				localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;visible&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				localStorage.setItem(&amp;quot;scroll-button-visibility&amp;quot;,&amp;quot;hidden&amp;quot;);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	//Scroll Button&lt;br /&gt;
	if(document.body.classList.contains(&amp;quot;ns-talk&amp;quot;)||document.getElementById(&amp;quot;template-scroll-button&amp;quot;)){&lt;br /&gt;
		let myScrollUpBtn=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		let myScrollDownBtn=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		myScrollUpBtn.classList.add(&amp;quot;template-scroll-button&amp;quot;);&lt;br /&gt;
		myScrollDownBtn.classList.add(&amp;quot;template-scroll-button&amp;quot;);&lt;br /&gt;
		myScrollUpBtn.style.bottom=&amp;quot;9em&amp;quot;;&lt;br /&gt;
		myScrollDownBtn.style.bottom=&amp;quot;5em&amp;quot;;&lt;br /&gt;
		myScrollUpBtn.innerHTML=`&amp;lt;span class=&amp;quot;template-scroll-button-mark template-scroll-button-mark-up&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`;&lt;br /&gt;
		myScrollDownBtn.innerHTML=`&amp;lt;span class=&amp;quot;template-scroll-button-mark template-scroll-button-mark-down&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;`;&lt;br /&gt;
		document.body.appendChild(myScrollUpBtn);&lt;br /&gt;
		document.body.appendChild(myScrollDownBtn);&lt;br /&gt;
		myScrollUpBtn.onclick=function(){&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;smooth&amp;quot;;&lt;br /&gt;
			window.scroll(0,0);&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		myScrollDownBtn.onclick=function(){&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;smooth&amp;quot;;&lt;br /&gt;
			window.scroll(0,document.body.offsetHeight);&lt;br /&gt;
			document.querySelector(&amp;quot;html&amp;quot;).style.scrollBehavior=&amp;quot;&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		setInterval(function(){&lt;br /&gt;
			if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;)){&lt;br /&gt;
				if(document.getElementById(&amp;quot;template-scroll-button-visibility&amp;quot;).checked){&lt;br /&gt;
					myScrollUpBtn.style.display=&amp;quot;&amp;quot;;&lt;br /&gt;
					myScrollDownBtn.style.display=&amp;quot;&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
				else{&lt;br /&gt;
					myScrollUpBtn.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					myScrollDownBtn.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
		},10);&lt;br /&gt;
	}&lt;br /&gt;
	//color-menu&lt;br /&gt;
	if(mw.config.values.wgUserName&amp;amp;&amp;amp;(mw.config.values.wgAction==&amp;quot;edit&amp;quot;||mw.config.values.wgAction==&amp;quot;submit&amp;quot;||document.body.classList.contains(&amp;quot;ns-talk&amp;quot;))){&lt;br /&gt;
		function toHEX(rgbdata){&lt;br /&gt;
			let rgb=rgbdata.replaceAll(&amp;quot;rgba(&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot;rgb(&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot;)&amp;quot;,&amp;quot;&amp;quot;).replaceAll(&amp;quot; &amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;,&amp;quot;);&lt;br /&gt;
			rgb=rgb.map(function(data){&lt;br /&gt;
				return Number(data);&lt;br /&gt;
			});&lt;br /&gt;
			return &amp;quot;#&amp;quot;+rgb.map(function(data){&lt;br /&gt;
				return (&amp;quot;0&amp;quot;+data.toString(16)).slice(-2);&lt;br /&gt;
			}).join(&amp;quot;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
		function nn(number){&lt;br /&gt;
			if(number.length==1){&lt;br /&gt;
				number=&amp;quot;0&amp;quot;+number;&lt;br /&gt;
			}&lt;br /&gt;
			return number;&lt;br /&gt;
		}&lt;br /&gt;
		let myColor=document.createElement(&amp;quot;span&amp;quot;);&lt;br /&gt;
		let myMenu=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		myColor.id=&amp;quot;colorTestButton&amp;quot;;&lt;br /&gt;
		myColor.innerHTML=&amp;quot;🎨&amp;quot;;&lt;br /&gt;
		myMenu.id=&amp;quot;colorTestMenu&amp;quot;;&lt;br /&gt;
		myMenu.innerHTML=`色合い&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;文字色&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-color&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; data-value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-color-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-color-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;背景色&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-bgcolor&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;0&amp;quot; data-value=&amp;quot;0&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-bgcolor-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-bgcolor-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;0&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;colorTestMenu-preview&amp;quot; class=&amp;quot;colorTestMenu-result&amp;quot;&amp;gt;テキスト&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;太字テキスト&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;a style=&amp;quot;color:var(--theme-link-color)&amp;quot;&amp;gt;リンクテキスト&amp;lt;/a&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		CSS:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-cssText&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;background:;color:;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-cssText,innerHTML&amp;quot; value=&amp;quot;CSSをコピー&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;リセット&amp;quot; class=&amp;quot;colorTestMenu-reset&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;hr&amp;gt;&lt;br /&gt;
		混色&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;色A&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-colorA&amp;quot; value=&amp;quot;#000000&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-colorA-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-colorA-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-colorSelector&amp;quot;&amp;gt;色B&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;color&amp;quot; id=&amp;quot;colorTestMenu-colorB&amp;quot; value=&amp;quot;#ff0000&amp;quot;&amp;gt;&amp;lt;br&amp;gt;透明度&amp;lt;br&amp;gt;&amp;lt;input type=&amp;quot;range&amp;quot; min=&amp;quot;0&amp;quot; max=&amp;quot;1&amp;quot; value=&amp;quot;1&amp;quot; step=&amp;quot;0.1&amp;quot; id=&amp;quot;colorTestMenu-colorB-opacity&amp;quot;&amp;gt;&amp;lt;span id=&amp;quot;colorTestMenu-colorB-opacity-value&amp;quot; class=&amp;quot;colorTestMenu-output&amp;quot;&amp;gt;10&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div id=&amp;quot;colorTestMenu-mix-preview&amp;quot; class=&amp;quot;colorTestMenu-result&amp;quot; style=&amp;quot;background:color-mix(in srgb,red,black);&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		カラーコード:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-mix-colorCode&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;color(srgb 0.5 0 0)&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-mix-colorCode,innerHTML&amp;quot; value=&amp;quot;カラーコードをコピー&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;hr&amp;gt;&lt;br /&gt;
		カスタムプロパティ一覧&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;select id=&amp;quot;colorTestMenu-varTable&amp;quot;&amp;gt;&amp;lt;/select&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		プレビュー:&amp;lt;br&amp;gt;&lt;br /&gt;
		ライトモード：&amp;lt;div class=&amp;quot;colorTestMenu-varTable-modepreview&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;client-defaultmode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		ダークモード：&amp;lt;div class=&amp;quot;colorTestMenu-varTable-modepreview&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;client-darkmode&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		CSS:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-varTable-property&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-varTable-property,innerHTML&amp;quot; value=&amp;quot;CSSをコピー&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
		値として利用:&amp;lt;br&amp;gt;&lt;br /&gt;
		&amp;lt;div class=&amp;quot;colorTestMenu-result&amp;quot; id=&amp;quot;colorTestMenu-varTable-value&amp;quot; style=&amp;quot;height:2em;user-select:all;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;button&amp;quot; class=&amp;quot;colorTestMenu-copyButton&amp;quot; data-target=&amp;quot;colorTestMenu-varTable-value,innerHTML&amp;quot; value=&amp;quot;値をコピー&amp;quot;&amp;gt;&lt;br /&gt;
		`;&lt;br /&gt;
		document.body.appendChild(myColor);&lt;br /&gt;
		document.body.appendChild(myMenu);&lt;br /&gt;
		myColor.onclick=function(){&lt;br /&gt;
			myMenu.classList.toggle(&amp;quot;visible&amp;quot;);&lt;br /&gt;
			if(myMenu.classList.contains(&amp;quot;visible&amp;quot;)){&lt;br /&gt;
				let closeArea=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
				closeArea.style.cssText=&amp;quot;background:transparent;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:2999;&amp;quot;;&lt;br /&gt;
				closeArea.id=&amp;quot;colorTestCloseArea&amp;quot;;&lt;br /&gt;
				closeArea.onclick=function(){&lt;br /&gt;
					myColor.click();&lt;br /&gt;
				};&lt;br /&gt;
				document.body.appendChild(closeArea);&lt;br /&gt;
				myColor.innerHTML=&amp;quot;✕&amp;quot;;&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				myColor.innerHTML=&amp;quot;🎨&amp;quot;;&lt;br /&gt;
				document.getElementById(&amp;quot;colorTestCloseArea&amp;quot;).remove();&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		let sbody=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		sbody.style.cssText=&amp;quot;background:var(--theme-main-color);color:var(--theme-text-color);&amp;quot;;&lt;br /&gt;
		document.body.appendChild(sbody);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;).value=document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;).dataset.value=toHEX(window.getComputedStyle(sbody).color);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;).value=document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;).dataset.value=toHEX(window.getComputedStyle(sbody).getPropertyValue(&amp;quot;background-color&amp;quot;));&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-cssText&amp;quot;).innerHTML=&amp;quot;background:&amp;quot;+toHEX(window.getComputedStyle(sbody).getPropertyValue(&amp;quot;background-color&amp;quot;))+&amp;quot;00;color:&amp;quot;+toHEX(window.getComputedStyle(sbody).color)+&amp;quot;ff;&amp;quot;;&lt;br /&gt;
		sbody.remove();&lt;br /&gt;
		function inputAreaFnc(){&lt;br /&gt;
		let color=document.getElementById(&amp;quot;colorTestMenu-color&amp;quot;);&lt;br /&gt;
		let coloropa=document.getElementById(&amp;quot;colorTestMenu-color-opacity&amp;quot;);&lt;br /&gt;
		let bg=document.getElementById(&amp;quot;colorTestMenu-bgcolor&amp;quot;);&lt;br /&gt;
		let bgopa=document.getElementById(&amp;quot;colorTestMenu-bgcolor-opacity&amp;quot;);&lt;br /&gt;
		let colorA=document.getElementById(&amp;quot;colorTestMenu-colorA&amp;quot;);&lt;br /&gt;
		let colorAopa=document.getElementById(&amp;quot;colorTestMenu-colorA-opacity&amp;quot;);&lt;br /&gt;
		let colorB=document.getElementById(&amp;quot;colorTestMenu-colorB&amp;quot;);&lt;br /&gt;
		let colorBopa=document.getElementById(&amp;quot;colorTestMenu-colorB-opacity&amp;quot;);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-preview&amp;quot;).style.cssText=document.getElementById(&amp;quot;colorTestMenu-cssText&amp;quot;).innerHTML=&amp;quot;background:&amp;quot;+bg.value+nn(Math.round(bgopa.value*255).toString(16))+&amp;quot;;color:&amp;quot;+color.value+nn(Math.round(coloropa.value*255).toString(16))+&amp;quot;;&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-color-opacity-value&amp;quot;).innerHTML=coloropa.value*10;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-bgcolor-opacity-value&amp;quot;).innerHTML=bgopa.value*10;&lt;br /&gt;
		let mix=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
		mix.style.background=&amp;quot;color-mix(in srgb,&amp;quot;+colorA.value+nn(Math.round(colorAopa.value*255).toString(16))+&amp;quot;,&amp;quot;+colorB.value+nn(Math.round(colorBopa.value*255).toString(16))+&amp;quot;)&amp;quot;;&lt;br /&gt;
		document.body.appendChild(mix);&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-mix-preview&amp;quot;).style.background=document.getElementById(&amp;quot;colorTestMenu-mix-colorCode&amp;quot;).innerHTML=window.getComputedStyle(mix).getPropertyValue(&amp;quot;background-color&amp;quot;);&lt;br /&gt;
		mix.remove();&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-colorA-opacity-value&amp;quot;).innerHTML=colorAopa.value*10;&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-colorB-opacity-value&amp;quot;).innerHTML=colorBopa.value*10;&lt;br /&gt;
		}&lt;br /&gt;
		let customProperty=[[&amp;quot;文字色&amp;quot;,&amp;quot;--theme-text-color&amp;quot;],[&amp;quot;リンク色&amp;quot;,&amp;quot;--theme-link-color&amp;quot;],[&amp;quot;hover時のリンク色&amp;quot;,&amp;quot;--theme-link-color--hover&amp;quot;],[&amp;quot;メインカラー&amp;quot;,&amp;quot;--theme-main-bg-color&amp;quot;],[&amp;quot;中間色&amp;quot;,&amp;quot;--theme-page-second-color&amp;quot;]];&lt;br /&gt;
		let cps=document.getElementById(&amp;quot;colorTestMenu-varTable&amp;quot;);&lt;br /&gt;
		customProperty.forEach(function(data){&lt;br /&gt;
			let myOption=document.createElement(&amp;quot;option&amp;quot;);&lt;br /&gt;
			myOption.innerHTML=data[0];&lt;br /&gt;
			myOption.value=data[1];&lt;br /&gt;
			cps.appendChild(myOption);&lt;br /&gt;
		});&lt;br /&gt;
		document.getElementById(&amp;quot;colorTestMenu-varTable-value&amp;quot;).innerHTML=customProperty[0][1]+&amp;quot;:;&amp;quot;;&lt;br /&gt;
		function selectVarTableFnc(){&lt;br /&gt;
			document.getElementById(&amp;quot;colorTestMenu-varTable-property&amp;quot;).innerHTML=cps.value+&amp;quot;:;&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;colorTestMenu-varTable-value&amp;quot;).innerHTML=&amp;quot;var(&amp;quot;+cps.value+&amp;quot;)&amp;quot;;&lt;br /&gt;
			document.querySelectorAll(&amp;quot;.colorTestMenu-varTable-modepreview&amp;quot;).forEach(function(element){&lt;br /&gt;
				element.querySelector(&amp;quot;div&amp;quot;).style.background=&amp;quot;var(&amp;quot;+cps.value+&amp;quot;)&amp;quot;;&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		selectVarTableFnc();&lt;br /&gt;
		cps.oninput=selectVarTableFnc;&lt;br /&gt;
		myMenu.oninput=inputAreaFnc;&lt;br /&gt;
		document.querySelector(&amp;quot;.colorTestMenu-copyButton&amp;quot;)?document.querySelectorAll(&amp;quot;.colorTestMenu-copyButton&amp;quot;).forEach(function(element){&lt;br /&gt;
			if(window.isSecureContext){&lt;br /&gt;
				element.onclick=function(){&lt;br /&gt;
					let originValue=element.value;&lt;br /&gt;
					navigator.clipboard.writeText(document.getElementById(element.dataset.target.split(&amp;quot;,&amp;quot;)[0])[element.dataset.target.split(&amp;quot;,&amp;quot;)[1]]);&lt;br /&gt;
					element.value=&amp;quot;コピーしました&amp;quot;;&lt;br /&gt;
					element.disabled=true;&lt;br /&gt;
					setTimeout(function(){&lt;br /&gt;
						element.value=originValue;&lt;br /&gt;
						element.disabled=false;&lt;br /&gt;
					},1000);&lt;br /&gt;
				};&lt;br /&gt;
			}&lt;br /&gt;
			else{&lt;br /&gt;
				element.remove();&lt;br /&gt;
			}&lt;br /&gt;
		}):&amp;quot;&amp;quot;;&lt;br /&gt;
		document.querySelector(&amp;quot;.colorTestMenu-reset&amp;quot;)?document.querySelectorAll(&amp;quot;.colorTestMenu-reset&amp;quot;).forEach(function(reset){&lt;br /&gt;
			reset.onclick=function(){&lt;br /&gt;
				document.querySelectorAll(&amp;quot;#colorTestMenu input[data-value]&amp;quot;).forEach(function(element){&lt;br /&gt;
					element.value=element.dataset.value;&lt;br /&gt;
					inputAreaFnc();&lt;br /&gt;
				});&lt;br /&gt;
			};&lt;br /&gt;
		}):&amp;quot;&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
	//upload-icon&lt;br /&gt;
	if(mw.config.values.wgUserName){&lt;br /&gt;
		let uploadIcon=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
		uploadIcon.classList.add(&amp;quot;wds-button&amp;quot;);&lt;br /&gt;
		uploadIcon.classList.add(&amp;quot;wds-is-secondary&amp;quot;);&lt;br /&gt;
		uploadIcon.href=&amp;quot;https://japolitiball.myht.org/wiki/Special:Upload&amp;quot;;&lt;br /&gt;
		uploadIcon.innerHTML=&amp;quot;&amp;lt;img src=&#039;https://japolandball.miraheze.org/wiki/Special:FilePath/Upload-icon.svg&#039; width=&#039;22&#039; height=&#039;22&#039; class=&#039;wds-icon-small&#039;&amp;gt;&amp;quot;;&lt;br /&gt;
		uploadIcon.title=&amp;quot;ファイルをアップロード&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;createpage&amp;quot;).after(uploadIcon);&lt;br /&gt;
	}&lt;br /&gt;
	//Template:CF&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cf&amp;quot;)){&lt;br /&gt;
		let myStorage=localStorage.getItem(&amp;quot;template-cf&amp;quot;)||&amp;quot;&amp;quot;;&lt;br /&gt;
		let visible=true;&lt;br /&gt;
		for(let data of myStorage.split(&amp;quot;\n&amp;quot;)){&lt;br /&gt;
			if(mw.config.values.wgPageName==data){&lt;br /&gt;
				visible=false;&lt;br /&gt;
				break;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		if(visible){&lt;br /&gt;
			let mydiv=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
			mydiv.classList.add(&amp;quot;template-confirm&amp;quot;);&lt;br /&gt;
			mydiv.id=&amp;quot;template-cf-confirmbox&amp;quot;;&lt;br /&gt;
			mydiv.innerHTML=`&amp;lt;div class=&amp;quot;template-confirm-main&amp;quot; id=&amp;quot;template-cf-confirmbox-main&amp;quot; style=&amp;quot;background:${document.getElementById(&amp;quot;template-cf-bgcolor&amp;quot;).innerHTML};color:${document.getElementById(&amp;quot;template-cf-color&amp;quot;).innerHTML};&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size:1.2em;font-weight:bold;display:inline-block;margin-bottom:0.5em;&amp;quot;&amp;gt;${document.getElementById(&amp;quot;template-cf-title&amp;quot;).innerHTML}&amp;lt;/span&amp;gt;&lt;br /&gt;
			&amp;lt;br&amp;gt;&lt;br /&gt;
			${document.getElementById(&amp;quot;template-cf-message&amp;quot;).innerHTML}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;label style=&amp;quot;font-size:0.9em;position:relative;top:1em;&amp;quot;&amp;gt;&amp;lt;input type=&amp;quot;checkbox&amp;quot; id=&amp;quot;template-cf-checkbox&amp;quot; style=&amp;quot;width:0.9em;height:0.9em;&amp;quot;&amp;gt;次回からは表示しない&amp;lt;/label&amp;gt;&lt;br /&gt;
			&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;a href=&amp;quot;/wiki/Template:CF/doc&amp;quot; style=&amp;quot;--theme-link-color:#003399;font-size:0.8em;position:relative;top:2em;&amp;quot;&amp;gt;詳細&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
			&amp;lt;div style=&amp;quot;text-align:right;&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;いいえ&amp;quot; id=&amp;quot;template-cf-cancel-btn&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;はい&amp;quot; id=&amp;quot;template-cf-ok-btn&amp;quot; style=&amp;quot;background:var(--theme-main-bg-color);color:white;border-color:var(--theme-main-bg-color);&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;`;&lt;br /&gt;
			document.body.appendChild(mydiv);&lt;br /&gt;
			window.scroll(0,0);&lt;br /&gt;
			document.body.style.overflow=&amp;quot;hidden&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;mw-content&amp;quot;).style.filter=&amp;quot;blur(5px)&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-confirmbox-main&amp;quot;).style.top=((window.innerHeight-document.getElementById(&amp;quot;template-cf-confirmbox-main&amp;quot;).offsetHeight)/2)+&amp;quot;px&amp;quot;;&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-cancel-btn&amp;quot;).onclick=function(){&lt;br /&gt;
				document.getElementById(&amp;quot;template-cf-checkbox&amp;quot;).checked=false;&lt;br /&gt;
				document.querySelector(&amp;quot;#template-cf-return a&amp;quot;).click();&lt;br /&gt;
			};&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-ok-btn&amp;quot;).onclick=function(){&lt;br /&gt;
				document.body.style.overflow=&amp;quot;auto&amp;quot;;&lt;br /&gt;
				document.getElementById(&amp;quot;mw-content&amp;quot;).style.filter=&amp;quot;&amp;quot;;&lt;br /&gt;
				if(document.getElementById(&amp;quot;template-cf-checkbox&amp;quot;).checked){&lt;br /&gt;
					myStorage+=mw.config.values.wgPageName+&amp;quot;\n&amp;quot;;&lt;br /&gt;
					localStorage.setItem(&amp;quot;template-cf&amp;quot;,myStorage);&lt;br /&gt;
				}&lt;br /&gt;
				mydiv.remove();	&lt;br /&gt;
			};&lt;br /&gt;
			document.getElementById(&amp;quot;template-cf-ok-btn&amp;quot;).focus();&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-cf-form&amp;quot;)){&lt;br /&gt;
		let myStorage=localStorage.getItem(&amp;quot;template-cf&amp;quot;);&lt;br /&gt;
		let textarea=document.createElement(&amp;quot;textarea&amp;quot;);&lt;br /&gt;
		textarea.value=myStorage;&lt;br /&gt;
		textarea.oninput=function(){&lt;br /&gt;
			localStorage.setItem(&amp;quot;template-cf&amp;quot;,textarea.value);&lt;br /&gt;
		};&lt;br /&gt;
		textarea.onblur=function(){&lt;br /&gt;
			if(textarea.value.split(&amp;quot;&amp;quot;)[textarea.value.length-1]!=&amp;quot;\n&amp;quot;&amp;amp;&amp;amp;textarea.value!=&amp;quot;&amp;quot;){&lt;br /&gt;
				textarea.value+=&amp;quot;\n&amp;quot;;&lt;br /&gt;
				localStorage.setItem(&amp;quot;template-cf&amp;quot;,textarea.value);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
		textarea.style.cssText=&amp;quot;width:90%;height:300px;font-size:1em;&amp;quot;;&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-textarea&amp;quot;).after(textarea);&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-textarea&amp;quot;).remove();&lt;br /&gt;
		document.getElementById(&amp;quot;template-cf-reload&amp;quot;).onclick=function(e){&lt;br /&gt;
			if(!e.target.classList.contains(&amp;quot;clicked&amp;quot;)){&lt;br /&gt;
				let loadmsg=document.createElement(&amp;quot;div&amp;quot;);&lt;br /&gt;
				textarea.style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
				loadmsg.innerHTML=&amp;quot;読み込み中...&amp;quot;;&lt;br /&gt;
				textarea.after(loadmsg);&lt;br /&gt;
				e.target.classList.add(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				setTimeout(function(){&lt;br /&gt;
					textarea.value=localStorage.getItem(&amp;quot;template-cf&amp;quot;);&lt;br /&gt;
					textarea.style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
					loadmsg.remove();&lt;br /&gt;
					e.target.classList.remove(&amp;quot;clicked&amp;quot;);&lt;br /&gt;
				},1000);&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
	}&lt;br /&gt;
	/*template-imageLoad*/&lt;br /&gt;
	if(document.getElementById(&amp;quot;template-imageLoad&amp;quot;)){&lt;br /&gt;
		document.querySelectorAll(&amp;quot;img&amp;quot;).forEach(function(element){&lt;br /&gt;
			element.src?element.src=element.src:&amp;quot;&amp;quot;;&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
	//Button Tag&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-button&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-button&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mybtn=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mybtn.type=&amp;quot;button&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		mybtn.value=myZobj.value||&amp;quot;&amp;quot;;&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mybtn.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mybtn.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		mybtn.style.height=myZobj.height||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mybtn.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mybtn.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mybtn.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mybtn);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	//File Tag&lt;br /&gt;
	document.querySelector(&amp;quot;.mw-html-file&amp;quot;)?document.querySelectorAll(&amp;quot;.mw-html-file&amp;quot;).forEach(function(element){&lt;br /&gt;
		let myZobj={};&lt;br /&gt;
		let mybtn=document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		mybtn.type=&amp;quot;file&amp;quot;;&lt;br /&gt;
		element.innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
			myZobj[mypp.split(&amp;quot;:&amp;quot;)[0].replaceAll(&amp;quot;-&amp;quot;,&amp;quot;&amp;quot;)]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
		});&lt;br /&gt;
		if(myZobj.class){&lt;br /&gt;
			myZobj.class.split(&amp;quot; &amp;quot;).forEach(function(classData){&lt;br /&gt;
				mybtn.classList.add(classData);&lt;br /&gt;
			});&lt;br /&gt;
		}&lt;br /&gt;
		mybtn.id=myZobj.id||&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.readonly==&amp;quot;true&amp;quot;?mybtn.readOnly=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		myZobj.disabled==&amp;quot;true&amp;quot;?mybtn.disabled=true:&amp;quot;&amp;quot;;&lt;br /&gt;
		element.getAttribute(&amp;quot;style&amp;quot;)?mybtn.style.cssText=element.getAttribute(&amp;quot;style&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
		element.after(mybtn);&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	//Extension Conversion&lt;br /&gt;
	if(document.getElementById(&amp;quot;page-ec&amp;quot;)){&lt;br /&gt;
	function topngFnc(){&lt;br /&gt;
			let myfile=document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;);&lt;br /&gt;
			let r=new FileReader();&lt;br /&gt;
			r.readAsDataURL(myfile.files[0]);&lt;br /&gt;
			r.onload=function(){&lt;br /&gt;
				let myimg=new Image();&lt;br /&gt;
				myimg.src=r.result;&lt;br /&gt;
				myimg.onload=function(){&lt;br /&gt;
					let mycanvas=document.createElement(&amp;quot;canvas&amp;quot;);&lt;br /&gt;
					let myctx=mycanvas.getContext(&amp;quot;2d&amp;quot;);&lt;br /&gt;
					mycanvas.height=myimg.height;&lt;br /&gt;
					mycanvas.width=myimg.width;&lt;br /&gt;
					myctx.drawImage(myimg,0,0,mycanvas.width,mycanvas.height);&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).value=&amp;quot;ダウンロード&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=function(){&lt;br /&gt;
						let mya=document.createElement(&amp;quot;a&amp;quot;);&lt;br /&gt;
						mya.href=mycanvas.toDataURL();&lt;br /&gt;
						mya.download=(document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value||&amp;quot;download&amp;quot;).split(&amp;quot;.&amp;quot;)[0]+&amp;quot;.png&amp;quot;;&lt;br /&gt;
						mya.click();&lt;br /&gt;
					};&lt;br /&gt;
					document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).onclick=function(){&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).style.display=&amp;quot;inline-block&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).value=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).value=&amp;quot;変換&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=topngFnc;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-data&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-file-name&amp;quot;).innerHTML=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value=&amp;quot;&amp;quot;;&lt;br /&gt;
						document.getElementById(&amp;quot;mypage-topng-retry&amp;quot;).style.display=&amp;quot;none&amp;quot;;&lt;br /&gt;
					};&lt;br /&gt;
				};&lt;br /&gt;
				myimg.onerror=function(){&lt;br /&gt;
					window.alert(&amp;quot;エラーが発生しました。&amp;quot;);	&lt;br /&gt;
				};&lt;br /&gt;
			};&lt;br /&gt;
		}&lt;br /&gt;
		document.getElementById(&amp;quot;mypage-topng-upload-btn&amp;quot;).onchange=function(e){&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-file-name&amp;quot;).innerHTML=e.target.files[0].name;&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-after-name&amp;quot;).value=e.target.files[0].name.split(&amp;quot;.&amp;quot;)[0];&lt;br /&gt;
			document.getElementById(&amp;quot;mypage-topng-upload-data&amp;quot;).style.display=&amp;quot;block&amp;quot;;&lt;br /&gt;
		};&lt;br /&gt;
		document.getElementById(&amp;quot;mypage-topng-change-btn&amp;quot;).onclick=topngFnc;&lt;br /&gt;
	}&lt;br /&gt;
	let myobj={};&lt;br /&gt;
	document.querySelector(&amp;quot;span.sitestyle&amp;quot;)?document.querySelector(&amp;quot;span.sitestyle&amp;quot;).innerHTML.replaceAll(&amp;quot;\n&amp;quot;,&amp;quot;&amp;quot;).split(&amp;quot;;&amp;quot;).forEach(function(mypp){&lt;br /&gt;
		myobj[mypp.split(&amp;quot;:&amp;quot;)[0]]=mypp.split(&amp;quot;:&amp;quot;)[1];&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.getElementById(&amp;quot;mw-content&amp;quot;).style.background=myobj.bgcolor?(&amp;quot;color-mix(in srgb, &amp;quot;+myobj.bgcolor+&amp;quot; var(--theme-mode-opacity), rgba(var(--theme-page-color--rgb),0.9))&amp;quot;):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.maincolor?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-main-bg-color&amp;quot;,myobj.maincolor):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.link?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-link-color&amp;quot;,myobj.link):&amp;quot;&amp;quot;;&lt;br /&gt;
	myobj.linkhover?document.querySelector(&amp;quot;html&amp;quot;).style.setProperty(&amp;quot;--theme-link-color--hover&amp;quot;,myobj.linkhover):&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.cosmos-header&amp;quot;).style.background=myobj.headerbg||&amp;quot;&amp;quot;;&lt;br /&gt;
	document.querySelector(&amp;quot;.cosmos-header&amp;quot;).style.color=myobj.headercolor||&amp;quot;&amp;quot;;&lt;br /&gt;
})();&lt;br /&gt;
//jsload-delete&lt;br /&gt;
(function(){&lt;br /&gt;
	document.querySelector(&amp;quot;.jsload-delete&amp;quot;)?document.querySelectorAll(&amp;quot;.jsload-delete&amp;quot;).forEach(function(element){&lt;br /&gt;
		element.remove();&lt;br /&gt;
	}):&amp;quot;&amp;quot;;&lt;br /&gt;
})();&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E6%97%A5%E6%9C%AC%E5%85%B1%E7%94%A3%E5%85%9A&amp;diff=152</id>
		<title>日本共産党</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E6%97%A5%E6%9C%AC%E5%85%B1%E7%94%A3%E5%85%9A&amp;diff=152"/>
		<updated>2026-07-20T08:11:18Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;日本共産党&#039;&#039;&#039;（にほんきょうさんとう）は、日本の共産主義政党です。&lt;br /&gt;
&lt;br /&gt;
{{Infobox Party&lt;br /&gt;
| title = 日本共産党&lt;br /&gt;
| 現地名 = 日本語：日本共産党 (にほんきょうさんとう)&lt;br /&gt;
| founded = &lt;br /&gt;
| ended = &lt;br /&gt;
| onlypredecessor = &lt;br /&gt;
| predicon = &lt;br /&gt;
| predsuffix = &lt;br /&gt;
| onlysuccessor = &lt;br /&gt;
| nexticon = &lt;br /&gt;
| nextsuffix = &lt;br /&gt;
| onlypredecessor2 = &lt;br /&gt;
| predicon2 = &lt;br /&gt;
| onlysuccessor2 = &lt;br /&gt;
| nexticon2 = &lt;br /&gt;
| onlypredecessor3 = &lt;br /&gt;
| predicon3 = &lt;br /&gt;
| onlysuccessor3 = &lt;br /&gt;
| nexticon3 = &lt;br /&gt;
| onlypredecessor4 = &lt;br /&gt;
| predicon4 = &lt;br /&gt;
| onlysuccessor4 = &lt;br /&gt;
| image = &lt;br /&gt;
| caption = WE ARE 共産党!!&lt;br /&gt;
| イデオロギー = &lt;br /&gt;
| 所属 = &lt;br /&gt;
| 宗教 = &lt;br /&gt;
| 誕生日 = 1922年7月15日&amp;lt;br&amp;gt;（1945年12月に合法化）&lt;br /&gt;
| 命日 = &lt;br /&gt;
| 友達 = &lt;br /&gt;
| 仲間 = &lt;br /&gt;
| 敵 = &lt;br /&gt;
| 過去 = &lt;br /&gt;
| 未来 = &lt;br /&gt;
| 好きな物 = &lt;br /&gt;
| 嫌いな物 = &lt;br /&gt;
| 一人称 = &lt;br /&gt;
| 呼ばれ方 = &lt;br /&gt;
| ボーク = &lt;br /&gt;
| 性格 = &lt;br /&gt;
| 一言 = &lt;br /&gt;
| 党旗の変遷 = &lt;br /&gt;
| 党旗の名前 = &lt;br /&gt;
| 現状 = &lt;br /&gt;
| 標語 = &lt;br /&gt;
| 党歌 = &lt;br /&gt;
| 党員人数 = &lt;br /&gt;
| 目標 = &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Party/doc&amp;diff=151</id>
		<title>テンプレート:Infobox Party/doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Party/doc&amp;diff=151"/>
		<updated>2026-07-20T07:57:24Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Documentation subpage}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
ポリティボールの情報を表示するテンプレートを、[https://japolandball.miraheze.org/wiki/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Countryballs 日本語版PBWikiのもの]に寄せたものになります。一部引数は英語のままですが、そこは適切でない入力をするとテンプレートが上手く機能しないため、必要な引数を追加しながら一つずつ変更して使用してください。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Infobox Party&lt;br /&gt;
|title = &lt;br /&gt;
|現地名 = &lt;br /&gt;
|founded = &lt;br /&gt;
|ended = &lt;br /&gt;
|年代情報 = &lt;br /&gt;
|onlypredecessor = &lt;br /&gt;
|predicon = &lt;br /&gt;
|predsuffix = &lt;br /&gt;
|onlysuccessor = &lt;br /&gt;
|nexticon = &lt;br /&gt;
|nextsuffix = &lt;br /&gt;
|onlypredecessor2 = &lt;br /&gt;
|predicon2 = &lt;br /&gt;
|onlysuccessor2 = &lt;br /&gt;
|nexticon2 = &lt;br /&gt;
|onlypredecessor3 = &lt;br /&gt;
|predicon3 = &lt;br /&gt;
|onlysuccessor3 = &lt;br /&gt;
|nexticon3 = &lt;br /&gt;
|onlypredecessor4 = &lt;br /&gt;
|predicon4 = &lt;br /&gt;
|onlysuccessor4 = &lt;br /&gt;
|nexticon4 = &lt;br /&gt;
|image = &lt;br /&gt;
|caption = &lt;br /&gt;
|イデオロギー = &lt;br /&gt;
|所属 = &lt;br /&gt;
|宗教 = &lt;br /&gt;
|誕生日 = &lt;br /&gt;
|命日 = &lt;br /&gt;
|友達 = &lt;br /&gt;
|敵 = &lt;br /&gt;
|過去 = &lt;br /&gt;
|未来 = &lt;br /&gt;
|好きな物 = &lt;br /&gt;
|嫌いな物 = &lt;br /&gt;
|一人称 = &lt;br /&gt;
|呼ばれ方 = &lt;br /&gt;
|ボーク = &lt;br /&gt;
|性格 = &lt;br /&gt;
|一言 = &lt;br /&gt;
|党旗の変遷 = &lt;br /&gt;
|党旗の名前 = &lt;br /&gt;
|現状 = &lt;br /&gt;
|標語 = &lt;br /&gt;
|党歌 = &lt;br /&gt;
|党員人数 = &lt;br /&gt;
|目標 = &lt;br /&gt;
|notes = &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
現存する党の場合、次のように入力してください。&lt;br /&gt;
{{Infobox Party&lt;br /&gt;
| title = 自由党&lt;br /&gt;
| 現地名 = Liberal Party&lt;br /&gt;
| founded = 1969/2010&lt;br /&gt;
| ended = &lt;br /&gt;
| onlypredecessor = 民主協会&lt;br /&gt;
| predicon = White&lt;br /&gt;
| onlysuccessor = &lt;br /&gt;
| 未来 = &lt;br /&gt;
| image = &lt;br /&gt;
| caption = BE FREEDOM!!&lt;br /&gt;
| イデオロギー = {{I|Liberalism}}自由主義&amp;lt;br&amp;gt;&lt;br /&gt;
{{I|Conservatism}}保守主義&lt;br /&gt;
| 所属 = [[国際自由民主主義政治連盟]]&lt;br /&gt;
| 宗教 = キリスト教 (政党が特定の宗教を信奉している場合は記入する)&lt;br /&gt;
| 誕生日 = 1969年5月1日&amp;lt;br&amp;gt;（2010年3月に現在の体制へ転換）&lt;br /&gt;
| 命日 = &lt;br /&gt;
| 友達 = * {{I|USA}}[[jpwp:アメリカ合衆国|アメリカ]]&lt;br /&gt;
* {{I|UKpb}}[[jpwp:イギリス|イギリス]]&lt;br /&gt;
* {{I|Canada}}[[jpwp:カナダ|カナダ]]&lt;br /&gt;
| 敵 = [[共産主義]]&lt;br /&gt;
| 過去 = &lt;br /&gt;
| 好きな物 = ハンバーガー、自由&lt;br /&gt;
| 嫌いな物 = 税金、共産主義&lt;br /&gt;
| 一人称 = ミー (Me)&lt;br /&gt;
| 呼ばれ方 = 自由なやつ&amp;lt;s&amp;gt;、資本主義の犬&amp;lt;/s&amp;gt;&lt;br /&gt;
| ボーク = Liberty liberty、Clay clay&lt;br /&gt;
| 性格 = 陽気&lt;br /&gt;
| 一言 = 我々に自由を！&lt;br /&gt;
| 党旗の変遷 = [[File:Old_flag.png|20px]]→[[File:Current_flag.png|20px]]&lt;br /&gt;
| 党旗の名前 = 自由の旗&lt;br /&gt;
| 現状 = ○○共和国の与党として活動中&lt;br /&gt;
| 標語 = すべてのボールに自由を！&lt;br /&gt;
| 党歌 = 自由の歌&lt;br /&gt;
| 党員人数 = 約 1,000,000 人&lt;br /&gt;
| 目標 = &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:Infoboxを使用したテンプレート]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Party/doc&amp;diff=150</id>
		<title>テンプレート:Infobox Party/doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Party/doc&amp;diff=150"/>
		<updated>2026-07-20T07:56:03Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Documentation subpage}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
ポリティボールの情報を表示するテンプレートを、[https://japolandball.miraheze.org/wiki/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Countryballs 日本語版PBWikiのもの]に寄せたものになります。一部引数は英語のままですが、そこは適切でない入力をするとテンプレートが上手く機能しないため、必要な引数を追加しながら一つずつ変更して使用してください。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Infobox Party&lt;br /&gt;
|title = &lt;br /&gt;
|現地名 = &lt;br /&gt;
|founded = &lt;br /&gt;
|ended = &lt;br /&gt;
|年代情報 = &lt;br /&gt;
|onlypredecessor = &lt;br /&gt;
|predicon = &lt;br /&gt;
|predsuffix = &lt;br /&gt;
|onlysuccessor = &lt;br /&gt;
|nexticon = &lt;br /&gt;
|nextsuffix = &lt;br /&gt;
|onlypredecessor2 = &lt;br /&gt;
|predicon2 = &lt;br /&gt;
|onlysuccessor2 = &lt;br /&gt;
|nexticon2 = &lt;br /&gt;
|onlypredecessor3 = &lt;br /&gt;
|predicon3 = &lt;br /&gt;
|onlysuccessor3 = &lt;br /&gt;
|nexticon3 = &lt;br /&gt;
|onlypredecessor4 = &lt;br /&gt;
|predicon4 = &lt;br /&gt;
|onlysuccessor4 = &lt;br /&gt;
|nexticon4 = &lt;br /&gt;
|image = &lt;br /&gt;
|caption = &lt;br /&gt;
|イデオロギー = &lt;br /&gt;
|所属 = &lt;br /&gt;
|宗教 = &lt;br /&gt;
|誕生日 = &lt;br /&gt;
|命日 = &lt;br /&gt;
|友達 = &lt;br /&gt;
|敵 = &lt;br /&gt;
|過去 = &lt;br /&gt;
|未来 = &lt;br /&gt;
|好きな物 = &lt;br /&gt;
|嫌いな物 = &lt;br /&gt;
|一人称 = &lt;br /&gt;
|呼ばれ方 = &lt;br /&gt;
|ボーク = &lt;br /&gt;
|性格 = &lt;br /&gt;
|一言 = &lt;br /&gt;
|党旗の変遷 = &lt;br /&gt;
|党旗の名前 = &lt;br /&gt;
|現状 = &lt;br /&gt;
|標語 = &lt;br /&gt;
|党歌 = &lt;br /&gt;
|党員人数 = &lt;br /&gt;
|目標 = &lt;br /&gt;
|notes = &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
現存する党の場合、次のように入力してください。&lt;br /&gt;
{{Infobox Party&lt;br /&gt;
| title = 自由党&lt;br /&gt;
| 現地名 = Liberal Party&lt;br /&gt;
| founded = 2010&lt;br /&gt;
| ended = &lt;br /&gt;
| onlypredecessor = 民主協会&lt;br /&gt;
| predicon = White&lt;br /&gt;
| onlysuccessor = &lt;br /&gt;
| 未来 = &lt;br /&gt;
| image = &lt;br /&gt;
| caption = BE FREEDOM!!&lt;br /&gt;
| イデオロギー = {{I|Liberalism}}自由主義&amp;lt;br&amp;gt;&lt;br /&gt;
{{I|Conservatism}}保守主義&lt;br /&gt;
| 所属 = [[国際自由民主主義政治連盟]]&lt;br /&gt;
| 宗教 = キリスト教 (政党が特定の宗教を信奉している場合は記入する)&lt;br /&gt;
| 誕生日 = 1969年5月1日&lt;br /&gt;
| 命日 = &lt;br /&gt;
| 友達 = * {{I|USA}}[[jpwp:アメリカ合衆国|アメリカ]]&lt;br /&gt;
* {{I|UKpb}}[[jpwp:イギリス|イギリス]]&lt;br /&gt;
* {{I|Canada}}[[jpwp:カナダ|カナダ]]&lt;br /&gt;
| 敵 = [[共産主義]]&lt;br /&gt;
| 過去 = &lt;br /&gt;
| 好きな物 = ハンバーガー、自由&lt;br /&gt;
| 嫌いな物 = 税金、共産主義&lt;br /&gt;
| 一人称 = ミー (Me)&lt;br /&gt;
| 呼ばれ方 = 自由なやつ&amp;lt;s&amp;gt;、資本主義の犬&amp;lt;/s&amp;gt;&lt;br /&gt;
| ボーク = Liberty liberty、Clay clay&lt;br /&gt;
| 性格 = 陽気&lt;br /&gt;
| 一言 = 我々に自由を！&lt;br /&gt;
| 党旗の変遷 = [[File:Old_flag.png|20px]]→[[File:Current_flag.png|20px]]&lt;br /&gt;
| 党旗の名前 = 自由の旗&lt;br /&gt;
| 現状 = ○○共和国の与党として活動中&lt;br /&gt;
| 標語 = すべてのボールに自由を！&lt;br /&gt;
| 党歌 = 自由の歌&lt;br /&gt;
| 党員人数 = 約 1,000,000 人&lt;br /&gt;
| 目標 = &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:Infoboxを使用したテンプレート]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E6%97%A5%E6%9C%AC%E5%85%B1%E7%94%A3%E5%85%9A&amp;diff=149</id>
		<title>日本共産党</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E6%97%A5%E6%9C%AC%E5%85%B1%E7%94%A3%E5%85%9A&amp;diff=149"/>
		<updated>2026-07-20T07:54:22Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;日本共産党&#039;&#039;&#039;（にほんきょうさんとう）は、日本の共産主義政党です。&lt;br /&gt;
&lt;br /&gt;
{{Infobox Party&lt;br /&gt;
| title = 日本共産党&lt;br /&gt;
| 現地名 = 日本語：日本共産党 (にほんきょうさんとう)&lt;br /&gt;
| founded = &lt;br /&gt;
| ended = &lt;br /&gt;
| onlypredecessor = &lt;br /&gt;
| predicon = &lt;br /&gt;
| predsuffix = &lt;br /&gt;
| onlysuccessor = &lt;br /&gt;
| nexticon = &lt;br /&gt;
| nextsuffix = &lt;br /&gt;
| onlypredecessor2 = &lt;br /&gt;
| predicon2 = &lt;br /&gt;
| onlysuccessor2 = &lt;br /&gt;
| nexticon2 = &lt;br /&gt;
| onlypredecessor3 = &lt;br /&gt;
| predicon3 = &lt;br /&gt;
| onlysuccessor3 = &lt;br /&gt;
| nexticon3 = &lt;br /&gt;
| onlypredecessor4 = &lt;br /&gt;
| predicon4 = &lt;br /&gt;
| onlysuccessor4 = &lt;br /&gt;
| image = &lt;br /&gt;
| caption = WE ARE 共産党!!&lt;br /&gt;
| イデオロギー = &lt;br /&gt;
| 所属 = &lt;br /&gt;
| 宗教 = &lt;br /&gt;
| 誕生日 = {{Start date and age|1922|7|15}}&amp;lt;br&amp;gt;（1945年12月に合法化）&lt;br /&gt;
| 命日 = &lt;br /&gt;
| 友達 = &lt;br /&gt;
| 仲間 = &lt;br /&gt;
| 敵 = &lt;br /&gt;
| 過去 = &lt;br /&gt;
| 未来 = &lt;br /&gt;
| 好きな物 = &lt;br /&gt;
| 嫌いな物 = &lt;br /&gt;
| 一人称 = &lt;br /&gt;
| 呼ばれ方 = &lt;br /&gt;
| ボーク = &lt;br /&gt;
| 性格 = &lt;br /&gt;
| 一言 = &lt;br /&gt;
| 党旗の変遷 = &lt;br /&gt;
| 党旗の名前 = &lt;br /&gt;
| 現状 = &lt;br /&gt;
| 標語 = &lt;br /&gt;
| 党歌 = &lt;br /&gt;
| 党員人数 = &lt;br /&gt;
| 目標 = &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E6%97%A5%E6%9C%AC%E5%85%B1%E7%94%A3%E5%85%9A&amp;diff=148</id>
		<title>日本共産党</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E6%97%A5%E6%9C%AC%E5%85%B1%E7%94%A3%E5%85%9A&amp;diff=148"/>
		<updated>2026-07-20T07:53:15Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;日本共産党&#039;&#039;&#039;（にほんきょうさんとう）は、日本の共産主義政党です。&lt;br /&gt;
&lt;br /&gt;
{{Infobox Party&lt;br /&gt;
| title = 日本共産党&lt;br /&gt;
| 現地名 = 日本語：日本共産党 (にほんきょうさんとう)&lt;br /&gt;
| founded = &lt;br /&gt;
| ended = &lt;br /&gt;
| onlypredecessor = &lt;br /&gt;
| predicon = &lt;br /&gt;
| predsuffix = &lt;br /&gt;
| onlysuccessor = &lt;br /&gt;
| nexticon = &lt;br /&gt;
| nextsuffix = &lt;br /&gt;
| onlypredecessor2 = &lt;br /&gt;
| predicon2 = &lt;br /&gt;
| onlysuccessor2 = &lt;br /&gt;
| nexticon2 = &lt;br /&gt;
| onlypredecessor3 = &lt;br /&gt;
| predicon3 = &lt;br /&gt;
| onlysuccessor3 = &lt;br /&gt;
| nexticon3 = &lt;br /&gt;
| onlypredecessor4 = &lt;br /&gt;
| predicon4 = &lt;br /&gt;
| onlysuccessor4 = &lt;br /&gt;
| image = &lt;br /&gt;
| caption = &lt;br /&gt;
| イデオロギー = &lt;br /&gt;
| 所属 = &lt;br /&gt;
| 宗教 = &lt;br /&gt;
| 誕生日 = {{Start date and age|1922|7|15}}&amp;lt;br&amp;gt;（1945年12月に合法化）&lt;br /&gt;
| 命日 = &lt;br /&gt;
| 友達 = &lt;br /&gt;
| 仲間 = &lt;br /&gt;
| 敵 = &lt;br /&gt;
| 過去 = &lt;br /&gt;
| 未来 = &lt;br /&gt;
| 好きな物 = &lt;br /&gt;
| 嫌いな物 = &lt;br /&gt;
| 一人称 = &lt;br /&gt;
| 呼ばれ方 = &lt;br /&gt;
| ボーク = &lt;br /&gt;
| 性格 = &lt;br /&gt;
| 一言 = &lt;br /&gt;
| 党旗の変遷 = &lt;br /&gt;
| 党旗の名前 = &lt;br /&gt;
| 現状 = &lt;br /&gt;
| 標語 = &lt;br /&gt;
| 党歌 = &lt;br /&gt;
| 党員人数 = &lt;br /&gt;
| 目標 = &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Party/doc&amp;diff=147</id>
		<title>テンプレート:Infobox Party/doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Party/doc&amp;diff=147"/>
		<updated>2026-07-20T07:51:41Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Documentation subpage}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
ポリティボールの情報を表示するテンプレートを、[https://japolandball.miraheze.org/wiki/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Countryballs 日本語版PBWikiのもの]に寄せたものになります。一部引数は英語のままですが、そこは適切でない入力をするとテンプレートが上手く機能しないため、必要な引数を追加しながら一つずつ変更して使用してください。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Infobox Party&lt;br /&gt;
|title = &lt;br /&gt;
|現地名 = &lt;br /&gt;
|founded = &lt;br /&gt;
|ended = &lt;br /&gt;
|年代情報 = &lt;br /&gt;
|onlypredecessor = &lt;br /&gt;
|predicon = &lt;br /&gt;
|predsuffix = &lt;br /&gt;
|onlysuccessor = &lt;br /&gt;
|nexticon = &lt;br /&gt;
|nextsuffix = &lt;br /&gt;
|onlypredecessor2 = &lt;br /&gt;
|predicon2 = &lt;br /&gt;
|onlysuccessor2 = &lt;br /&gt;
|nexticon2 = &lt;br /&gt;
|onlypredecessor3 = &lt;br /&gt;
|predicon3 = &lt;br /&gt;
|onlysuccessor3 = &lt;br /&gt;
|nexticon3 = &lt;br /&gt;
|onlypredecessor4 = &lt;br /&gt;
|predicon4 = &lt;br /&gt;
|onlysuccessor4 = &lt;br /&gt;
|nexticon4 = &lt;br /&gt;
|image = &lt;br /&gt;
|caption = &lt;br /&gt;
|イデオロギー = &lt;br /&gt;
|所属 = &lt;br /&gt;
|宗教 = &lt;br /&gt;
|誕生日 = &lt;br /&gt;
|命日 = &lt;br /&gt;
|友達 = &lt;br /&gt;
|敵 = &lt;br /&gt;
|過去 = &lt;br /&gt;
|未来 = &lt;br /&gt;
|好きな物 = &lt;br /&gt;
|嫌いな物 = &lt;br /&gt;
|一人称 = &lt;br /&gt;
|呼ばれ方 = &lt;br /&gt;
|ボーク = &lt;br /&gt;
|性格 = &lt;br /&gt;
|一言 = &lt;br /&gt;
|党旗の変遷 = &lt;br /&gt;
|党旗の名前 = &lt;br /&gt;
|現状 = &lt;br /&gt;
|標語 = &lt;br /&gt;
|党歌 = &lt;br /&gt;
|党員人数 = &lt;br /&gt;
|目標 = &lt;br /&gt;
|notes = &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:Infoboxを使用したテンプレート]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E6%97%A5%E6%9C%AC%E5%85%B1%E7%94%A3%E5%85%9A&amp;diff=142</id>
		<title>日本共産党</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E6%97%A5%E6%9C%AC%E5%85%B1%E7%94%A3%E5%85%9A&amp;diff=142"/>
		<updated>2026-07-20T07:42:08Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;日本共産党&#039;&#039;&#039;（にほんきょうさんとう）は、日本の共産主義政党です。&lt;br /&gt;
&lt;br /&gt;
{{Infobox Party&lt;br /&gt;
| title = 日本共産党&lt;br /&gt;
| 現地名 = 日本語：日本共産党 (にほんきょうさんとう)&lt;br /&gt;
| founded = 1922/1945&lt;br /&gt;
| ended = &lt;br /&gt;
| onlypredecessor = &lt;br /&gt;
| predicon = &lt;br /&gt;
| predsuffix = &lt;br /&gt;
| onlysuccessor = &lt;br /&gt;
| nexticon = &lt;br /&gt;
| nextsuffix = &lt;br /&gt;
| 未来 = &lt;br /&gt;
| onlypredecessor2 = &lt;br /&gt;
| predicon2 = &lt;br /&gt;
| onlysuccessor2 = &lt;br /&gt;
| nexticon2 = &lt;br /&gt;
| onlypredecessor3 = &lt;br /&gt;
| predicon3 = &lt;br /&gt;
| onlysuccessor3 = &lt;br /&gt;
| nexticon3 = &lt;br /&gt;
| onlypredecessor4 = &lt;br /&gt;
| predicon4 = &lt;br /&gt;
| onlysuccessor4 = &lt;br /&gt;
| image = &lt;br /&gt;
| caption = WE ARE 共産党!!&lt;br /&gt;
| イデオロギー = {{I|Communism}}[[共産主義]]&lt;br /&gt;
| 所属 = [[共産党・労働者党国際会議]]&lt;br /&gt;
| 宗教 = &lt;br /&gt;
| 誕生日 = &lt;br /&gt;
| 命日 = &lt;br /&gt;
| 友達 = &lt;br /&gt;
| 仲間 = &lt;br /&gt;
| 敵 = &lt;br /&gt;
| 過去 = &lt;br /&gt;
| 好きな物 = &lt;br /&gt;
| 嫌いな物 = &lt;br /&gt;
| 一人称 = &lt;br /&gt;
| 呼ばれ方 = &lt;br /&gt;
| ボーク = &lt;br /&gt;
| 性格 = &lt;br /&gt;
| 一言 = &lt;br /&gt;
| 党旗の変遷 = &lt;br /&gt;
| 党旗の名前 = &lt;br /&gt;
| 現状 = &lt;br /&gt;
| 標語 = &lt;br /&gt;
| 党歌 = &lt;br /&gt;
| 党員人数 = &lt;br /&gt;
| 目標 = &lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Party/doc&amp;diff=141</id>
		<title>テンプレート:Infobox Party/doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Party/doc&amp;diff=141"/>
		<updated>2026-07-20T07:22:38Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Documentation subpage}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
ポリティボールの情報を表示するテンプレートを、[https://japolandball.miraheze.org/wiki/%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Infobox_Countryballs 日本語版PBWikiのもの]に寄せたものになります。一部引数は英語のままですが、そこは適切でない入力をするとテンプレートが上手く機能しないため、必要な引数を追加しながら一つずつ変更して使用してください。&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{Infobox countryball&lt;br /&gt;
|title = &lt;br /&gt;
|現地名 = &lt;br /&gt;
|founded = &lt;br /&gt;
|ended = &lt;br /&gt;
|年代情報 = &lt;br /&gt;
|onlypredecessor = &lt;br /&gt;
|predicon = &lt;br /&gt;
|predsuffix = &lt;br /&gt;
|onlysuccessor = &lt;br /&gt;
|nexticon = &lt;br /&gt;
|nextsuffix = &lt;br /&gt;
|onlypredecessor2 = &lt;br /&gt;
|predicon2 = &lt;br /&gt;
|onlysuccessor2 = &lt;br /&gt;
|nexticon2 = &lt;br /&gt;
|onlypredecessor3 = &lt;br /&gt;
|predicon3 = &lt;br /&gt;
|onlysuccessor3 = &lt;br /&gt;
|nexticon3 = &lt;br /&gt;
|onlypredecessor4 = &lt;br /&gt;
|predicon4 = &lt;br /&gt;
|onlysuccessor4 = &lt;br /&gt;
|nexticon4 = &lt;br /&gt;
|image = &lt;br /&gt;
|caption = &lt;br /&gt;
|イデオロギー = &lt;br /&gt;
|所属 = &lt;br /&gt;
|宗教 = &lt;br /&gt;
|誕生日 = &lt;br /&gt;
|命日 = &lt;br /&gt;
|友達 = &lt;br /&gt;
|敵 = &lt;br /&gt;
|過去 = &lt;br /&gt;
|未来 = &lt;br /&gt;
|好きな物 = &lt;br /&gt;
|嫌いな物 = &lt;br /&gt;
|一人称 = &lt;br /&gt;
|呼ばれ方 = &lt;br /&gt;
|ボーク = &lt;br /&gt;
|性格 = &lt;br /&gt;
|一言 = &lt;br /&gt;
|党旗の変遷 = &lt;br /&gt;
|党旗の名前 = &lt;br /&gt;
|現状 = &lt;br /&gt;
|標語 = &lt;br /&gt;
|党歌 = &lt;br /&gt;
|党員人数 = &lt;br /&gt;
|目標 = &lt;br /&gt;
|notes = &lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category:Infoboxを使用したテンプレート]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Sidebar/doc&amp;diff=140</id>
		<title>テンプレート:Sidebar/doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Sidebar/doc&amp;diff=140"/>
		<updated>2026-07-20T07:07:19Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「&amp;lt;noinclude&amp;gt;{{Documentation subpage}}&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{使用箇所の多いテンプレート|8,000以上}} {{Template display|nomobile}} {{Lua|モジュール:Sidebar}} &amp;lt;/includeonly&amp;gt; 縦に表示するナビゲーションテンプレートを作成するためのメタテンプレートです。  == 基本的な使用法 == {{Sidebar | name = {{PAGENAME}} | outertitle = {{{outertitle}}} | topimage = {{{topimage}}} | topcaption = {{{topcaption}}} | pretit…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{Documentation subpage}}&amp;lt;/noinclude&amp;gt;&amp;lt;includeonly&amp;gt;{{使用箇所の多いテンプレート|8,000以上}}&lt;br /&gt;
{{Template display|nomobile}}&lt;br /&gt;
{{Lua|モジュール:Sidebar}}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
縦に表示するナビゲーションテンプレートを作成するためのメタテンプレートです。&lt;br /&gt;
&lt;br /&gt;
== 基本的な使用法 ==&lt;br /&gt;
{{Sidebar&lt;br /&gt;
| name = {{PAGENAME}}&lt;br /&gt;
| outertitle = {{{outertitle}}}&lt;br /&gt;
| topimage = {{{topimage}}}&lt;br /&gt;
| topcaption = {{{topcaption}}}&lt;br /&gt;
| pretitle = {{{pretitle}}}&lt;br /&gt;
| title = {{{title}}}&lt;br /&gt;
| image = {{{image}}}&lt;br /&gt;
| above = {{{above}}}&lt;br /&gt;
| heading1 = {{{heading1}}}&lt;br /&gt;
| content1 = {{{content1}}}&lt;br /&gt;
| heading2 = {{{heading2}}}&lt;br /&gt;
| content2 = {{{content2}}}&lt;br /&gt;
| heading3 = {{{heading3}}}&lt;br /&gt;
| content3 = {{{content3}}}&lt;br /&gt;
| content4 = ... up to 35th ...&lt;br /&gt;
| heading35 = {{{heading35}}}&lt;br /&gt;
| content35 = {{{content35}}}&lt;br /&gt;
| below = {{{below}}}&lt;br /&gt;
}}&lt;br /&gt;
あまり使われないパラメーターは除外&lt;br /&gt;
&amp;lt;pre style=&amp;quot;font-size:95%; overflow:auto;&amp;quot;&amp;gt;&lt;br /&gt;
{{Sidebar&lt;br /&gt;
| name = {{subst:PAGENAME}}&lt;br /&gt;
| outertitle = &lt;br /&gt;
| topimage = &lt;br /&gt;
| pretitle = &lt;br /&gt;
| title = &lt;br /&gt;
| image = &lt;br /&gt;
&lt;br /&gt;
| headingstyle = &lt;br /&gt;
| contentstyle = &lt;br /&gt;
&lt;br /&gt;
| heading1 = &lt;br /&gt;
| content1 = &lt;br /&gt;
&lt;br /&gt;
| heading2 = &lt;br /&gt;
| content2 = &lt;br /&gt;
&lt;br /&gt;
| heading3 = &lt;br /&gt;
| content3 = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--...up to 35th:--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
| heading35 = &lt;br /&gt;
| content35 = &lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== パラメーター ==&lt;br /&gt;
{{tl|navbar}}リンク(表・話・編)がサイドバー基底部に現れなければ、パラメーターは必要とされませんが、現れる場合、{{para|name}}パラメーターが必要です （すぐに以下のテーブルでエントリーを見てください)。&lt;br /&gt;
&lt;br /&gt;
=== 主要なもの ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;line-height: 1.4em;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 7.0em;&amp;quot; | パラメーター !! 説明&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|name}}&lt;br /&gt;
| サイドバー名、すなわちページ名においてTemplate:に続く名前。サイドバーの基底部に正確に機能する{{tl|navbar}}のリンクのために必要。このフィールドには&amp;lt;nowiki&amp;gt;{{subst:PAGENAME}}&amp;lt;/nowiki&amp;gt;を使用することがおすすめされます。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|outertitle}}&lt;br /&gt;
| サイドバーのすぐ上にサイドバーのタイトルを置くために使用。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|topimage}}&lt;br /&gt;
| サイドバーの上部に画像を置くために使用。すなわち含まれるどんな{{para|title}}よりも上部。&amp;lt;br /&amp;gt;&lt;br /&gt;
完全なウィキ構文が予期されます(すなわち、&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[File:...]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)。&amp;lt;br /&amp;gt;&lt;br /&gt;
画像下部に表題を追加するには、{{para|topcaption}}を使用。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|pretitle}}&lt;br /&gt;
| タイトルの前に「&#039;&#039;X&#039;&#039;シリーズの一部」などの行を置くのに使用。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|title}}&lt;br /&gt;
| サイドバー上部にサイドバーのタイトルを置くのに使用(使われる場合、{{para|topimage}}のすぐ下)。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|image}}&lt;br /&gt;
| (使われる場合){{para|title}}と第一節の間に画像を置くのに使用。&amp;lt;br /&amp;gt;&lt;br /&gt;
{{para|topimage}}と同じく、完全なwiki構文が予期される (すなわち、&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;[[File:...]]&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)。&amp;lt;br /&amp;gt;&lt;br /&gt;
画像下部に表題を追加するには、{{para|caption}}を使用。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|headingstyle}}&lt;br /&gt;
| 節の見出しにセットされるデフォルトの[[:en:Help:Cascading Style Sheets|CSS]]スタイルを修正するのに使用。&amp;lt;br /&amp;gt;&lt;br /&gt;
特定の節の見出しのCSSスタイルの修正には、{{para|heading&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;style}}を使用。&#039;&#039;n&#039;&#039;は節の番号です。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|contentstyle}}&lt;br /&gt;
| 節の内容にセットされるデフォルトのCSSスタイルを修正するのに使用。&amp;lt;br /&amp;gt;&lt;br /&gt;
特定の節の内容のCSSスタイルの修正には, {{para|content&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;style}}を使用。&#039;&#039;n&#039;&#039;は節の番号です。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|heading1}} || 最初の節の見出し (必要であれば)。&lt;br /&gt;
|-&lt;br /&gt;
| {{para|&#039;&#039;&#039;content1&#039;&#039;&#039;}} || 最初の節の内容 (必須)。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|heading2}} || 第二節の見出し (必要であれば)。&lt;br /&gt;
|-&lt;br /&gt;
| {{para|content2}} || 第二節の内容 (必要であれば)。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|heading3}} || 第三節の見出し (必要であれば)。&lt;br /&gt;
|-&lt;br /&gt;
| {{para|content3}} || 第三節の内容 (必要であれば)。&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | ...... 略 ......&lt;br /&gt;
|-&lt;br /&gt;
| {{para|heading35}} || rowspan=&amp;quot;2&amp;quot; | 現在、最後の可能な節の見出しと内容 (必要であれば)。&lt;br /&gt;
|-&lt;br /&gt;
| {{para|content35}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 諸パラメーター ===&lt;br /&gt;
{| class=&amp;quot;wikitable plainlist&amp;quot; style=&amp;quot;line-height: 1.4em;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width: 10.0em;&amp;quot; |パラメーター !! 説明&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|above}}&lt;br /&gt;
| {{tl|navbox}}が提供する{{para|above}}に対応する。&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
*{{para|bodyclass}} (または{{para|class}})&lt;br /&gt;
*{{para|outertitleclass}}&lt;br /&gt;
*{{para|topimageclass}}&lt;br /&gt;
*{{para|pretitleclass}}&lt;br /&gt;
*{{para|titleclass}}&lt;br /&gt;
*{{para|imageclass}}&lt;br /&gt;
*{{para|aboveclass}}&lt;br /&gt;
*{{para|headingclass}}&lt;br /&gt;
*{{para|contentclass}}&lt;br /&gt;
*{{para|belowclass}}&lt;br /&gt;
|&lt;br /&gt;
一致するパラメーターへの[[:en:Wikipedia:WikiProject Microformats#What are microformats?|マイクロフォーマット]]のクラス&amp;lt;br /&amp;gt;&lt;br /&gt;
({{para|bodyclass}} (または{{para|class}})は全体としてサイドバーに適用される。)&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|below}}&lt;br /&gt;
| 例えば、テンプレートの基底部に１つ以上のポータルリンクを追加するのに使用 (既定では太文字)。&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
*{{para|bodystyle}} (または{{para|style}})&lt;br /&gt;
*{{para|outertitlestyle}}&lt;br /&gt;
*{{para|topimagestyle}}&lt;br /&gt;
*{{para|topcaptionstyle}}&lt;br /&gt;
*{{para|pretitlestyle}}&lt;br /&gt;
*{{para|titlestyle}}&lt;br /&gt;
*{{para|imagestyle}}&lt;br /&gt;
*{{para|captionstyle}}&lt;br /&gt;
*{{para|abovestyle}}&lt;br /&gt;
*{{para|headingstyle}}&lt;br /&gt;
*{{para|heading&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;style}}&lt;br /&gt;
*{{para|contentstyle}}&lt;br /&gt;
*{{para|content&amp;lt;sub&amp;gt;n&amp;lt;/sub&amp;gt;style}}&lt;br /&gt;
*{{para|belowstyle}}&lt;br /&gt;
*{{para|navbarstyle}} (または{{para|tnavbarstyle}})&lt;br /&gt;
|&lt;br /&gt;
一致するパラメーターのデフォルトの[[:en:Help:Cascading Style Sheets|CSS]]スタイルを修正するのに使用。&amp;lt;br /&amp;gt;&lt;br /&gt;
({{para|bodystyle}} (または{{para|style}})は全体としてサイドバーに適用されます。)&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|cellspacing}}&lt;br /&gt;
| サイドバーにビルドされたinfoboxクラスのテーブルにセットされたデフォルトのセルスペーシングを修正するのに使用。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|cellpadding}}&lt;br /&gt;
| Ditto the default cellpadding.&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|navbar}} (or {{para|tnavbar}})&lt;br /&gt;
| (カギカッコ抜きで)「none」に設定すると、サイドバー基底部にあるナビゲーションバーのリンクを削除します。&lt;br /&gt;
|- style=&amp;quot;vertical-align: top;&amp;quot;&lt;br /&gt;
| {{para|navbarfontstyle}} (または {{para|tnavbarfontstyle}})&lt;br /&gt;
| サイドバー基底部のnavbar が使用するフォントスタイルを明示するのに使用 (使用できるオプションは{{tl|navbar}}を参照)。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 長いリンクの制御 ==&lt;br /&gt;
{{tl|Normalwraplink}}はサイドバー内でラップするべき、さもなければサイドバーが幅広になりすぎないようにラップするようにする必要があるリンクを制御するために、使用できます。{{tlx|normalwraplink|&#039;&#039;longlinkname&#039;&#039;}}を使用します。{{para||&#039;&#039;longlinkname&#039;&#039;}}は角括弧なしの長いリンクです。&lt;br /&gt;
&lt;br /&gt;
{{para|wraplinks|true}}パラメーターを使用すると、テンプレート全体のためにリンクのラッピングをオフにします。&lt;br /&gt;
&lt;br /&gt;
== 完全な構文 ==&lt;br /&gt;
&amp;lt;pre&amp;gt;{{Sidebar&lt;br /&gt;
|name  = &lt;br /&gt;
|class =        &amp;lt;!--or bodyclass--&amp;gt;&lt;br /&gt;
|style =        &amp;lt;!--or bodystyle--&amp;gt;&lt;br /&gt;
|cellspacing = &lt;br /&gt;
|cellpadding = &lt;br /&gt;
|sectdivider = &lt;br /&gt;
&lt;br /&gt;
|outertitle = &lt;br /&gt;
|outertitleclass = &lt;br /&gt;
|outertitlestyle = &lt;br /&gt;
&lt;br /&gt;
|topimage = &lt;br /&gt;
|topimageclass = &lt;br /&gt;
|topimagestyle = &lt;br /&gt;
|topcaption = &lt;br /&gt;
|topcaptionstyle = &lt;br /&gt;
&lt;br /&gt;
|pretitle =&lt;br /&gt;
|pretitlestyle = &lt;br /&gt;
&lt;br /&gt;
|title = &lt;br /&gt;
|titleclass = &lt;br /&gt;
|titlestyle = &lt;br /&gt;
&lt;br /&gt;
|image = &lt;br /&gt;
|imageclass = &lt;br /&gt;
|imagestyle = &lt;br /&gt;
|caption = &lt;br /&gt;
|captionstyle = &lt;br /&gt;
&lt;br /&gt;
|abovestyle = &lt;br /&gt;
|above = &lt;br /&gt;
&lt;br /&gt;
|headingstyle = &lt;br /&gt;
|contentstyle = &lt;br /&gt;
&lt;br /&gt;
|heading1style = &lt;br /&gt;
|heading1 = &lt;br /&gt;
|content1style = &lt;br /&gt;
|content1 = &lt;br /&gt;
&lt;br /&gt;
|heading2style = &lt;br /&gt;
|heading2 = &lt;br /&gt;
|content2style = &lt;br /&gt;
|content2 = &lt;br /&gt;
&lt;br /&gt;
|heading3style = &lt;br /&gt;
|heading3 = &lt;br /&gt;
|content3style = &lt;br /&gt;
|content3 = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--etc.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|heading35style = &lt;br /&gt;
|heading35 = &lt;br /&gt;
|content35style = &lt;br /&gt;
|content35 = &lt;br /&gt;
&lt;br /&gt;
|belowstyle = &lt;br /&gt;
|below = &lt;br /&gt;
&lt;br /&gt;
|navbar = &lt;br /&gt;
|navbarstyle = &lt;br /&gt;
|navbaroptions = &lt;br /&gt;
&lt;br /&gt;
|wraplinks = true/false&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[Template:Sidebar with dividers]]&lt;br /&gt;
* [[Template:Sidebar with heading backgrounds]]&lt;br /&gt;
* [[Template:Sidebar with collapsible lists]]&lt;br /&gt;
* [[Template:Physics navigation]]&lt;br /&gt;
* [[WP:HLIST]]&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
[[Category:メタテンプレート|Sidebar]]&lt;br /&gt;
[[Category:ナビゲーションテンプレート|*]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Sidebar&amp;diff=139</id>
		<title>テンプレート:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Sidebar&amp;diff=139"/>
		<updated>2026-07-20T07:06:39Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「&amp;lt;includeonly&amp;gt;{{#invoke:Sidebar|sidebar}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{documentation}}&amp;lt;!-- Please add categories and interwikis to the bottom of Template:Sidebar/doc, not here --&amp;gt;&amp;lt;/noinclude&amp;gt;」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Sidebar|sidebar}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;{{documentation}}&amp;lt;!-- Please add categories and interwikis to the bottom of Template:Sidebar/doc, not here --&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Wikidata&amp;diff=138</id>
		<title>モジュール:Wikidata</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Wikidata&amp;diff=138"/>
		<updated>2026-07-20T07:05:47Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「local p = {}  function p.claim(frame)     local entity = frame.args.entity or mw.wikibase.getEntityIdForCurrentPage()     local property = frame.args.property      if not entity then         return &amp;quot;error0&amp;quot;     end     if not property then         return &amp;quot;error1&amp;quot;     end      local entityTable = mw.wikibase.getEntity(entity)     if not entityTable or not entityTable.claims or not entityTable.claims[property] then         return &amp;quot;error2&amp;quot;     end      local claim = en…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.claim(frame)&lt;br /&gt;
    local entity = frame.args.entity or mw.wikibase.getEntityIdForCurrentPage()&lt;br /&gt;
    local property = frame.args.property&lt;br /&gt;
&lt;br /&gt;
    if not entity then&lt;br /&gt;
        return &amp;quot;error0&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    if not property then&lt;br /&gt;
        return &amp;quot;error1&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local entityTable = mw.wikibase.getEntity(entity)&lt;br /&gt;
    if not entityTable or not entityTable.claims or not entityTable.claims[property] then&lt;br /&gt;
        return &amp;quot;error2&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local claim = entityTable.claims[property][1]&lt;br /&gt;
    if claim.mainsnak and claim.mainsnak.datavalue then&lt;br /&gt;
        return claim.mainsnak.datavalue.value.amount or &amp;quot;error3&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return &amp;quot;データが取得できません。&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Uses_TemplateStyles&amp;diff=137</id>
		<title>モジュール:Uses TemplateStyles</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Uses_TemplateStyles&amp;diff=137"/>
		<updated>2026-07-20T07:05:12Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「-- This module implements the {{Uses TemplateStyles}} template. local yesno = require(&amp;#039;Module:Yesno&amp;#039;) local mList = require(&amp;#039;Module:List&amp;#039;) local mTableTools = require(&amp;#039;Module:TableTools&amp;#039;) local mMessageBox = require(&amp;#039;Module:Message box&amp;#039;)  local p = {}  function p.main(frame) 	local origArgs = frame:getParent().args 	local args = {} 	for k, v in pairs(origArgs) do 		v = v:match(&amp;#039;^%s*(.-)%s*$&amp;#039;) 		if v ~= &amp;#039;&amp;#039; then 			args[k] = v 		end 	end 	return p._main(args) end  fun…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements the {{Uses TemplateStyles}} template.&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local mList = require(&#039;Module:List&#039;)&lt;br /&gt;
local mTableTools = require(&#039;Module:TableTools&#039;)&lt;br /&gt;
local mMessageBox = require(&#039;Module:Message box&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local origArgs = frame:getParent().args&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(origArgs) do&lt;br /&gt;
		v = v:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if v ~= &#039;&#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p._main(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(args)&lt;br /&gt;
	local tStyles = mTableTools.compressSparseArray(args)&lt;br /&gt;
	local box = p.renderBox(tStyles)&lt;br /&gt;
	local trackingCategories = p.renderTrackingCategories(args, tStyles)&lt;br /&gt;
	return box .. trackingCategories&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderBox(tStyles)&lt;br /&gt;
	local boxArgs = {}&lt;br /&gt;
	if #tStyles &amp;lt; 1 then&lt;br /&gt;
		boxArgs.text = &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;エラー: TemplateStylesが指定されていません&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
	else&lt;br /&gt;
		local tStylesLinks = {}&lt;br /&gt;
		for i, ts in ipairs(tStyles) do&lt;br /&gt;
			local sandboxLink = nil&lt;br /&gt;
			local tsTitle = mw.title.new(ts)&lt;br /&gt;
			if tsTitle then&lt;br /&gt;
				local tsSandboxTitle = mw.title.new(string.format(&#039;%s:%s/sandbox/%s&#039;, tsTitle.nsText, tsTitle.baseText, tsTitle.subpageText))&lt;br /&gt;
				if tsSandboxTitle and tsSandboxTitle.exists then&lt;br /&gt;
					sandboxLink = string.format(&#039; ([[:%s|サンドボックス]])&#039;, tsSandboxTitle.prefixedText)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			tStylesLinks[i] = string.format(&#039;[[:%s]]%s&#039;, ts, sandboxLink or &#039;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		local tStylesList = mList.makeList(&#039;bulleted&#039;, tStylesLinks)&lt;br /&gt;
		boxArgs.text = &#039;この&#039; .. &lt;br /&gt;
			(mw.title.getCurrentTitle():inNamespaces(828,829) and &#039;モジュール&#039; or &#039;テンプレート&#039;) ..&lt;br /&gt;
			&#039;は[[mw:Help:TemplateStyles/ja|テンプレートスタイル]]を使用しています:\n&#039; .. tStylesList&lt;br /&gt;
	end&lt;br /&gt;
	boxArgs.type = &#039;notice&#039;&lt;br /&gt;
	boxArgs.small = true&lt;br /&gt;
	boxArgs.image = &#039;[[File:Farm-Fresh css add.svg|32px|alt=CSS]]&#039;&lt;br /&gt;
	return mMessageBox.main(&#039;mbox&#039;, boxArgs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.renderTrackingCategories(args, tStyles, titleObj)&lt;br /&gt;
	if yesno(args.nocat) then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	&lt;br /&gt;
	-- Error category&lt;br /&gt;
	if #tStyles &amp;lt; 1 then&lt;br /&gt;
		cats[#cats + 1] = &#039;テンプレート呼び出しエラーのあるページ/Template:Uses TemplateStyles&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- TemplateStyles category&lt;br /&gt;
	titleObj = titleObj or mw.title.getCurrentTitle()&lt;br /&gt;
	local subpageBlacklist = {&lt;br /&gt;
		doc = true,&lt;br /&gt;
		sandbox = true,&lt;br /&gt;
		sandbox2 = true,&lt;br /&gt;
		testcases = true&lt;br /&gt;
	}&lt;br /&gt;
	if (titleObj.namespace == 10 or titleObj.namespace == 828)&lt;br /&gt;
		and not subpageBlacklist[titleObj.subpageText]&lt;br /&gt;
	then&lt;br /&gt;
		local category = args.category&lt;br /&gt;
		if not category then&lt;br /&gt;
			category = category or &#039;テンプレートスタイルを利用するテンプレート&#039;&lt;br /&gt;
		end&lt;br /&gt;
		cats[#cats + 1] = category&lt;br /&gt;
		if not yesno(args.noprotcat) then&lt;br /&gt;
			local currentProt = titleObj.protectionLevels[&amp;quot;edit&amp;quot;] and titleObj.protectionLevels[&amp;quot;edit&amp;quot;][1] or nil&lt;br /&gt;
			local addedLevelCat = false&lt;br /&gt;
			local addedPadlockCat = false&lt;br /&gt;
			for i, ts in ipairs(tStyles) do&lt;br /&gt;
				local tsTitleObj = mw.title.new(ts)&lt;br /&gt;
				local tsProt = tsTitleObj.protectionLevels[&amp;quot;edit&amp;quot;] and tsTitleObj.protectionLevels[&amp;quot;edit&amp;quot;][1] or nil&lt;br /&gt;
				if tsProt ~= currentProt and not addedLevelCat then&lt;br /&gt;
					cats[#cats + 1] = &amp;quot;異なる保護レベルがあるテンプレートスタイル使用テンプレート&amp;quot;&lt;br /&gt;
				end&lt;br /&gt;
				if tsProt and not addedPadlockCat then&lt;br /&gt;
					local content = tsTitleObj:getContent()&lt;br /&gt;
					if not content:find(&amp;quot;{{pp-&amp;quot;) then&lt;br /&gt;
						cats[#cats + 1] = &amp;quot;保護表示がないテンプレートスタイル使用テンプレート&amp;quot;&lt;br /&gt;
						addedPadlockCat = true&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for i, cat in ipairs(cats) do&lt;br /&gt;
		cats[i] = string.format(&#039;[[Category:%s]]&#039;, cat)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(cats)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Userbox/doc&amp;diff=136</id>
		<title>モジュール:Userbox/doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Userbox/doc&amp;diff=136"/>
		<updated>2026-07-20T07:04:23Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「[https://ja.wikipedia.org/wiki/%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Userbox これ]をコピペしたものになります。ユーザーボックスの表示に使えるらしいです。 ユーザーボックスを使用したい場合、これを呼び出してください。使い方もこちらを参照してください。」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://ja.wikipedia.org/wiki/%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Userbox これ]をコピペしたものになります。ユーザーボックスの表示に使えるらしいです。&lt;br /&gt;
ユーザーボックスを使用したい場合、[[テンプレート:Userbox|これ]]を呼び出してください。使い方もこちらを参照してください。&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Userbox&amp;diff=135</id>
		<title>モジュール:Userbox</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Userbox&amp;diff=135"/>
		<updated>2026-07-20T07:03:29Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「-- This module implements {{userbox}}.  local categoryHandler = require(&amp;#039;Module:Category handler&amp;#039;).main  local p = {}  -------------------------------------------------------------------------------- -- Helper functions --------------------------------------------------------------------------------  local function checkNum(val, default) 	-- Checks whether a value is a number greater than or equal to zero. If so, 	-- returns it as a number. If not, returns a default…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{userbox}}.&lt;br /&gt;
&lt;br /&gt;
local categoryHandler = require(&#039;Module:Category handler&#039;).main&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function checkNum(val, default)&lt;br /&gt;
	-- Checks whether a value is a number greater than or equal to zero. If so,&lt;br /&gt;
	-- returns it as a number. If not, returns a default value.&lt;br /&gt;
	val = tonumber(val)&lt;br /&gt;
	if val and val &amp;gt;= 0 then&lt;br /&gt;
		return val&lt;br /&gt;
	else&lt;br /&gt;
		return default&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function addSuffix(num, suffix)&lt;br /&gt;
	-- Turns a number into a string and adds a suffix.&lt;br /&gt;
	if num then&lt;br /&gt;
		return tostring(num) .. suffix&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function checkNumAndAddSuffix(num, default, suffix)&lt;br /&gt;
	-- Checks a value with checkNum and adds a suffix.&lt;br /&gt;
	num = checkNum(num, default)&lt;br /&gt;
	return addSuffix(num, suffix)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeCat(cat, sort)&lt;br /&gt;
	-- Makes a category link.&lt;br /&gt;
	if sort then&lt;br /&gt;
		return mw.ustring.format(&#039;[[Category:%s|%s]]&#039;, cat, sort)&lt;br /&gt;
	else&lt;br /&gt;
		return mw.ustring.format(&#039;[[Category:%s]]&#039;, cat)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Argument processing&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(funcName)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local origArgs = require(&#039;Module:Arguments&#039;).getArgs(frame)&lt;br /&gt;
		local args = {}&lt;br /&gt;
		for k, v in pairs(origArgs) do&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
		return p.main(funcName, args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.userbox = makeInvokeFunc(&#039;_userbox&#039;)&lt;br /&gt;
p[&#039;userbox-2&#039;] = makeInvokeFunc(&#039;_userbox-2&#039;)&lt;br /&gt;
p[&#039;userbox-r&#039;] = makeInvokeFunc(&#039;_userbox-r&#039;)&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Main functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function p.main(funcName, args)&lt;br /&gt;
	local userboxData = p[funcName](args)&lt;br /&gt;
	local userbox = p.render(userboxData)&lt;br /&gt;
	local cats = p.categories(args)&lt;br /&gt;
	return userbox .. (cats or &#039;&#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._userbox(args)&lt;br /&gt;
	-- Does argument processing for {{userbox}}.&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	-- Get div tag values.&lt;br /&gt;
	data.float = args.float or &#039;left&#039;&lt;br /&gt;
	local borderWidthNum = checkNum(args[&#039;border-width&#039;] or args[&#039;border-s&#039;], 1) -- Used to calculate width.&lt;br /&gt;
	data.borderWidth = addSuffix(borderWidthNum, &#039;px&#039;)&lt;br /&gt;
	data.borderColor = args[&#039;border-color&#039;] or args[&#039;border-c&#039;] or args[1] or args[&#039;id-c&#039;] or &#039;#999&#039;&lt;br /&gt;
	data.width = addSuffix(240 - 2 * borderWidthNum, &#039;px&#039;) -- Also used in the table tag.&lt;br /&gt;
	data.bodyClass = args.bodyclass&lt;br /&gt;
&lt;br /&gt;
	-- Get table tag values.&lt;br /&gt;
	data.backgroundColor = args[&#039;info-background&#039;] or args[2] or args[&#039;info-c&#039;] or &#039;#eee&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Get info values.&lt;br /&gt;
	data.info = args.info or args[4] or &amp;quot;&amp;lt;code&amp;gt;{{{info}}}&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
	data.infoTextAlign = args[&#039;info-a&#039;] or &#039;left&#039;&lt;br /&gt;
	data.infoFontSize = checkNumAndAddSuffix(args[&#039;info-size&#039;] or args[&#039;info-s&#039;], 8, &#039;pt&#039;)&lt;br /&gt;
	data.infoHeight = checkNumAndAddSuffix(args[&#039;logo-height&#039;] or args[&#039;id-h&#039;], 45, &#039;px&#039;)&lt;br /&gt;
	data.infoPadding = args[&#039;info-padding&#039;] or args[&#039;info-p&#039;] or &#039;0 4px 0 4px&#039;&lt;br /&gt;
	data.infoLineHeight = args[&#039;info-line-height&#039;] or args[&#039;info-lh&#039;] or &#039;1.25em&#039;&lt;br /&gt;
	data.infoColor = args[&#039;info-color&#039;] or args[&#039;info-fc&#039;] or &#039;black&#039;&lt;br /&gt;
	data.infoOtherParams = args[&#039;info-other-param&#039;] or args[&#039;info-op&#039;]&lt;br /&gt;
	data.infoClass = args[&#039;info-class&#039;]&lt;br /&gt;
&lt;br /&gt;
	-- Get id values.&lt;br /&gt;
	local id = args.logo or args[3] or args.id&lt;br /&gt;
	data.id = id&lt;br /&gt;
	data.showId = id and true or false&lt;br /&gt;
	data.idWidth = checkNumAndAddSuffix(args[&#039;logo-width&#039;] or args[&#039;id-w&#039;], 45, &#039;px&#039;)&lt;br /&gt;
	data.idHeight = checkNumAndAddSuffix(args[&#039;logo-height&#039;] or args[&#039;id-h&#039;], 45, &#039;px&#039;)&lt;br /&gt;
	data.idBackgroundColor = args[&#039;logo-background&#039;] or args[1] or args[&#039;id-c&#039;] or &#039;#ddd&#039;&lt;br /&gt;
	data.idTextAlign = args[&#039;id-a&#039;] or &#039;center&#039;&lt;br /&gt;
	data.idFontSize = checkNumAndAddSuffix(args[&#039;logo-size&#039;] or args[5] or args[&#039;id-s&#039;], 14, &#039;pt&#039;)&lt;br /&gt;
	data.idColor = args[&#039;logo-color&#039;] or args[&#039;id-fc&#039;] or data.infoColor&lt;br /&gt;
	data.idPadding = args[&#039;logo-padding&#039;] or args[&#039;id-p&#039;] or &#039;0 1px 0 0&#039;&lt;br /&gt;
	data.idLineHeight = args[&#039;logo-line-height&#039;] or args[&#039;id-lh&#039;] or &#039;1em&#039;&lt;br /&gt;
	data.idOtherParams = args[&#039;logo-other-param&#039;] or args[&#039;id-op&#039;]&lt;br /&gt;
	data.idClass = args[&#039;id-class&#039;]&lt;br /&gt;
&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p[&#039;_userbox-2&#039;] = function (args)&lt;br /&gt;
	-- Does argument processing for {{userbox-2}}.&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	-- Get div tag values.&lt;br /&gt;
	data.float = args.float or &#039;left&#039;&lt;br /&gt;
	local borderWidthNum = checkNum(args[&#039;border-s&#039;] or args[9], 1) -- Used to calculate width.&lt;br /&gt;
	data.borderWidth = addSuffix(borderWidthNum, &#039;px&#039;)&lt;br /&gt;
	data.borderColor = args[&#039;border-c&#039;] or args[6] or args[&#039;id1-c&#039;] or args[1] or &#039;#999999&#039;&lt;br /&gt;
	data.width = addSuffix(240 - 2 * borderWidthNum, &#039;px&#039;) -- Also used in the table tag.&lt;br /&gt;
	data.bodyClass = args.bodyclass&lt;br /&gt;
&lt;br /&gt;
	-- Get table tag values.&lt;br /&gt;
	data.backgroundColor = args[&#039;info-c&#039;] or args[2] or &#039;#eeeeee&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Get info values.&lt;br /&gt;
	data.info = args.info or args[4] or &amp;quot;&amp;lt;code&amp;gt;{{{info}}}&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
	data.infoTextAlign = args[&#039;info-a&#039;] or &#039;left&#039;&lt;br /&gt;
	data.infoFontSize = checkNumAndAddSuffix(args[&#039;info-s&#039;], 8, &#039;pt&#039;)&lt;br /&gt;
	data.infoColor = args[&#039;info-fc&#039;] or args[8] or &#039;black&#039;&lt;br /&gt;
	data.infoPadding = args[&#039;info-p&#039;] or &#039;0 4px 0 4px&#039;&lt;br /&gt;
	data.infoLineHeight = args[&#039;info-lh&#039;] or &#039;1.25em&#039;&lt;br /&gt;
	data.infoOtherParams = args[&#039;info-op&#039;]&lt;br /&gt;
&lt;br /&gt;
	-- Get id values.&lt;br /&gt;
	data.showId = true&lt;br /&gt;
	data.id = args.logo or args[3] or args.id1 or &#039;id1&#039;&lt;br /&gt;
	data.idWidth = checkNumAndAddSuffix(args[&#039;id1-w&#039;], 45, &#039;px&#039;)&lt;br /&gt;
	data.idHeight = checkNumAndAddSuffix(args[&#039;id-h&#039;], 45, &#039;px&#039;)&lt;br /&gt;
	data.idBackgroundColor = args[&#039;id1-c&#039;] or args[1] or &#039;#dddddd&#039;&lt;br /&gt;
	data.idTextAlign = &#039;center&#039;&lt;br /&gt;
	data.idFontSize = checkNumAndAddSuffix(args[&#039;id1-s&#039;], 14, &#039;pt&#039;)&lt;br /&gt;
	data.idLineHeight = args[&#039;id1-lh&#039;] or &#039;1em&#039;&lt;br /&gt;
	data.idColor = args[&#039;id1-fc&#039;] or data.infoColor&lt;br /&gt;
	data.idPadding = args[&#039;id1-p&#039;] or &#039;0 1px 0 0&#039;&lt;br /&gt;
	data.idOtherParams = args[&#039;id1-op&#039;]&lt;br /&gt;
&lt;br /&gt;
	-- Get id2 values.&lt;br /&gt;
	data.showId2 = true&lt;br /&gt;
	data.id2 = args.logo or args[5] or args.id2 or &#039;id2&#039;&lt;br /&gt;
	data.id2Width = checkNumAndAddSuffix(args[&#039;id2-w&#039;], 45, &#039;px&#039;)&lt;br /&gt;
	data.id2Height = data.idHeight&lt;br /&gt;
	data.id2BackgroundColor = args[&#039;id2-c&#039;] or args[7] or args[1] or &#039;#dddddd&#039;&lt;br /&gt;
	data.id2TextAlign = &#039;center&#039;&lt;br /&gt;
	data.id2FontSize = checkNumAndAddSuffix(args[&#039;id2-s&#039;], 14, &#039;pt&#039;)&lt;br /&gt;
	data.id2LineHeight = args[&#039;id2-lh&#039;] or &#039;1em&#039;&lt;br /&gt;
	data.id2Color = args[&#039;id2-fc&#039;] or data.infoColor&lt;br /&gt;
	data.id2Padding = args[&#039;id2-p&#039;] or &#039;0 0 0 1px&#039;&lt;br /&gt;
	data.id2OtherParams = args[&#039;id2-op&#039;]&lt;br /&gt;
&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p[&#039;_userbox-r&#039;] = function (args)&lt;br /&gt;
	-- Does argument processing for {{userbox-r}}.&lt;br /&gt;
	local data = {}&lt;br /&gt;
&lt;br /&gt;
	-- Get div tag values.&lt;br /&gt;
	data.float = args.float or &#039;left&#039;&lt;br /&gt;
	local borderWidthNum = checkNum(args[&#039;border-width&#039;] or args[&#039;border-s&#039;], 1) -- Used to calculate width.&lt;br /&gt;
	data.borderWidth = addSuffix(borderWidthNum, &#039;px&#039;)&lt;br /&gt;
	data.borderColor = args[&#039;border-color&#039;] or args[&#039;border-c&#039;] or args[1] or args[&#039;id-c&#039;] or &#039;#999&#039;&lt;br /&gt;
	data.width = addSuffix(240 - 2 * borderWidthNum, &#039;px&#039;) -- Also used in the table tag.&lt;br /&gt;
	data.bodyClass = args.bodyclass&lt;br /&gt;
	&lt;br /&gt;
	-- Get table tag values.&lt;br /&gt;
	data.backgroundColor = args[&#039;info-background&#039;] or args[2] or args[&#039;info-c&#039;] or &#039;#eee&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Get id values.&lt;br /&gt;
	data.showId = false -- We only show id2 in userbox-r.&lt;br /&gt;
&lt;br /&gt;
	-- Get info values.&lt;br /&gt;
	data.info = args.info or args[4] or &amp;quot;&amp;lt;code&amp;gt;{{{info}}}&amp;lt;/code&amp;gt;&amp;quot;&lt;br /&gt;
	data.infoTextAlign = args[&#039;info-align&#039;] or args[&#039;info-a&#039;] or &#039;left&#039;&lt;br /&gt;
	data.infoFontSize = checkNumAndAddSuffix(args[&#039;info-size&#039;] or args[&#039;info-s&#039;], 8, &#039;pt&#039;)&lt;br /&gt;
	data.infoPadding = args[&#039;info-padding&#039;] or args[&#039;info-p&#039;] or &#039;0 4px 0 4px&#039;&lt;br /&gt;
	data.infoLineHeight = args[&#039;info-line-height&#039;] or args[&#039;info-lh&#039;] or &#039;1.25em&#039;&lt;br /&gt;
	data.infoColor = args[&#039;info-color&#039;] or args[&#039;info-fc&#039;] or &#039;black&#039;&lt;br /&gt;
	data.infoOtherParams = args[&#039;info-other-param&#039;] or args[&#039;info-op&#039;]&lt;br /&gt;
	&lt;br /&gt;
	-- Get id2 values.&lt;br /&gt;
	data.showId2 = true&lt;br /&gt;
	data.id2 = args.logo or args[3] or args.id or &#039;id&#039;&lt;br /&gt;
	data.id2Width = checkNumAndAddSuffix(args[&#039;logo-width&#039;] or args[&#039;id-w&#039;], 45, &#039;px&#039;)&lt;br /&gt;
	data.id2Height = checkNumAndAddSuffix(args[&#039;logo-height&#039;] or args[&#039;id-h&#039;], 45, &#039;px&#039;)&lt;br /&gt;
	data.id2BackgroundColor = args[&#039;logo-background&#039;] or args[1] or args[&#039;id-c&#039;] or &#039;#ddd&#039;&lt;br /&gt;
	data.id2TextAlign = args[&#039;id-a&#039;] or &#039;center&#039;&lt;br /&gt;
	data.id2FontSize = checkNumAndAddSuffix(args[&#039;logo-size&#039;] or args[5] or args[&#039;id-s&#039;], 14, &#039;pt&#039;)&lt;br /&gt;
	data.id2Color = args[&#039;logo-color&#039;] or args[&#039;id-fc&#039;] or data.infoColor&lt;br /&gt;
	data.id2Padding = args[&#039;logo-padding&#039;] or args[&#039;id-p&#039;] or &#039;0 0 0 1px&#039;&lt;br /&gt;
	data.id2LineHeight = args[&#039;logo-line-height&#039;] or args[&#039;id-lh&#039;] or &#039;1em&#039;&lt;br /&gt;
	data.id2OtherParams = args[&#039;logo-other-param&#039;] or args[&#039;id-op&#039;]&lt;br /&gt;
&lt;br /&gt;
	return data&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.render(data)&lt;br /&gt;
	-- Renders the userbox html using the content of the data table. &lt;br /&gt;
	-- Render the div tag html.&lt;br /&gt;
	local root = mw.html.create(&#039;div&#039;)&lt;br /&gt;
	root&lt;br /&gt;
		:css(&#039;float&#039;, data.float)&lt;br /&gt;
		:css(&#039;border&#039;, (data.borderWidth or &#039;&#039;) .. &#039; solid &#039; .. (data.borderColor or &#039;&#039;))&lt;br /&gt;
		:css(&#039;margin&#039;, &#039;1px&#039;)&lt;br /&gt;
		:css(&#039;width&#039;, data.width)&lt;br /&gt;
		:addClass(&#039;wikipediauserbox&#039;)&lt;br /&gt;
		:addClass(data.bodyClass)&lt;br /&gt;
&lt;br /&gt;
	-- Render the table tag html.&lt;br /&gt;
	local tableroot = root:tag(&#039;table&#039;)&lt;br /&gt;
	tableroot&lt;br /&gt;
		:attr(&#039;role&#039;, &#039;presentation&#039;)&lt;br /&gt;
		:css(&#039;border-collapse&#039;, &#039;collapse&#039;)&lt;br /&gt;
		:css(&#039;width&#039;, data.width)&lt;br /&gt;
		:css(&#039;margin-bottom&#039;, &#039;0&#039;)&lt;br /&gt;
		:css(&#039;margin-top&#039;, &#039;0&#039;)&lt;br /&gt;
		:css(&#039;background&#039;, data.backgroundColor)&lt;br /&gt;
	&lt;br /&gt;
	-- Render the id html.&lt;br /&gt;
	local tablerow = tableroot:tag(&#039;tr&#039;)&lt;br /&gt;
	if data.showId then&lt;br /&gt;
		tablerow:tag(&#039;td&#039;)&lt;br /&gt;
			:css(&#039;border&#039;, &#039;0&#039;)&lt;br /&gt;
			:css(&#039;width&#039;, data.idWidth)&lt;br /&gt;
			:css(&#039;height&#039;, data.idHeight)&lt;br /&gt;
			:css(&#039;background&#039;, data.idBackgroundColor)&lt;br /&gt;
			:css(&#039;text-align&#039;, data.idTextAlign)&lt;br /&gt;
			:css(&#039;font-size&#039;, data.idFontSize)&lt;br /&gt;
			:css(&#039;font-weight&#039;, &#039;bold&#039;)&lt;br /&gt;
			:css(&#039;color&#039;, data.idColor)&lt;br /&gt;
			:css(&#039;padding&#039;, data.idPadding)&lt;br /&gt;
			:css(&#039;line-height&#039;, data.idLineHeight)&lt;br /&gt;
			:css(&#039;vertical-align&#039;, &#039;middle&#039;)&lt;br /&gt;
			:cssText(data.idOtherParams)&lt;br /&gt;
			:addClass(data.idClass)&lt;br /&gt;
			:wikitext(data.id)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Render the info html.&lt;br /&gt;
	tablerow:tag(&#039;td&#039;)&lt;br /&gt;
		:css(&#039;border&#039;, &#039;0&#039;)&lt;br /&gt;
		:css(&#039;text-align&#039;, data.infoTextAlign)&lt;br /&gt;
		:css(&#039;font-size&#039;, data.infoFontSize)&lt;br /&gt;
		:css(&#039;padding&#039;, data.infoPadding)&lt;br /&gt;
		:css(&#039;height&#039;, data.infoHeight)&lt;br /&gt;
		:css(&#039;line-height&#039;, data.infoLineHeight)&lt;br /&gt;
		:css(&#039;color&#039;, data.infoColor)&lt;br /&gt;
		:css(&#039;vertical-align&#039;, &#039;middle&#039;)&lt;br /&gt;
		:cssText(data.infoOtherParams)&lt;br /&gt;
		:addClass(data.infoClass)&lt;br /&gt;
		:wikitext(data.info)&lt;br /&gt;
	&lt;br /&gt;
	-- Render the second id html.&lt;br /&gt;
	if data.showId2 then&lt;br /&gt;
		tablerow:tag(&#039;td&#039;)&lt;br /&gt;
			:css(&#039;border&#039;, &#039;0&#039;)&lt;br /&gt;
			:css(&#039;width&#039;, data.id2Width)&lt;br /&gt;
			:css(&#039;height&#039;, data.id2Height)&lt;br /&gt;
			:css(&#039;background&#039;, data.id2BackgroundColor)&lt;br /&gt;
			:css(&#039;text-align&#039;, data.id2TextAlign)&lt;br /&gt;
			:css(&#039;font-size&#039;, data.id2FontSize)&lt;br /&gt;
			:css(&#039;font-weight&#039;, &#039;bold&#039;)&lt;br /&gt;
			:css(&#039;color&#039;, data.id2Color)&lt;br /&gt;
			:css(&#039;padding&#039;, data.id2Padding)&lt;br /&gt;
			:css(&#039;line-height&#039;, data.id2LineHeight)&lt;br /&gt;
			:css(&#039;vertical-align&#039;, &#039;middle&#039;)&lt;br /&gt;
			:cssText(data.id2OtherParams)&lt;br /&gt;
			:wikitext(data.id2)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	if (title.namespace == 2) and not title.text:match(&amp;quot;/&amp;quot;) then&lt;br /&gt;
		return tostring(root) -- regular user page&lt;br /&gt;
	elseif title.namespace == 14 then&lt;br /&gt;
		return tostring(root) -- category&lt;br /&gt;
	elseif title.isTalkPage then&lt;br /&gt;
		return tostring(root) -- talk page&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local legible = true&lt;br /&gt;
	local contrast = require(&#039;Module:Color contrast&#039;)._ratio&lt;br /&gt;
&lt;br /&gt;
	local function has_text(wikitext)&lt;br /&gt;
		local function get_alt(text)&lt;br /&gt;
			return text:match(&amp;quot;|alt=([^|]*)&amp;quot;) or &amp;quot;&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
		wikitext = wikitext:gsub(&amp;quot;]]&amp;quot;, &amp;quot;|]]&amp;quot;)&lt;br /&gt;
		wikitext = wikitext:gsub(&amp;quot;%[%[%s*[Mm][Ee][Dd][Ii][Aa]%s*:[^|]-(|.-)]]&amp;quot;, get_alt)&lt;br /&gt;
		wikitext = wikitext:gsub(&amp;quot;%[%[%s*[Ii][Mm][Aa][Gg][Ee]%s*:[^|]-(|.-)]]&amp;quot;, get_alt)&lt;br /&gt;
		wikitext = wikitext:gsub(&amp;quot;%[%[%s*[Ff][Ii][Ll][Ee]%s*:[^|]-(|.-)]]&amp;quot;, get_alt)&lt;br /&gt;
		wikitext = wikitext:gsub(&amp;quot;%[%[%s*ファイル%s*:[^|]-(|.-)]]&amp;quot;, get_alt)&lt;br /&gt;
		wikitext = wikitext:gsub(&amp;quot;%[%[%s*画像%s*:[^|]-(|.-)]]&amp;quot;, get_alt)&lt;br /&gt;
		return mw.text.trim(wikitext) ~= &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if contrast { data.infoColor, data.backgroundColor, error = 0 } &amp;lt; 4.5 then&lt;br /&gt;
		legible = false&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if data.showId and contrast { data.idColor, data.idBackgroundColor, error = 0 } &amp;lt; 4.5 then&lt;br /&gt;
		if has_text(data.id or &amp;quot;&amp;quot;) then&lt;br /&gt;
			legible = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if data.showId2 and contrast { data.id2Color, data.id2BackgroundColor, error = 0 } &amp;lt; 4.5 then&lt;br /&gt;
		if has_text(data.id2 or &amp;quot;&amp;quot;) then&lt;br /&gt;
			legible = false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not legible then&lt;br /&gt;
		root:wikitext(&#039;[[Category:配色のコントラスト比が低すぎるユーザーボックス]]&#039;)	&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.categories(args, page)&lt;br /&gt;
	-- Gets categories from [[Module:Category handler]].&lt;br /&gt;
	-- The page parameter makes the function act as though the module was being called from that page.&lt;br /&gt;
	-- It is included for testing purposes.&lt;br /&gt;
	local cats = {}&lt;br /&gt;
	cats[#cats + 1] = args.usercategory&lt;br /&gt;
	cats[#cats + 1] = args.usercategory2&lt;br /&gt;
	cats[#cats + 1] = args.usercategory3&lt;br /&gt;
	cats[#cats + 1] = args.usercategory4&lt;br /&gt;
	cats[#cats + 1] = args.usercategory5&lt;br /&gt;
	if #cats &amp;gt; 0 then&lt;br /&gt;
		-- Get the title object&lt;br /&gt;
		local title&lt;br /&gt;
		if page then&lt;br /&gt;
			title = mw.title.new(page)&lt;br /&gt;
		else&lt;br /&gt;
			title = mw.title.getCurrentTitle()&lt;br /&gt;
		end&lt;br /&gt;
		-- Build category handler arguments.&lt;br /&gt;
		local chargs = {}&lt;br /&gt;
		chargs.page = page&lt;br /&gt;
		chargs.nocat = args.nocat&lt;br /&gt;
		chargs.main = &#039;[[Category:誤った名前空間にテンプレートのあるページ]]&#039;&lt;br /&gt;
		if args.notcatsubpages then&lt;br /&gt;
			chargs.subpage = &#039;no&#039;&lt;br /&gt;
		end&lt;br /&gt;
		-- User namespace.&lt;br /&gt;
		local user = &#039;&#039;&lt;br /&gt;
		for i, cat in ipairs(cats) do&lt;br /&gt;
			user = user .. makeCat(cat)&lt;br /&gt;
		end&lt;br /&gt;
		chargs.user = user&lt;br /&gt;
		-- Template namespace.&lt;br /&gt;
		local basepage = title.baseText&lt;br /&gt;
		local template = &#039;&#039;&lt;br /&gt;
		for i, cat in ipairs(cats) do&lt;br /&gt;
			template = template .. makeCat(cat, &#039; &#039; .. basepage)&lt;br /&gt;
		end&lt;br /&gt;
		chargs.template = template&lt;br /&gt;
		return categoryHandler(chargs)&lt;br /&gt;
	else&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Unsubst&amp;diff=134</id>
		<title>モジュール:Unsubst</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Unsubst&amp;diff=134"/>
		<updated>2026-07-20T07:01:43Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「local checkType = require(&amp;#039;libraryUtil&amp;#039;).checkType  local p = {}  local BODY_PARAM = &amp;#039;$B&amp;#039;  local specialParams = { 	[&amp;#039;$params&amp;#039;] = &amp;#039;parameter list&amp;#039;, 	[&amp;#039;$aliases&amp;#039;] = &amp;#039;parameter aliases&amp;#039;, 	[&amp;#039;$flags&amp;#039;] = &amp;#039;flags&amp;#039;, 	[&amp;#039;$B&amp;#039;] = &amp;#039;template content&amp;#039;, 	[&amp;#039;$template-name&amp;#039;] = &amp;#039;template invocation name override&amp;#039;, }  function p.main(frame, body) 	-- If we are substing, this function returns a template invocation, and if 	-- not, it returns the template body. The template body can be s…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local checkType = require(&#039;libraryUtil&#039;).checkType&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local BODY_PARAM = &#039;$B&#039;&lt;br /&gt;
&lt;br /&gt;
local specialParams = {&lt;br /&gt;
	[&#039;$params&#039;] = &#039;parameter list&#039;,&lt;br /&gt;
	[&#039;$aliases&#039;] = &#039;parameter aliases&#039;,&lt;br /&gt;
	[&#039;$flags&#039;] = &#039;flags&#039;,&lt;br /&gt;
	[&#039;$B&#039;] = &#039;template content&#039;,&lt;br /&gt;
	[&#039;$template-name&#039;] = &#039;template invocation name override&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame, body)&lt;br /&gt;
	-- If we are substing, this function returns a template invocation, and if&lt;br /&gt;
	-- not, it returns the template body. The template body can be specified in&lt;br /&gt;
	-- the body parameter, or in the template parameter defined in the&lt;br /&gt;
	-- BODY_PARAM variable. This function can be called from Lua or from&lt;br /&gt;
	-- #invoke.&lt;br /&gt;
&lt;br /&gt;
	-- Return the template body if we aren&#039;t substing.&lt;br /&gt;
	if not mw.isSubsting() then&lt;br /&gt;
		if body ~= nil then&lt;br /&gt;
			return body&lt;br /&gt;
		elseif frame.args[BODY_PARAM] ~= nil then&lt;br /&gt;
			return frame.args[BODY_PARAM]&lt;br /&gt;
		else&lt;br /&gt;
			error(string.format(&lt;br /&gt;
				&amp;quot;no template content specified (use parameter &#039;%s&#039; from #invoke)&amp;quot;,&lt;br /&gt;
				BODY_PARAM&lt;br /&gt;
			), 2)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Sanity check for the frame object.&lt;br /&gt;
	if type(frame) ~= &#039;table&#039;&lt;br /&gt;
		or type(frame.getParent) ~= &#039;function&#039;&lt;br /&gt;
		or not frame:getParent()&lt;br /&gt;
	then&lt;br /&gt;
		error(&lt;br /&gt;
			&amp;quot;argument #1 to &#039;main&#039; must be a frame object with a parent &amp;quot; ..&lt;br /&gt;
			&amp;quot;frame available&amp;quot;,&lt;br /&gt;
			2&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Find the invocation name.&lt;br /&gt;
	local mTemplateInvocation = require(&#039;Module:Template invocation&#039;)&lt;br /&gt;
	local name&lt;br /&gt;
&lt;br /&gt;
	if frame.args[&#039;$template-name&#039;] and &#039;&#039; ~= frame.args[&#039;$template-name&#039;] then&lt;br /&gt;
		name = frame.args[&#039;$template-name&#039;]										-- override whatever the template name is with this name&lt;br /&gt;
	else&lt;br /&gt;
		name = mTemplateInvocation.name(frame:getParent():getTitle())&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Combine passed args with passed defaults&lt;br /&gt;
	local args = {}&lt;br /&gt;
	if string.find( &#039;,&#039;..(frame.args[&#039;$flags&#039;] or &#039;&#039;)..&#039;,&#039;, &#039;,%s*override%s*,&#039; ) then&lt;br /&gt;
		for k, v in pairs( frame:getParent().args ) do&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in pairs( frame.args ) do&lt;br /&gt;
			if not specialParams[k] then&lt;br /&gt;
				if v == &#039;__DATE__&#039; then&lt;br /&gt;
					v = mw.getContentLanguage():formatDate( &#039;F Y&#039; )&lt;br /&gt;
				end&lt;br /&gt;
				args[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		for k, v in pairs( frame.args ) do&lt;br /&gt;
			if not specialParams[k] then&lt;br /&gt;
				if v == &#039;__DATE__&#039; then&lt;br /&gt;
					v = mw.getContentLanguage():formatDate( &#039;F Y&#039; )&lt;br /&gt;
				end&lt;br /&gt;
				args[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in pairs( frame:getParent().args ) do&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Trim parameters, if not specified otherwise&lt;br /&gt;
	if not string.find( &#039;,&#039;..(frame.args[&#039;$flags&#039;] or &#039;&#039;)..&#039;,&#039;, &#039;,%s*keep%-whitespace%s*,&#039; ) then&lt;br /&gt;
		for k, v in pairs( args ) do args[k] = mw.ustring.match(v, &#039;^%s*(.*)%s*$&#039;) or &#039;&#039; end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Pull information from parameter aliases&lt;br /&gt;
	local aliases = {}&lt;br /&gt;
	if frame.args[&#039;$aliases&#039;] then&lt;br /&gt;
		local list = mw.text.split( frame.args[&#039;$aliases&#039;], &#039;%s*,%s*&#039; )&lt;br /&gt;
		for k, v in ipairs( list ) do&lt;br /&gt;
			local tmp = mw.text.split( v, &#039;%s*&amp;gt;%s*&#039; )&lt;br /&gt;
			aliases[tonumber(mw.ustring.match(tmp[1], &#039;^[1-9][0-9]*$&#039;)) or tmp[1]] = ((tonumber(mw.ustring.match(tmp[2], &#039;^[1-9][0-9]*$&#039;))) or tmp[2])&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	for k, v in pairs( aliases ) do&lt;br /&gt;
		if args[k] and ( not args[v] or args[v] == &#039;&#039; ) then&lt;br /&gt;
			args[v] = args[k]&lt;br /&gt;
		end&lt;br /&gt;
		args[k] = nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Remove empty parameters, if specified&lt;br /&gt;
	if string.find( &#039;,&#039;..(frame.args[&#039;$flags&#039;] or &#039;&#039;)..&#039;,&#039;, &#039;,%s*remove%-empty%s*,&#039; ) then&lt;br /&gt;
		local tmp = 0&lt;br /&gt;
		for k, v in ipairs( args ) do&lt;br /&gt;
			if v ~= &#039;&#039; or ( args[k+1] and args[k+1] ~= &#039;&#039; ) or ( args[k+2] and args[k+2] ~= &#039;&#039; ) then&lt;br /&gt;
				tmp = k&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in pairs( args ) do&lt;br /&gt;
			if v == &#039;&#039; then&lt;br /&gt;
				if not (type(k) == &#039;number&#039; and k &amp;lt; tmp) then args[k] = nil end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Order parameters&lt;br /&gt;
	if frame.args[&#039;$params&#039;] then&lt;br /&gt;
		local params, tmp = mw.text.split( frame.args[&#039;$params&#039;], &#039;%s*,%s*&#039; ), {}&lt;br /&gt;
		for k, v in ipairs(params) do&lt;br /&gt;
			v = tonumber(mw.ustring.match(v, &#039;^[1-9][0-9]*$&#039;)) or v&lt;br /&gt;
			if args[v] then tmp[v], args[v] = args[v], nil end&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in pairs(args) do tmp[k], args[k] = args[k], nil end&lt;br /&gt;
		args = tmp&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mTemplateInvocation.invocation(name, args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p[&#039;&#039;] = p.main -- For backwards compatibility&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:TreeChart&amp;diff=133</id>
		<title>モジュール:TreeChart</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:TreeChart&amp;diff=133"/>
		<updated>2026-07-20T07:00:54Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「require(&amp;#039;Module:No globals&amp;#039;)  local p = {}  local cells = mw.loadData(&amp;#039;Module:TreeChart/data&amp;#039;)  function p._main(cell_args) 	local ret = mw.html.create() 	local top = ret:tag(&amp;#039;tr&amp;#039;) 						:css{ height = &amp;#039;1px&amp;#039;, 								[&amp;#039;text-align&amp;#039;] = &amp;#039;center&amp;#039; } 	local bottom = ret:tag(&amp;#039;tr&amp;#039;) 						:css{ height = &amp;#039;1px&amp;#039;, 								[&amp;#039;text-align&amp;#039;] = &amp;#039;center&amp;#039; } 	for _, v in ipairs(cell_args) do 		if type(v) == &amp;#039;string&amp;#039; then 			top:wikitext(cells[v].t) 			bottom:wikitext(cells[v].b) 		else…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;Module:No globals&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local cells = mw.loadData(&#039;Module:TreeChart/data&#039;)&lt;br /&gt;
&lt;br /&gt;
function p._main(cell_args)&lt;br /&gt;
	local ret = mw.html.create()&lt;br /&gt;
	local top = ret:tag(&#039;tr&#039;)&lt;br /&gt;
						:css{ height = &#039;1px&#039;,&lt;br /&gt;
								[&#039;text-align&#039;] = &#039;center&#039; }&lt;br /&gt;
	local bottom = ret:tag(&#039;tr&#039;)&lt;br /&gt;
						:css{ height = &#039;1px&#039;,&lt;br /&gt;
								[&#039;text-align&#039;] = &#039;center&#039; }&lt;br /&gt;
	for _, v in ipairs(cell_args) do&lt;br /&gt;
		if type(v) == &#039;string&#039; then&lt;br /&gt;
			top:wikitext(cells[v].t)&lt;br /&gt;
			bottom:wikitext(cells[v].b)&lt;br /&gt;
		else&lt;br /&gt;
			top:tag(&#039;td&#039;)&lt;br /&gt;
				:attr{ colspan = v.colspan or cell_args.colspan or 6,&lt;br /&gt;
						rowspan = v.rowspan or cell_args.rowspan or 2 }&lt;br /&gt;
				:css{ padding = &#039;0.2em&#039;,&lt;br /&gt;
						border = (v.border or cell_args.border or &#039;2&#039;) .. &#039;px solid black&#039; }&lt;br /&gt;
				:cssText(v.boxstyle or cell_args.boxstyle)&lt;br /&gt;
				:wikitext(v.text)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return tostring(ret)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	local args = require(&#039;Module:Arguments&#039;).getArgs(frame, {wrappers = &#039;Template:Chart&#039;, trim = false, removeBlanks = false})&lt;br /&gt;
	local cell_args = {&lt;br /&gt;
		colspan = args.colspan,&lt;br /&gt;
		rowspan = args.rowspan,&lt;br /&gt;
		border = args.border,&lt;br /&gt;
		boxstyle = args.boxstyle&lt;br /&gt;
	}&lt;br /&gt;
	for _, val in ipairs(args) do&lt;br /&gt;
		local trimmedVal = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if trimmedVal == &#039;&#039; then&lt;br /&gt;
			trimmedVal = &#039;$&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if cells[trimmedVal] then&lt;br /&gt;
			table.insert(cell_args, trimmedVal)&lt;br /&gt;
		else&lt;br /&gt;
			-- Unnamed params behave weirdly&lt;br /&gt;
			-- white space at the front counts for param_{{{1}}}, but not whitespace at the end, so remove it&lt;br /&gt;
			local rightTrimmedVal = val:gsub(&#039;%s+$&#039;,&#039;&#039;)&lt;br /&gt;
			table.insert(cell_args, {&lt;br /&gt;
				text = args[trimmedVal] or (&#039;{{{&#039;..trimmedVal..&#039;}}}&#039;),&lt;br /&gt;
				colspan = args[&#039;colspan_&#039;..rightTrimmedVal],&lt;br /&gt;
				rowspan = args[&#039;rowspan_&#039;..rightTrimmedVal],&lt;br /&gt;
				border = args[&#039;border_&#039;..rightTrimmedVal],&lt;br /&gt;
				boxstyle = args[&#039;boxstyle_&#039;..rightTrimmedVal]&lt;br /&gt;
			})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return p._main(cell_args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:TableTools&amp;diff=132</id>
		<title>モジュール:TableTools</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:TableTools&amp;diff=132"/>
		<updated>2026-07-20T06:59:21Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「--[[ ------------------------------------------------------------------------------------ --                               TableTools                                       -- --                                                                                -- -- This module includes a number of functions for dealing with Lua tables.        -- -- It is a meta-module, meant to be called from other Lua modules, and should     -- -- not be called directly from #invoke.…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--                               TableTools                                       --&lt;br /&gt;
--                                                                                --&lt;br /&gt;
-- This module includes a number of functions for dealing with Lua tables.        --&lt;br /&gt;
-- It is a meta-module, meant to be called from other Lua modules, and should     --&lt;br /&gt;
-- not be called directly from #invoke.                                           --&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Define often-used variables and functions.&lt;br /&gt;
local floor = math.floor&lt;br /&gt;
local infinity = math.huge&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local checkTypeMulti = libraryUtil.checkTypeMulti&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- isPositiveInteger&lt;br /&gt;
--&lt;br /&gt;
-- This function returns true if the given value is a positive integer, and false&lt;br /&gt;
-- if not. Although it doesn&#039;t operate on tables, it is included here as it is&lt;br /&gt;
-- useful for determining whether a given table key is in the array part or the&lt;br /&gt;
-- hash part of a table.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.isPositiveInteger(v)&lt;br /&gt;
	return type(v) == &#039;number&#039; and v &amp;gt;= 1 and floor(v) == v and v &amp;lt; infinity&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- isNan&lt;br /&gt;
--&lt;br /&gt;
-- This function returns true if the given number is a NaN value, and false&lt;br /&gt;
-- if not. Although it doesn&#039;t operate on tables, it is included here as it is&lt;br /&gt;
-- useful for determining whether a value can be a valid table key. Lua will&lt;br /&gt;
-- generate an error if a NaN is used as a table key.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.isNan(v)&lt;br /&gt;
	return type(v) == &#039;number&#039; and tostring(v) == &#039;-nan&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- shallowClone&lt;br /&gt;
--&lt;br /&gt;
-- This returns a clone of a table. The value returned is a new table, but all&lt;br /&gt;
-- subtables and functions are shared. Metamethods are respected, but the returned&lt;br /&gt;
-- table will have no metatable of its own.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.shallowClone(t)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		ret[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- removeDuplicates&lt;br /&gt;
--&lt;br /&gt;
-- This removes duplicate values from an array. Non-positive-integer keys are&lt;br /&gt;
-- ignored. The earliest value is kept, and all subsequent duplicate values are&lt;br /&gt;
-- removed, but otherwise the array order is unchanged.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.removeDuplicates(t)&lt;br /&gt;
	checkType(&#039;removeDuplicates&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	local isNan = p.isNan&lt;br /&gt;
	local ret, exists = {}, {}&lt;br /&gt;
	for i, v in ipairs(t) do&lt;br /&gt;
		if isNan(v) then&lt;br /&gt;
			-- NaNs can&#039;t be table keys, and they are also unique, so we don&#039;t need to check existence.&lt;br /&gt;
			ret[#ret + 1] = v&lt;br /&gt;
		else&lt;br /&gt;
			if not exists[v] then&lt;br /&gt;
				ret[#ret + 1] = v&lt;br /&gt;
				exists[v] = true&lt;br /&gt;
			end&lt;br /&gt;
		end	&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end			&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- numKeys&lt;br /&gt;
--&lt;br /&gt;
-- This takes a table and returns an array containing the numbers of any numerical&lt;br /&gt;
-- keys that have non-nil values, sorted in numerical order.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.numKeys(t)&lt;br /&gt;
	checkType(&#039;numKeys&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	local isPositiveInteger = p.isPositiveInteger&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		if isPositiveInteger(k) then&lt;br /&gt;
			nums[#nums + 1] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- affixNums&lt;br /&gt;
--&lt;br /&gt;
-- This takes a table and returns an array containing the numbers of keys with the&lt;br /&gt;
-- specified prefix and suffix. For example, for the table&lt;br /&gt;
-- {a1 = &#039;foo&#039;, a3 = &#039;bar&#039;, a6 = &#039;baz&#039;} and the prefix &amp;quot;a&amp;quot;, affixNums will&lt;br /&gt;
-- return {1, 3, 6}.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.affixNums(t, prefix, suffix)&lt;br /&gt;
	checkType(&#039;affixNums&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	checkType(&#039;affixNums&#039;, 2, prefix, &#039;string&#039;, true)&lt;br /&gt;
	checkType(&#039;affixNums&#039;, 3, suffix, &#039;string&#039;, true)&lt;br /&gt;
&lt;br /&gt;
	local function cleanPattern(s)&lt;br /&gt;
		-- Cleans a pattern so that the magic characters ()%.[]*+-?^$ are interpreted literally.&lt;br /&gt;
		return s:gsub(&#039;([%(%)%%%.%[%]%*%+%-%?%^%$])&#039;, &#039;%%%1&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	prefix = prefix or &#039;&#039;&lt;br /&gt;
	suffix = suffix or &#039;&#039;&lt;br /&gt;
	prefix = cleanPattern(prefix)&lt;br /&gt;
	suffix = cleanPattern(suffix)&lt;br /&gt;
	local pattern = &#039;^&#039; .. prefix .. &#039;([1-9]%d*)&#039; .. suffix .. &#039;$&#039;&lt;br /&gt;
&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		if type(k) == &#039;string&#039; then			&lt;br /&gt;
			local num = mw.ustring.match(k, pattern)&lt;br /&gt;
			if num then&lt;br /&gt;
				nums[#nums + 1] = tonumber(num)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(nums)&lt;br /&gt;
	return nums&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- numData&lt;br /&gt;
--&lt;br /&gt;
-- Given a table with keys like (&amp;quot;foo1&amp;quot;, &amp;quot;bar1&amp;quot;, &amp;quot;foo2&amp;quot;, &amp;quot;baz2&amp;quot;), returns a table&lt;br /&gt;
-- of subtables in the format &lt;br /&gt;
-- { [1] = {foo = &#039;text&#039;, bar = &#039;text&#039;}, [2] = {foo = &#039;text&#039;, baz = &#039;text&#039;} }&lt;br /&gt;
-- Keys that don&#039;t end with an integer are stored in a subtable named &amp;quot;other&amp;quot;.&lt;br /&gt;
-- The compress option compresses the table so that it can be iterated over with&lt;br /&gt;
-- ipairs.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.numData(t, compress)&lt;br /&gt;
	checkType(&#039;numData&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	checkType(&#039;numData&#039;, 2, compress, &#039;boolean&#039;, true)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		local prefix, num = mw.ustring.match(tostring(k), &#039;^([^0-9]*)([1-9][0-9]*)$&#039;)&lt;br /&gt;
		if num then&lt;br /&gt;
			num = tonumber(num)&lt;br /&gt;
			local subtable = ret[num] or {}&lt;br /&gt;
			if prefix == &#039;&#039; then&lt;br /&gt;
				-- Positional parameters match the blank string; put them at the start of the subtable instead.&lt;br /&gt;
				prefix = 1&lt;br /&gt;
			end&lt;br /&gt;
			subtable[prefix] = v&lt;br /&gt;
			ret[num] = subtable&lt;br /&gt;
		else&lt;br /&gt;
			local subtable = ret.other or {}&lt;br /&gt;
			subtable[k] = v&lt;br /&gt;
			ret.other = subtable&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if compress then&lt;br /&gt;
		local other = ret.other&lt;br /&gt;
		ret = p.compressSparseArray(ret)&lt;br /&gt;
		ret.other = other&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- compressSparseArray&lt;br /&gt;
--&lt;br /&gt;
-- This takes an array with one or more nil values, and removes the nil values&lt;br /&gt;
-- while preserving the order, so that the array can be safely traversed with&lt;br /&gt;
-- ipairs.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.compressSparseArray(t)&lt;br /&gt;
	checkType(&#039;compressSparseArray&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	local nums = p.numKeys(t)&lt;br /&gt;
	for _, num in ipairs(nums) do&lt;br /&gt;
		ret[#ret + 1] = t[num]&lt;br /&gt;
	end&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- sparseIpairs&lt;br /&gt;
--&lt;br /&gt;
-- This is an iterator for sparse arrays. It can be used like ipairs, but can&lt;br /&gt;
-- handle nil values.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
function p.sparseIpairs(t)&lt;br /&gt;
	checkType(&#039;sparseIpairs&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	local nums = p.numKeys(t)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	local lim = #nums&lt;br /&gt;
	return function ()&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if i &amp;lt;= lim then&lt;br /&gt;
			local key = nums[i]&lt;br /&gt;
			return key, t[key]&lt;br /&gt;
		else&lt;br /&gt;
			return nil, nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
-- size&lt;br /&gt;
--&lt;br /&gt;
-- This returns the size of a key/value pair table. It will also work on arrays,&lt;br /&gt;
-- but for arrays it is more efficient to use the # operator.&lt;br /&gt;
------------------------------------------------------------------------------------&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function p.size(t)&lt;br /&gt;
	checkType(&#039;size&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k in pairs(t) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	return i&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function defaultKeySort(item1, item2)&lt;br /&gt;
	-- &amp;quot;number&amp;quot; &amp;lt; &amp;quot;string&amp;quot;, so numbers will be sorted before strings.&lt;br /&gt;
	local type1, type2 = type(item1), type(item2)&lt;br /&gt;
	if type1 ~= type2 then&lt;br /&gt;
		return type1 &amp;lt; type2&lt;br /&gt;
	else -- This will fail with table, boolean, function.&lt;br /&gt;
		return item1 &amp;lt; item2&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Returns a list of the keys in a table, sorted using either a default&lt;br /&gt;
	comparison function or a custom keySort function.&lt;br /&gt;
]]&lt;br /&gt;
function p.keysToList(t, keySort, checked)&lt;br /&gt;
	if not checked then&lt;br /&gt;
		checkType(&#039;keysToList&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
		checkTypeMulti(&#039;keysToList&#039;, 2, keySort, { &#039;function&#039;, &#039;boolean&#039;, &#039;nil&#039; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local list = {}&lt;br /&gt;
	local index = 1&lt;br /&gt;
	for key, value in pairs(t) do&lt;br /&gt;
		list[index] = key&lt;br /&gt;
		index = index + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if keySort ~= false then&lt;br /&gt;
		keySort = type(keySort) == &#039;function&#039; and keySort or defaultKeySort&lt;br /&gt;
		&lt;br /&gt;
		table.sort(list, keySort)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Iterates through a table, with the keys sorted using the keysToList function.&lt;br /&gt;
	If there are only numerical keys, sparseIpairs is probably more efficient.&lt;br /&gt;
]]&lt;br /&gt;
function p.sortedPairs(t, keySort)&lt;br /&gt;
	checkType(&#039;sortedPairs&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	checkType(&#039;sortedPairs&#039;, 2, keySort, &#039;function&#039;, true)&lt;br /&gt;
	&lt;br /&gt;
	local list = p.keysToList(t, keySort, true)&lt;br /&gt;
	&lt;br /&gt;
	local i = 0&lt;br /&gt;
	return function()&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		local key = list[i]&lt;br /&gt;
		if key ~= nil then&lt;br /&gt;
			return key, t[key]&lt;br /&gt;
		else&lt;br /&gt;
			return nil, nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Returns true if all keys in the table are consecutive integers starting at 1.&lt;br /&gt;
--]]&lt;br /&gt;
function p.isArray(t)&lt;br /&gt;
	checkType(&amp;quot;isArray&amp;quot;, 1, t, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if t[i] == nil then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; } -&amp;gt; { a = 1, b = 2, c = 3 }&lt;br /&gt;
function p.invert(array)&lt;br /&gt;
	checkType(&amp;quot;invert&amp;quot;, 1, array, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local map = {}&lt;br /&gt;
	for i, v in ipairs(array) do&lt;br /&gt;
		map[v] = i&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return map&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	{ &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; } -&amp;gt; { [&amp;quot;a&amp;quot;] = true, [&amp;quot;b&amp;quot;] = true, [&amp;quot;c&amp;quot;] = true }&lt;br /&gt;
--]]&lt;br /&gt;
function p.listToSet(t)&lt;br /&gt;
	checkType(&amp;quot;listToSet&amp;quot;, 1, t, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local set = {}&lt;br /&gt;
	for _, item in ipairs(t) do&lt;br /&gt;
		set[item] = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return set&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Recursive deep copy function.&lt;br /&gt;
	Preserves identities of subtables.&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
local function _deepCopy(orig, includeMetatable, already_seen)&lt;br /&gt;
	-- Stores copies of tables indexed by the original table.&lt;br /&gt;
	already_seen = already_seen or {}&lt;br /&gt;
	&lt;br /&gt;
	local copy = already_seen[orig]&lt;br /&gt;
	if copy ~= nil then&lt;br /&gt;
		return copy&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if type(orig) == &#039;table&#039; then&lt;br /&gt;
		copy = {}&lt;br /&gt;
		for orig_key, orig_value in pairs(orig) do&lt;br /&gt;
			copy[deepcopy(orig_key, includeMetatable, already_seen)] = deepcopy(orig_value, includeMetatable, already_seen)&lt;br /&gt;
		end&lt;br /&gt;
		already_seen[orig] = copy&lt;br /&gt;
		&lt;br /&gt;
		if includeMetatable then&lt;br /&gt;
			local mt = getmetatable(orig)&lt;br /&gt;
			if mt ~= nil then&lt;br /&gt;
				local mt_copy = deepcopy(mt, includeMetatable, already_seen)&lt;br /&gt;
				setmetatable(copy, mt_copy)&lt;br /&gt;
				already_seen[mt] = mt_copy&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else -- number, string, boolean, etc&lt;br /&gt;
		copy = orig&lt;br /&gt;
	end&lt;br /&gt;
	return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.deepCopy(orig, noMetatable, already_seen)&lt;br /&gt;
	checkType(&amp;quot;deepCopy&amp;quot;, 3, already_seen, &amp;quot;table&amp;quot;, true)&lt;br /&gt;
	&lt;br /&gt;
	return _deepCopy(orig, not noMetatable, already_seen)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Concatenates all values in the table that are indexed by a number, in order.&lt;br /&gt;
	sparseConcat{ a, nil, c, d }  =&amp;gt;  &amp;quot;acd&amp;quot;&lt;br /&gt;
	sparseConcat{ nil, b, c, d }  =&amp;gt;  &amp;quot;bcd&amp;quot;&lt;br /&gt;
]]&lt;br /&gt;
function p.sparseConcat(t, sep, i, j)&lt;br /&gt;
	local list = {}&lt;br /&gt;
	&lt;br /&gt;
	local list_i = 0&lt;br /&gt;
	for _, v in p.sparseIpairs(t) do&lt;br /&gt;
		list_i = list_i + 1&lt;br /&gt;
		list[list_i] = v&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(list, sep, i, j)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- Finds the length of an array, or of a quasi-array with keys such&lt;br /&gt;
-- as &amp;quot;data1&amp;quot;, &amp;quot;data2&amp;quot;, etc., using an exponential search algorithm. &lt;br /&gt;
-- It is similar to the operator #, but may return&lt;br /&gt;
-- a different value when there are gaps in the array portion of the table.&lt;br /&gt;
-- Intended to be used on data loaded with mw.loadData. For other tables, use #.&lt;br /&gt;
-- Note: #frame.args in frame object always be set to 0, regardless of &lt;br /&gt;
-- the number of unnamed template parameters, so use this function for&lt;br /&gt;
-- frame.args.&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function p.length(t, prefix)&lt;br /&gt;
	-- requiring module inline so that [[Module:Exponential search]]&lt;br /&gt;
	-- which is only needed by this one function&lt;br /&gt;
	-- doesn&#039;t get millions of transclusions&lt;br /&gt;
	local expSearch = require(&amp;quot;Module:Exponential search&amp;quot;)&lt;br /&gt;
	checkType(&#039;length&#039;, 1, t, &#039;table&#039;)&lt;br /&gt;
	checkType(&#039;length&#039;, 2, prefix, &#039;string&#039;, true)&lt;br /&gt;
	return expSearch(function(i)&lt;br /&gt;
		local key&lt;br /&gt;
		if prefix then&lt;br /&gt;
			key = prefix .. tostring(i)&lt;br /&gt;
		else&lt;br /&gt;
			key = i&lt;br /&gt;
		end&lt;br /&gt;
		return t[key] ~= nil&lt;br /&gt;
	end) or 0&lt;br /&gt;
end&lt;br /&gt;
function p.inArray(arr, valueToFind)&lt;br /&gt;
	checkType(&amp;quot;inArray&amp;quot;, 1, arr, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- if valueToFind is nil, error?&lt;br /&gt;
	&lt;br /&gt;
	for _, v in ipairs(arr) do&lt;br /&gt;
		if v == valueToFind then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Table&amp;diff=131</id>
		<title>モジュール:Table</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Table&amp;diff=131"/>
		<updated>2026-07-20T06:58:03Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「local p = {}  -- A number of functions, most of them imported from wikt:Module:table, a -- spinoff of Module:TableTools.  local libraryUtil = require(&amp;#039;libraryUtil&amp;#039;) local checkType = libraryUtil.checkType local checkTypeMulti = libraryUtil.checkTypeMulti  local function _check(funcName, expectType) 	if type(expectType) == &amp;quot;string&amp;quot; then 		return function(argIndex, arg, nilOk) 			checkType(funcName, argIndex, arg, expectType, nilOk) 		end 	else 		return functi…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
-- A number of functions, most of them imported from [[wikt:Module:table]], a&lt;br /&gt;
-- spinoff of [[Module:TableTools]].&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
local checkTypeMulti = libraryUtil.checkTypeMulti&lt;br /&gt;
&lt;br /&gt;
local function _check(funcName, expectType)&lt;br /&gt;
	if type(expectType) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		return function(argIndex, arg, nilOk)&lt;br /&gt;
			checkType(funcName, argIndex, arg, expectType, nilOk)&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return function(argIndex, arg, expectType, nilOk)&lt;br /&gt;
			if type(expectType) == &amp;quot;table&amp;quot; then&lt;br /&gt;
				checkTypeMulti(funcName, argIndex, arg, expectType, nilOk)&lt;br /&gt;
			else&lt;br /&gt;
				checkType(funcName, argIndex, arg, expectType, nilOk)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function defaultKeySort(item1, item2)&lt;br /&gt;
	-- &amp;quot;number&amp;quot; &amp;lt; &amp;quot;string&amp;quot;, so numbers will be sorted before strings.&lt;br /&gt;
	local type1, type2 = type(item1), type(item2)&lt;br /&gt;
	if type1 ~= type2 then&lt;br /&gt;
		return type1 &amp;lt; type2&lt;br /&gt;
	else -- This will fail with table, boolean, function.&lt;br /&gt;
		return item1 &amp;lt; item2&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Returns a list of the keys in a table, sorted using either a default&lt;br /&gt;
	comparison function or a custom keySort function.&lt;br /&gt;
]]&lt;br /&gt;
function p.keysToList(t, keySort, checked)&lt;br /&gt;
	if not checked then&lt;br /&gt;
		local check = _check(&#039;keysToList&#039;)&lt;br /&gt;
		check(1, t, &#039;table&#039;)&lt;br /&gt;
		check(2, keySort, { &#039;function&#039;, &#039;boolean&#039;, &#039;nil&#039; })&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local list = {}&lt;br /&gt;
	local index = 1&lt;br /&gt;
	for key, value in pairs(t) do&lt;br /&gt;
		list[index] = key&lt;br /&gt;
		index = index + 1&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if keySort ~= false then&lt;br /&gt;
		keySort = type(keySort) == &#039;function&#039; and keySort or defaultKeySort&lt;br /&gt;
		&lt;br /&gt;
		table.sort(list, keySort)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return list&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Iterates through a table, with the keys sorted using the keysToList function.&lt;br /&gt;
	If there are only numerical keys, sparseIpairs is probably more efficient.&lt;br /&gt;
]]&lt;br /&gt;
function p.sortedPairs(t, keySort)&lt;br /&gt;
	local check = _check(&#039;keysToList&#039;)&lt;br /&gt;
	check(1, t, &#039;table&#039;)&lt;br /&gt;
	check(2, keySort, &#039;function&#039;, true)&lt;br /&gt;
	&lt;br /&gt;
	local list = p.keysToList(t, keySort, true)&lt;br /&gt;
	&lt;br /&gt;
	local i = 0&lt;br /&gt;
	return function()&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		local key = list[i]&lt;br /&gt;
		if key ~= nil then&lt;br /&gt;
			return key, t[key]&lt;br /&gt;
		else&lt;br /&gt;
			return nil, nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Returns true if all keys in the table are consecutive integers starting at 1.&lt;br /&gt;
--]]&lt;br /&gt;
function p.isArray(t)&lt;br /&gt;
	checkType(&amp;quot;isArray&amp;quot;, 1, t, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local i = 0&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if t[i] == nil then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; } -&amp;gt; { a = 1, b = 2, c = 3 }&lt;br /&gt;
function p.invert(array)&lt;br /&gt;
	checkType(&amp;quot;invert&amp;quot;, 1, array, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local map = {}&lt;br /&gt;
	for i, v in ipairs(array) do&lt;br /&gt;
		map[v] = i&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return map&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	{ &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot; } -&amp;gt; { [&amp;quot;a&amp;quot;] = true, [&amp;quot;b&amp;quot;] = true, [&amp;quot;c&amp;quot;] = true }&lt;br /&gt;
--]]&lt;br /&gt;
function p.listToSet(t)&lt;br /&gt;
	checkType(&amp;quot;listToSet&amp;quot;, 1, t, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	local set = {}&lt;br /&gt;
	for _, item in ipairs(t) do&lt;br /&gt;
		set[item] = true&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return set&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Recursive deep copy function&lt;br /&gt;
]]&lt;br /&gt;
function p.deepCopy(orig, noMetatable)&lt;br /&gt;
    local orig_type = type(orig)&lt;br /&gt;
    local copy&lt;br /&gt;
    if orig_type == &#039;table&#039; then&lt;br /&gt;
        copy = {}&lt;br /&gt;
        for orig_key, orig_value in pairs(orig) do&lt;br /&gt;
            copy[p.deepCopy(orig_key, noMetatable)] = p.deepCopy(orig_value, noMetatable)&lt;br /&gt;
        end&lt;br /&gt;
        if not noMetatable then&lt;br /&gt;
        	setmetatable(copy, p.deepCopy(getmetatable(orig)))&lt;br /&gt;
        end&lt;br /&gt;
    else -- number, string, boolean, etc&lt;br /&gt;
        copy = orig&lt;br /&gt;
    end&lt;br /&gt;
    return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
	Concatenates all values in the table that are indexed by a number, in order.&lt;br /&gt;
	sparseConcat{ a, nil, c, d }  =&amp;gt;  &amp;quot;acd&amp;quot;&lt;br /&gt;
	sparseConcat{ nil, b, c, d }  =&amp;gt;  &amp;quot;bcd&amp;quot;&lt;br /&gt;
]]&lt;br /&gt;
function p.sparseConcat(t, sep, i, j)&lt;br /&gt;
	local list = {}&lt;br /&gt;
	&lt;br /&gt;
	local list_i = 0&lt;br /&gt;
	for _, v in require(&amp;quot;Module:TableTools&amp;quot;).sparseIpairs(t) do&lt;br /&gt;
		list_i = list_i + 1&lt;br /&gt;
		list[list_i] = v&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat(list, sep, i, j)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- This returns the length of a table, or the first integer key n counting from&lt;br /&gt;
-- 1 such that t[n + 1] is nil. It is similar to the operator #, but may return&lt;br /&gt;
-- a different value when there are gaps in the array portion of the table.&lt;br /&gt;
-- Intended to be used on data loaded with mw.loadData. For other tables, use #.&lt;br /&gt;
--]]&lt;br /&gt;
function p.length(t)&lt;br /&gt;
	local i = 0&lt;br /&gt;
	repeat&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	until t[i] == nil&lt;br /&gt;
	return i - 1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.inArray(arr, valueToFind)&lt;br /&gt;
	checkType(&amp;quot;inArray&amp;quot;, 1, arr, &amp;quot;table&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- if valueToFind is nil, error?&lt;br /&gt;
	&lt;br /&gt;
	for _, v in ipairs(arr) do&lt;br /&gt;
		if v == valueToFind then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Submit_an_edit_request&amp;diff=130</id>
		<title>モジュール:Submit an edit request</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Submit_an_edit_request&amp;diff=130"/>
		<updated>2026-07-20T06:55:32Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「-- This module implements {{Submit an edit request}}.  local CONFIG_MODULE = &amp;#039;Module:Submit an edit request/config&amp;#039;  -- Load necessary modules local mRedirect = require(&amp;#039;Module:Redirect&amp;#039;) local cfg = mw.loadData(CONFIG_MODULE) local effectiveProtectionLevel = require(&amp;#039;Module:Effective protection level&amp;#039;)._main local lang = mw.language.getContentLanguage()  local p = {}  local validLevels = { 	semi = &amp;#039;semi&amp;#039;, 	template = &amp;#039;template&amp;#039;, 	full = &amp;#039;full&amp;#039; }  local function mes…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{Submit an edit request}}.&lt;br /&gt;
&lt;br /&gt;
local CONFIG_MODULE = &#039;Module:Submit an edit request/config&#039;&lt;br /&gt;
&lt;br /&gt;
-- Load necessary modules&lt;br /&gt;
local mRedirect = require(&#039;Module:Redirect&#039;)&lt;br /&gt;
local cfg = mw.loadData(CONFIG_MODULE)&lt;br /&gt;
local effectiveProtectionLevel = require(&#039;Module:Effective protection level&#039;)._main&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local validLevels = {&lt;br /&gt;
	semi = &#039;semi&#039;,&lt;br /&gt;
	template = &#039;template&#039;,&lt;br /&gt;
	full = &#039;full&#039;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function message(key, ...)&lt;br /&gt;
	local params = {...}&lt;br /&gt;
	local msg = cfg[key]&lt;br /&gt;
	if #params &amp;lt; 1 then&lt;br /&gt;
		return msg&lt;br /&gt;
	else&lt;br /&gt;
		return mw.message.newRawMessage(msg):params(params):plain()&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isTranscludedOnMainPage(titleObj)&lt;br /&gt;
	local mainPage = message(&#039;main-page&#039;)&lt;br /&gt;
	for i, source in ipairs(titleObj.cascadingProtection.sources) do&lt;br /&gt;
		if source == mainPage then&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function validateLevel(level)&lt;br /&gt;
	return level and validLevels[level] or &#039;full&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getLevelInfo(level, field)&lt;br /&gt;
	return cfg.protectionLevels[level][field]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function resolveRedirect(page)&lt;br /&gt;
	return mRedirect.luaMain(page)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function isProtected(page)&lt;br /&gt;
	local action = mw.title.new(page).exists and &#039;edit&#039; or &#039;create&#039;&lt;br /&gt;
	return effectiveProtectionLevel(action, page) ~= &#039;*&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.makeRequestUrl(level, titleObj)&lt;br /&gt;
	titleObj = titleObj or mw.title.getCurrentTitle()&lt;br /&gt;
	if isTranscludedOnMainPage(titleObj) then&lt;br /&gt;
		return tostring(mw.uri.fullUrl(message(&#039;main-page-request-page&#039;)))&lt;br /&gt;
	end&lt;br /&gt;
	local talkPageName = resolveRedirect(titleObj.talkPageTitle.prefixedText)&lt;br /&gt;
	if isProtected(talkPageName) then&lt;br /&gt;
		return tostring(mw.uri.fullUrl(message(&#039;protected-talk-page-request-page&#039;)))&lt;br /&gt;
	end&lt;br /&gt;
	level = validateLevel(level)&lt;br /&gt;
	local url = mw.uri.fullUrl(talkPageName, {&lt;br /&gt;
		action = &#039;edit&#039;,&lt;br /&gt;
		editintro = getLevelInfo(level, &#039;editintro&#039;),&lt;br /&gt;
		preload = message(&#039;preload-template&#039;),&lt;br /&gt;
		preloadtitle = message(&lt;br /&gt;
			&#039;preload-title-text&#039;,&lt;br /&gt;
			getLevelInfo(level, &#039;levelText&#039;),&lt;br /&gt;
			lang:formatDate(message(&#039;preload-title-date-format&#039;))&lt;br /&gt;
		),&lt;br /&gt;
		section = &#039;new&#039;&lt;br /&gt;
	})&lt;br /&gt;
	url = tostring(url)&lt;br /&gt;
&lt;br /&gt;
	-- Add the preload parameters. @TODO: merge this into the mw.uri.fullUrl&lt;br /&gt;
	-- query table once [[phab:T93059]] is fixed.&lt;br /&gt;
	local function encodeParam(key, val)&lt;br /&gt;
		return string.format(&#039;&amp;amp;%s=%s&#039;, mw.uri.encode(key), mw.uri.encode(val))&lt;br /&gt;
	end&lt;br /&gt;
	url = url .. encodeParam(&#039;preloadparams[]&#039;, getLevelInfo(level, &#039;requestTemplate&#039;))&lt;br /&gt;
	url = url .. encodeParam(&#039;preloadparams[]&#039;, titleObj.prefixedText)&lt;br /&gt;
&lt;br /&gt;
	return url&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._link(args)&lt;br /&gt;
	return string.format(&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[%s %s]&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
		p.makeRequestUrl(args.type),&lt;br /&gt;
		args.display or message(&#039;default-display-value&#039;)&lt;br /&gt;
	)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._button(args)&lt;br /&gt;
	return require(&#039;Module:Clickable button 2&#039;).luaMain{&lt;br /&gt;
		[1] = args.display or message(&#039;default-display-value&#039;),&lt;br /&gt;
		url = p.makeRequestUrl(args.type),&lt;br /&gt;
		class = &#039;mw-ui-progressive&#039;&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function makeInvokeFunc(func, wrapper)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		local args = require(&#039;Module:Arguments&#039;).getArgs(frame, {&lt;br /&gt;
			wrappers = {wrapper}&lt;br /&gt;
		})&lt;br /&gt;
		return func(args)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.link = makeInvokeFunc(p._link, message(&#039;link-wrapper-template&#039;))&lt;br /&gt;
p.button = makeInvokeFunc(p._button, message(&#039;button-wrapper-template&#039;))&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Su&amp;diff=129</id>
		<title>モジュール:Su</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:Su&amp;diff=129"/>
		<updated>2026-07-20T06:54:36Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「-- This module implements {{su}}.  local p = {}  function p.main(frame) 	-- Use arguments from the parent frame only, and remove any blank arguments. 	-- We don&amp;#039;t need to trim whitespace from any arguments, as this module only 	-- uses named arguments, and whitespace is trimmed from them automatically.  	local origArgs = frame:getParent().args 	local args = {} 	for k, v in pairs(origArgs) do 		if v ~= &amp;#039;&amp;#039; then 			args[k] = v 		end 	end  	-- Define the variables to pa…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module implements {{su}}.&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
function p.main(frame)&lt;br /&gt;
	-- Use arguments from the parent frame only, and remove any blank arguments.&lt;br /&gt;
	-- We don&#039;t need to trim whitespace from any arguments, as this module only&lt;br /&gt;
	-- uses named arguments, and whitespace is trimmed from them automatically. &lt;br /&gt;
	local origArgs = frame:getParent().args&lt;br /&gt;
	local args = {}&lt;br /&gt;
	for k, v in pairs(origArgs) do&lt;br /&gt;
		if v ~= &#039;&#039; then&lt;br /&gt;
			args[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Define the variables to pass to luaMain.&lt;br /&gt;
	local sup = args.p&lt;br /&gt;
	local sub = args.b&lt;br /&gt;
	local options = {&lt;br /&gt;
		align = args.a,&lt;br /&gt;
		fontSize = args.w,&lt;br /&gt;
		lineHeight = args.lh,&lt;br /&gt;
		verticalAlign = args.va&lt;br /&gt;
	}&lt;br /&gt;
	return p._main(sup, sub, options)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._main(sup, sub, options)&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	local span = mw.html.create(&#039;span&#039;)&lt;br /&gt;
&lt;br /&gt;
	-- Set the styles.&lt;br /&gt;
	span:css{&lt;br /&gt;
		[&#039;display&#039;]        = &#039;inline-block&#039;,&lt;br /&gt;
		[&#039;margin-bottom&#039;]  = &#039;-0.3em&#039;,&lt;br /&gt;
		[&#039;vertical-align&#039;] = options.verticalAlign or sub and &#039;-0.4em&#039; or &#039;0.8em&#039;,&lt;br /&gt;
		[&#039;line-height&#039;]    = options.lineHeight or &#039;1.2em&#039;&lt;br /&gt;
	}&lt;br /&gt;
	if options.fontSize == &#039;f&#039; or options.fontSize == &#039;fixed&#039; then&lt;br /&gt;
		span:css{&lt;br /&gt;
			[&#039;font-family&#039;] = &#039;monospace,monospace&#039;,&lt;br /&gt;
			[&#039;font-size&#039;]   = &#039;80%&#039;&lt;br /&gt;
		}&lt;br /&gt;
	else&lt;br /&gt;
		span:css(&#039;font-size&#039;, options.fontSize and options.fontSize or &#039;80%&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if options.align == &#039;r&#039; or options.align == &#039;right&#039; then&lt;br /&gt;
		span:css(&#039;text-align&#039;, &#039;right&#039;)&lt;br /&gt;
	elseif options.align == &#039;c&#039; or options.align == &#039;center&#039; then&lt;br /&gt;
		span:css(&#039;text-align&#039;, &#039;center&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		span:css(&#039;text-align&#039;, &#039;left&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the wikitext.&lt;br /&gt;
	span&lt;br /&gt;
		:wikitext(sup)&lt;br /&gt;
		:tag(&#039;br&#039;, {selfClosing = true}):done()&lt;br /&gt;
		:wikitext(sub)&lt;br /&gt;
	&lt;br /&gt;
	return tostring(span)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:String/doc&amp;diff=128</id>
		<title>モジュール:String/doc</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:String/doc&amp;diff=128"/>
		<updated>2026-07-20T06:53:18Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「{{使用箇所の多いテンプレート|300,000以上}} {{Module rating|p}} 文字列を扱ういくつかの関数を提供するモジュールです。UTF-8でエンコードされた文字列を取り扱えます。  このモジュールのユニットテストについてはモジュール:String/testcasesをご参照ください。  == 共通引数 == {| class=&amp;quot;wikitable&amp;quot; |+ 引数の一覧 ! 引数 !! 内容 !! 既定値 !! 説明…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{使用箇所の多いテンプレート|300,000以上}}&lt;br /&gt;
{{Module rating|p}}&lt;br /&gt;
文字列を扱ういくつかの関数を提供するモジュールです。[[UTF-8]]でエンコードされた文字列を取り扱えます。&lt;br /&gt;
&lt;br /&gt;
この[[Wikipedia:Lua|モジュール]]のユニットテストについては[[モジュール:String/testcases]]をご参照ください。&lt;br /&gt;
&lt;br /&gt;
== 共通引数 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 引数の一覧&lt;br /&gt;
! 引数 !! 内容 !! 既定値 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
! ignore_errors&lt;br /&gt;
| エラー無視 || &#039;&#039;なし&#039;&#039; ||&lt;br /&gt;
; false, no, 0, &#039;&#039;空文字&#039;&#039; : エラーがあるときはそのままエラーを返す&lt;br /&gt;
; true、1など上記以外の文字列 : エラーがあってもエラーを返さず空文字を返す&lt;br /&gt;
|-&lt;br /&gt;
! error_category&lt;br /&gt;
| エラーカテゴリ || [[:Category:モジュールStringのエラー]] || エラーがあるときの[[:Category:追跡カテゴリ]]名を指定する&lt;br /&gt;
|-&lt;br /&gt;
! no_category&lt;br /&gt;
| カテゴリ付与 || &#039;&#039;なし&#039;&#039; ||&lt;br /&gt;
; false, no, 0, &#039;&#039;空文字&#039;&#039; : エラーがあるときにエラーカテゴリを付与する&lt;br /&gt;
; true、1など上記以外の文字列 : エラーがあってもエラーカテゴリを付与しない&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
=== len ===&lt;br /&gt;
文字列の長さを返します。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|len|文字列}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
もしくは&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|len|s=文字列}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 引数の一覧&lt;br /&gt;
! 引数 !! 内容 !! 既定値 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
! s&lt;br /&gt;
| 文字列 || &#039;&#039;なし&#039;&#039; || 対象の文字列&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|len| abcdefghi }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|len| abcdefghi }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|len|s= abcdefghi }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|len|s= abcdefghi }}&lt;br /&gt;
&lt;br /&gt;
=== sub ===&lt;br /&gt;
文字列から指定された部分の文字列を抜き出して返します。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|sub|文字列|開始位置|終了位置}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
もしくは&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|sub|s=文字列|i=開始位置|j=終了位置}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 引数の一覧&lt;br /&gt;
! 引数 !! 内容 !! 既定値 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
! s&lt;br /&gt;
| 文字列 || &#039;&#039;なし&#039;&#039; || 元の文字列&lt;br /&gt;
|-&lt;br /&gt;
! i&lt;br /&gt;
| 開始位置 || 1 || 抜き出す初めの文字の位置&lt;br /&gt;
|-&lt;br /&gt;
! j&lt;br /&gt;
| 終了位置 || -1 || 抜き出す最後の文字の位置&lt;br /&gt;
|}&lt;br /&gt;
開始位置・終了位置には負の数を指定することも可能です。その場合、文字列の後ろから数えます。例えば、「-1」は文字列の最後の文字です。&lt;br /&gt;
&lt;br /&gt;
文字の位置が範囲外の場合、エラーになります。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|sub| abcdefghi }}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|sub| abcdefghi }}&amp;quot;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|sub|s= abcdefghi }}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|sub|s= abcdefghi }}&amp;quot;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|sub| abcdefghi | 3 }}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|sub| abcdefghi | 3 }}&amp;quot;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|sub|s= abcdefghi |i= 3 }}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|sub|s= abcdefghi |i= 3 }}&amp;quot;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|sub| abcdefghi | 3 | 4 }}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|sub| abcdefghi | 3 | 4 }}&amp;quot;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|sub|s= abcdefghi |i= 3 |j= 4 }}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|sub|s= abcdefghi |i= 3 |j= 4 }}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== sublength ===&lt;br /&gt;
この関数は{{tl|Str sub}}を実装しており、Str subのような古いテンプレートを維持するために残されています。文字列から指定された部分の文字列を抜き出して返します。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|sublength|s=文字列|i=開始位置|len=長さ}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 引数の一覧&lt;br /&gt;
! 引数 !! 内容 !! 既定値 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
! s&lt;br /&gt;
| 文字列 || &#039;&#039;なし&#039;&#039; || 元の文字列&lt;br /&gt;
|-&lt;br /&gt;
! i&lt;br /&gt;
| 開始位置 || 1 || 抜き出す初めの文字の位置。1文字目は&amp;quot;0&amp;quot;を指定します&lt;br /&gt;
|-&lt;br /&gt;
! len&lt;br /&gt;
| 長さ || 元の文字列の長さ || 抜き出す文字列の長さ&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|sublength|s= abcdefghi }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|sublength|s= abcdefghi }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|sublength|s= abcdefghi |i= 3 }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|sublength|s= abcdefghi |i= 3 }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|sublength|s= abcdefghi |i= 3 |len= 4 }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|sublength|s= abcdefghi |i= 3 |len= 4 }}&lt;br /&gt;
&lt;br /&gt;
=== match ===&lt;br /&gt;
パターンに一致する文字列を返します。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|match|文字列|パターン|検索開始位置|一致番号|プレーンフラグ|エラー出力}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
もしくは&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|match&lt;br /&gt;
|s=文字列&lt;br /&gt;
|pattern=パターン&lt;br /&gt;
|start=検索開始位置&lt;br /&gt;
|match=一致番号&lt;br /&gt;
|plain=プレーンフラグ&lt;br /&gt;
|nomatch=エラー出力&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 引数の一覧&lt;br /&gt;
! 引数 !! 内容 !! 既定値 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
! s&lt;br /&gt;
| 文字列 || &#039;&#039;なし&#039;&#039; || 検索対象の文字列&lt;br /&gt;
|-&lt;br /&gt;
! pattern&lt;br /&gt;
| パターン || &#039;&#039;なし&#039;&#039; || 検索する文字列パターン&lt;br /&gt;
|-&lt;br /&gt;
! start&lt;br /&gt;
| 検索開始位置 || 1 || 検索を開始する文字の位置&lt;br /&gt;
|-&lt;br /&gt;
! match&lt;br /&gt;
| 一致番号 || 1 || 検索開始位置から何番目の一致箇所を返すか&lt;br /&gt;
|-&lt;br /&gt;
! plain&lt;br /&gt;
| プレーンフラグ || false ||&lt;br /&gt;
; false, no, 0, &#039;&#039;空文字&#039;&#039; : パターンを[[mw:Extension:Scribunto/Lua_reference_manual#Patterns|Luaパターン]]として解釈する&lt;br /&gt;
; true、1など上記以外の文字列 : パターンをプレーンテキストとして解釈する&lt;br /&gt;
|-&lt;br /&gt;
! nomatch&lt;br /&gt;
| エラー出力 || &#039;&#039;なし&#039;&#039; || 何もマッチしなかったときに返す文字列&amp;lt;br /&amp;gt;何も指定しないとエラーを返す（既定）&lt;br /&gt;
|}&lt;br /&gt;
検索開始位置・一致番号には負の数を指定することも可能です。その場合、後ろから数えます。&lt;br /&gt;
&lt;br /&gt;
パターンにキャプチャがある場合はそのキャプチャを返します。&lt;br /&gt;
&lt;br /&gt;
matchかstart引数が範囲外の場合、エラーを返します。パターンが見つからなかった場合はnomatchを指定していなければエラーを返します。また、ignore_errors=trueを指定した場合、いずれのエラーも返さず、代わりに空の文字列を返します。&lt;br /&gt;
&lt;br /&gt;
Luaパターンの詳細は[[mw:Extension:Scribunto/Lua_reference_manual#Patterns|Scribunto patterns]]と[[mw:Extension:Scribunto/Lua_reference_manual#Ustring_patterns|Scribunto Unicode string patterns]]をご参照ください。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|match| abc123def456 |%d+}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|match| abc123def456 |%d+}}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|match|s= abc123def456 |pattern= %d+ }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|match|s= abc123def456 |pattern= %d+ }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|match| abc123def456 |%d+|6}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|match| abc123def456 |%d+|6}}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|match|s= abc123def456 |pattern= %d+ |start= 6 }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|match|s= abc123def456 |pattern= %d+ |start= 6 }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|match|s= abc123def456 |pattern= %d+ |start= 6 |match= 2 }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|match|s= abc123def456 |pattern= %d+ |start= 6 |match= 2 }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|match|s= abc123%d+ |pattern= %d+ }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|match|s= abc123%d+ |pattern= %d+ }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|match|s= abc123%d+ |pattern= %d+ |plain= true }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|match|s= abc123%d+ |pattern= %d+ |plain= true }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|match|s= abc |pattern= %d }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|match|s= abc |pattern= %d |no_category=1 }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|match|s= abc |pattern= %d |nomatch= No numeric characters in string }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|match|s= abc |pattern= %d |nomatch= No numeric characters in string }}&lt;br /&gt;
&lt;br /&gt;
=== pos ===&lt;br /&gt;
文字列の中から指定された位置にある文字を返します。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|pos|文字列|位置}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
もしくは&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|pos|target=文字列|pos=位置}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 引数の一覧&lt;br /&gt;
! 引数 !! 内容 !! 既定値 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
! target&lt;br /&gt;
| 文字列 || &#039;&#039;なし&#039;&#039; || 検索対象の文字列&lt;br /&gt;
|-&lt;br /&gt;
! pos&lt;br /&gt;
| 位置 || &#039;&#039;なし&#039;&#039; || 返す文字の位置&lt;br /&gt;
|}&lt;br /&gt;
位置には負の数を指定することも可能です。その場合、文字列の後ろから数えます。例えば、「-1」は文字列の最後の文字です。&lt;br /&gt;
&lt;br /&gt;
posが0または文字列の長さより大きい場合、エラーを返します。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|pos| abcdefghi | 4 }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|pos| abcdefghi | 4 }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|pos|target= abcdefghi |pos= 4 }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|pos|target= abcdefghi |pos= 4 }}&lt;br /&gt;
&lt;br /&gt;
=== str_find ===&lt;br /&gt;
この関数は{{tl|Str find}}を実装します。この関数が提供されるのは既存のテンプレートを維持するためであり、&#039;&#039;&#039;新しいコードやテンプレートには推奨されません&#039;&#039;&#039;。新しいコードには代わりにfind関数を使用してください。&amp;quot;source&amp;quot;の文字列の中から&amp;quot;target&amp;quot;のパターンを検索し、その位置を返します。パターンが見つからない場合は-1を返します。&lt;br /&gt;
&lt;br /&gt;
なお、&amp;quot;target&amp;quot;の文字列が空白か指定されていない場合、1を返します。これは一般的とは言えない挙動であり、特別に扱う必要があります。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|str_find|文字列|パターン}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
もしくは&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|str_find|source=文字列|target=パターン}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|str_find| abc123def }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|str_find| abc123def }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|str_find|source= abc123def }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|str_find|source= abc123def }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|str_find| abc123def |123}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|str_find| abc123def |123}}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|str_find|source= abc123def |target= 123 }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|str_find|source= abc123def |target= 123 }}&lt;br /&gt;
&lt;br /&gt;
=== find ===&lt;br /&gt;
文字列の中からパターンを検索しその位置を返します。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|find|文字列|パターン|検索開始位置|プレーンフラグ}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
もしくは&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|find&lt;br /&gt;
|source=文字列&lt;br /&gt;
|target=パターン&lt;br /&gt;
|start=検索開始位置&lt;br /&gt;
|plain=プレーンフラグ&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 引数の一覧&lt;br /&gt;
! 引数 !! 内容 !! 既定値 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
! source&lt;br /&gt;
| 文字列 || &#039;&#039;なし&#039;&#039; || 検索対象の文字列&lt;br /&gt;
|-&lt;br /&gt;
! target&lt;br /&gt;
| パターン || &#039;&#039;なし&#039;&#039; || 検索する文字列パターン&lt;br /&gt;
|-&lt;br /&gt;
! start&lt;br /&gt;
| 検索開始位置 || 1 || 検索を開始する文字の位置&lt;br /&gt;
|-&lt;br /&gt;
! plain&lt;br /&gt;
| プレーンフラグ || true ||&lt;br /&gt;
; false, no, 0, &#039;&#039;空文字&#039;&#039; : パターンを[[mw:Extension:Scribunto/Lua_reference_manual#Patterns|Luaパターン]]として解釈する&lt;br /&gt;
; trueなど上記以外の文字列 : パターンをプレーンテキストとして解釈する&lt;br /&gt;
|}&lt;br /&gt;
最初の文字の位置は1としています。文字列・パターンが指定されていなかったり、もしくは文字列の中にパターンがなかった場合は、0を返します。この関数は[[UTF-8]]の文字列にも使えます。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|find| abc123def }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|find| abc123def }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|find|source= abc123def }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|find|source= abc123def }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|find| abc123def |123}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|find| abc123def |123}}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|find|source= abc123def |target= 123 }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|find|source= abc123def |target= 123 }}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|find| abc123def |%d|3|false}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|find| abc123def |%d|3|false}}&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#invoke:String|find|source= abc123def |target= %d |start= 3 |plain= false }}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → {{#invoke:String|find|source= abc123def |target= %d |start= 3 |plain= false }}&lt;br /&gt;
&lt;br /&gt;
=== replace ===&lt;br /&gt;
パターンと一致する部分を別の文字列で置き換えます。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|replace|文字列|パターン|置換文字列|置換回数|プレーンフラグ}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
もしくは&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|replace&lt;br /&gt;
|source=文字列&lt;br /&gt;
|pattern=パターン&lt;br /&gt;
|replace=置換文字列&lt;br /&gt;
|count=置換回数&lt;br /&gt;
|plain=プレーンフラグ&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 引数の一覧&lt;br /&gt;
! 引数 !! 内容 !! 既定値 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
! source&lt;br /&gt;
| 文字列 || &#039;&#039;なし&#039;&#039; || 対象の文字列&lt;br /&gt;
|-&lt;br /&gt;
! pattern&lt;br /&gt;
| パターン || &#039;&#039;なし&#039;&#039; || 置換される文字列パターン&lt;br /&gt;
|-&lt;br /&gt;
! replace&lt;br /&gt;
| 置換文字列 || &#039;&#039;なし&#039;&#039; || 置換する文字列&amp;lt;br /&amp;gt;何も指定しないとパターンを削除する（既定）&lt;br /&gt;
|-&lt;br /&gt;
! count&lt;br /&gt;
| 置換回数 || &#039;&#039;なし&#039;&#039; || 置換する回数&amp;lt;br /&amp;gt;何も指定しないと可能な箇所すべてを置換する（既定）&lt;br /&gt;
|-&lt;br /&gt;
! plain&lt;br /&gt;
| プレーンフラグ || true ||&lt;br /&gt;
; false, no, 0, &#039;&#039;空文字&#039;&#039; : パターンを[[mw:Extension:Scribunto/Lua_reference_manual#Patterns|Luaパターン]]として解釈する&lt;br /&gt;
; trueなど上記以外の文字列 : パターンをプレーンテキストとして解釈する&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|replace| abc123def456 |123|N}}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|replace| abc123def456 |123|N}}&amp;quot;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|replace|source= abc123def456 |pattern= 123 |replace= N }}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|replace|source= abc123def456 |pattern= 123 |replace= N }}&amp;quot;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|replace| abc123def456 |%d+|N|1|false}}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|replace| abc123def456 |%d+|N|1|false}}&amp;quot;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= N |count=1 |plain= false }}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= N |count=1 |plain= false }}&amp;quot;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= N |plain= false }}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= N |plain= false }}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== rep ===&lt;br /&gt;
Luaのstring.repをテンプレートにも使えるようにするための関数であり、文字列を指定回数返します。&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;moin&amp;quot;&amp;gt;&lt;br /&gt;
{{#invoke:String|rep|文字列|繰り返し回数}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ 引数の一覧&lt;br /&gt;
! 引数 !! 内容 !! 既定値 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
! source&lt;br /&gt;
| 文字列 || &#039;&#039;なし&#039;&#039; || 対象の文字列&lt;br /&gt;
|-&lt;br /&gt;
! count&lt;br /&gt;
| 繰り返し回数 || &#039;&#039;なし&#039;&#039; || 対象の文字列を繰り返す回数&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|rep|hello|3}}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|rep|hello|3}}&amp;quot;&lt;br /&gt;
*&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;quot;{{#invoke:String|rep| hello | 3 }}&amp;quot;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; → &amp;quot;{{#invoke:String|rep| hello | 3 }}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
*[[モジュール:String2]] - ほかの文字列処理用関数&lt;br /&gt;
*[[モジュール:StringFunc]]&lt;br /&gt;
*{{仮リンク|モジュール:Ustring|en|Module:Ustring}}&lt;br /&gt;
*[[mw:Extension:Scribunto/Lua reference manual#Ustring library]] - 使用しているメタ関数&lt;br /&gt;
*[[mw:Extension:Scribunto/Lua reference manual#Patterns]] - Luaパターン&lt;br /&gt;
*[[mw:Extension:Scribunto/Lua reference manual#Ustring_patterns]] - UTF-8関連の正規表現&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;{{Sandbox other||&lt;br /&gt;
[[Category:Luaメタモジュール]] &lt;br /&gt;
[[Category:追跡カテゴリを追加するモジュール]]&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:String&amp;diff=127</id>
		<title>モジュール:String</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB:String&amp;diff=127"/>
		<updated>2026-07-20T06:51:58Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「--[[  This module is intended to provide access to basic string functions.  Most of the functions provided here can be invoked with named parameters, unnamed parameters, or a mixture.  If named parameters are used, Mediawiki will automatically remove any leading or trailing whitespace from the parameter. Depending on the intended use, it may be advantageous to either preserve or remove such whitespace.  Global options     ignore_errors: If set to &amp;#039;true&amp;#039; or 1, any er…」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[&lt;br /&gt;
&lt;br /&gt;
This module is intended to provide access to basic string functions.&lt;br /&gt;
&lt;br /&gt;
Most of the functions provided here can be invoked with named parameters,&lt;br /&gt;
unnamed parameters, or a mixture.  If named parameters are used, Mediawiki will&lt;br /&gt;
automatically remove any leading or trailing whitespace from the parameter.&lt;br /&gt;
Depending on the intended use, it may be advantageous to either preserve or&lt;br /&gt;
remove such whitespace.&lt;br /&gt;
&lt;br /&gt;
Global options&lt;br /&gt;
    ignore_errors: If set to &#039;true&#039; or 1, any error condition will result in&lt;br /&gt;
        an empty string being returned rather than an error message.&lt;br /&gt;
&lt;br /&gt;
    error_category: If an error occurs, specifies the name of a category to&lt;br /&gt;
        include with the error message.  The default category is&lt;br /&gt;
        [Category:モジュールStringのエラー].&lt;br /&gt;
&lt;br /&gt;
    no_category: If set to &#039;true&#039; or 1, no category will be added if an error&lt;br /&gt;
        is generated.&lt;br /&gt;
&lt;br /&gt;
Unit tests for this module are available at Module:String/tests.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local str = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
len&lt;br /&gt;
&lt;br /&gt;
This function returns the length of the target string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|len|target_string|}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|len|s=target_string}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string whose length to report&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the target string.&lt;br /&gt;
]]&lt;br /&gt;
function str.len( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;s&#039;} )&lt;br /&gt;
	local s = new_args[&#039;s&#039;] or &#039;&#039;&lt;br /&gt;
	return mw.ustring.len( s )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
sub&lt;br /&gt;
&lt;br /&gt;
This function returns a substring of the target string at specified indices.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|sub|target_string|start_index|end_index}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|sub|s=target_string|i=start_index|j=end_index}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to return a subset of&lt;br /&gt;
    i: The fist index of the substring to return, defaults to 1.&lt;br /&gt;
    j: The last index of the string to return, defaults to the last character.&lt;br /&gt;
&lt;br /&gt;
The first character of the string is assigned an index of 1.  If either i or j&lt;br /&gt;
is a negative value, it is interpreted the same as selecting a character by&lt;br /&gt;
counting from the end of the string.  Hence, a value of -1 is the same as&lt;br /&gt;
selecting the last character of the string.&lt;br /&gt;
&lt;br /&gt;
If the requested indices are out of range for the given string, an error is&lt;br /&gt;
reported.&lt;br /&gt;
]]&lt;br /&gt;
function str.sub( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, { &#039;s&#039;, &#039;i&#039;, &#039;j&#039; } )&lt;br /&gt;
	local s = new_args[&#039;s&#039;] or &#039;&#039;&lt;br /&gt;
	local i = tonumber( new_args[&#039;i&#039;] ) or 1&lt;br /&gt;
	local j = tonumber( new_args[&#039;j&#039;] ) or -1&lt;br /&gt;
&lt;br /&gt;
	local len = mw.ustring.len( s )&lt;br /&gt;
&lt;br /&gt;
	-- Convert negatives for range checking&lt;br /&gt;
	if i &amp;lt; 0 then&lt;br /&gt;
		i = len + i + 1&lt;br /&gt;
	end&lt;br /&gt;
	if j &amp;lt; 0 then&lt;br /&gt;
		j = len + j + 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if i &amp;gt; len or j &amp;gt; len or i &amp;lt; 1 or j &amp;lt; 1 then&lt;br /&gt;
		return str._error( &#039;String subset index out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if j &amp;lt; i then&lt;br /&gt;
		return str._error( &#039;String subset indices out of order&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.ustring.sub( s, i, j )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
This function implements that features of {{str sub old}} and is kept in order&lt;br /&gt;
to maintain these older templates.&lt;br /&gt;
]]&lt;br /&gt;
function str.sublength( frame )&lt;br /&gt;
	local i = tonumber( frame.args.i ) or 0&lt;br /&gt;
	local len = tonumber( frame.args.len )&lt;br /&gt;
	return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
_match&lt;br /&gt;
&lt;br /&gt;
This function returns a substring from the source string that matches a&lt;br /&gt;
specified pattern. It is exported for use in other modules&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
strmatch = require(&amp;quot;Module:String&amp;quot;)._match&lt;br /&gt;
sresult = strmatch( s, pattern, start, match, plain, nomatch )&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to search&lt;br /&gt;
    pattern: The pattern or string to find within the string&lt;br /&gt;
    start: The index within the source string to start the search.  The first&lt;br /&gt;
        character of the string has index 1.  Defaults to 1.&lt;br /&gt;
    match: In some cases it may be possible to make multiple matches on a single&lt;br /&gt;
        string.  This specifies which match to return, where the first match is&lt;br /&gt;
        match= 1.  If a negative number is specified then a match is returned&lt;br /&gt;
        counting from the last match.  Hence match = -1 is the same as requesting&lt;br /&gt;
        the last match.  Defaults to 1.&lt;br /&gt;
    plain: A flag indicating that the pattern should be understood as plain&lt;br /&gt;
        text.  Defaults to false.&lt;br /&gt;
    nomatch: If no match is found, output the &amp;quot;nomatch&amp;quot; value rather than an error.&lt;br /&gt;
&lt;br /&gt;
For information on constructing Lua patterns, a form of [regular expression], see:&lt;br /&gt;
&lt;br /&gt;
* http://www.lua.org/manual/5.1/manual.html#5.4.1&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
-- This sub-routine is exported for use in other modules&lt;br /&gt;
function str._match( s, pattern, start, match_index, plain_flag, nomatch )&lt;br /&gt;
	if s == &#039;&#039; then&lt;br /&gt;
		return str._error( &#039;Target string is empty&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if pattern == &#039;&#039; then&lt;br /&gt;
		return str._error( &#039;Pattern string is empty&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	start = tonumber(start) or 1&lt;br /&gt;
	if math.abs(start) &amp;lt; 1 or math.abs(start) &amp;gt; mw.ustring.len( s ) then&lt;br /&gt;
		return str._error( &#039;Requested start is out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if match_index == 0 then&lt;br /&gt;
		return str._error( &#039;Match index is out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	if plain_flag then&lt;br /&gt;
		pattern = str._escapePattern( pattern )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result&lt;br /&gt;
	if match_index == 1 then&lt;br /&gt;
		-- Find first match is simple case&lt;br /&gt;
		result = mw.ustring.match( s, pattern, start )&lt;br /&gt;
	else&lt;br /&gt;
		if start &amp;gt; 1 then&lt;br /&gt;
			s = mw.ustring.sub( s, start )&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local iterator = mw.ustring.gmatch(s, pattern)&lt;br /&gt;
		if match_index &amp;gt; 0 then&lt;br /&gt;
			-- Forward search&lt;br /&gt;
			for w in iterator do&lt;br /&gt;
				match_index = match_index - 1&lt;br /&gt;
				if match_index == 0 then&lt;br /&gt;
					result = w&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- Reverse search&lt;br /&gt;
			local result_table = {}&lt;br /&gt;
			local count = 1&lt;br /&gt;
			for w in iterator do&lt;br /&gt;
				result_table[count] = w&lt;br /&gt;
				count = count + 1&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			result = result_table[ count + match_index ]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if result == nil then&lt;br /&gt;
		if nomatch == nil then&lt;br /&gt;
			return str._error( &#039;Match not found&#039; )&lt;br /&gt;
		else&lt;br /&gt;
			return nomatch&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
match&lt;br /&gt;
&lt;br /&gt;
This function returns a substring from the source string that matches a&lt;br /&gt;
specified pattern.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index&lt;br /&gt;
    |match=match_number|plain=plain_flag|nomatch=nomatch_output}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    s: The string to search&lt;br /&gt;
    pattern: The pattern or string to find within the string&lt;br /&gt;
    start: The index within the source string to start the search.  The first&lt;br /&gt;
        character of the string has index 1.  Defaults to 1.&lt;br /&gt;
    match: In some cases it may be possible to make multiple matches on a single&lt;br /&gt;
        string.  This specifies which match to return, where the first match is&lt;br /&gt;
        match= 1.  If a negative number is specified then a match is returned&lt;br /&gt;
        counting from the last match.  Hence match = -1 is the same as requesting&lt;br /&gt;
        the last match.  Defaults to 1.&lt;br /&gt;
    plain: A flag indicating that the pattern should be understood as plain&lt;br /&gt;
        text.  Defaults to false.&lt;br /&gt;
    nomatch: If no match is found, output the &amp;quot;nomatch&amp;quot; value rather than an error.&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from each string.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
If the match_number or start_index are out of range for the string being queried, then&lt;br /&gt;
this function generates an error.  An error is also generated if no match is found.&lt;br /&gt;
If one adds the parameter ignore_errors=true, then the error will be suppressed and&lt;br /&gt;
an empty string will be returned on any failure.&lt;br /&gt;
&lt;br /&gt;
For information on constructing Lua patterns, a form of [regular expression], see:&lt;br /&gt;
&lt;br /&gt;
* http://www.lua.org/manual/5.1/manual.html#5.4.1&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
-- This is the entry point for #invoke:String|match&lt;br /&gt;
function str.match( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;s&#039;, &#039;pattern&#039;, &#039;start&#039;, &#039;match&#039;, &#039;plain&#039;, &#039;nomatch&#039;} )&lt;br /&gt;
	local s = new_args[&#039;s&#039;] or &#039;&#039;&lt;br /&gt;
	local start = tonumber( new_args[&#039;start&#039;] ) or 1&lt;br /&gt;
	local plain_flag = str._getBoolean( new_args[&#039;plain&#039;] or false )&lt;br /&gt;
	local pattern = new_args[&#039;pattern&#039;] or &#039;&#039;&lt;br /&gt;
	local match_index = math.floor( tonumber(new_args[&#039;match&#039;]) or 1 )&lt;br /&gt;
	local nomatch = new_args[&#039;nomatch&#039;]&lt;br /&gt;
&lt;br /&gt;
	return str._match( s, pattern, start, match_index, plain_flag, nomatch )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
pos&lt;br /&gt;
&lt;br /&gt;
This function returns a single character from the target string at position pos.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|pos|target_string|index_value}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|pos|target=target_string|pos=index_value}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    target: The string to search&lt;br /&gt;
    pos: The index for the character to return&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the target string.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
The first character has an index value of 1.&lt;br /&gt;
&lt;br /&gt;
If one requests a negative value, this function will select a character by counting backwards&lt;br /&gt;
from the end of the string.  In other words pos = -1 is the same as asking for the last character.&lt;br /&gt;
&lt;br /&gt;
A requested value of zero, or a value greater than the length of the string returns an error.&lt;br /&gt;
]]&lt;br /&gt;
function str.pos( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;target&#039;, &#039;pos&#039;} )&lt;br /&gt;
	local target_str = new_args[&#039;target&#039;] or &#039;&#039;&lt;br /&gt;
	local pos = tonumber( new_args[&#039;pos&#039;] ) or 0&lt;br /&gt;
&lt;br /&gt;
	if pos == 0 or math.abs(pos) &amp;gt; mw.ustring.len( target_str ) then&lt;br /&gt;
		return str._error( &#039;String index out of range&#039; )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return mw.ustring.sub( target_str, pos, pos )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
str_find&lt;br /&gt;
&lt;br /&gt;
This function duplicates the behavior of {{str_find}}, including all of its quirks.&lt;br /&gt;
This is provided in order to support existing templates, but is NOT RECOMMENDED for&lt;br /&gt;
new code and templates.  New code is recommended to use the &amp;quot;find&amp;quot; function instead.&lt;br /&gt;
&lt;br /&gt;
Returns the first index in &amp;quot;source&amp;quot; that is a match to &amp;quot;target&amp;quot;.  Indexing is 1-based,&lt;br /&gt;
and the function returns -1 if the &amp;quot;target&amp;quot; string is not present in &amp;quot;source&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Important Note: If the &amp;quot;target&amp;quot; string is empty / missing, this function returns a&lt;br /&gt;
value of &amp;quot;1&amp;quot;, which is generally unexpected behavior, and must be accounted for&lt;br /&gt;
separatetly.&lt;br /&gt;
]]&lt;br /&gt;
function str.str_find( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;source&#039;, &#039;target&#039;} )&lt;br /&gt;
	local source_str = new_args[&#039;source&#039;] or &#039;&#039;&lt;br /&gt;
	local target_str = new_args[&#039;target&#039;] or &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
	if target_str == &#039;&#039; then&lt;br /&gt;
		return 1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local start = mw.ustring.find( source_str, target_str, 1, true )&lt;br /&gt;
	if start == nil then&lt;br /&gt;
		start = -1&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return start&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
find&lt;br /&gt;
&lt;br /&gt;
This function allows one to search for a target string or pattern within another&lt;br /&gt;
string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|find|source_str|target_string|start_index|plain_flag}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|find|source=source_str|target=target_str|start=start_index|plain=plain_flag}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    source: The string to search&lt;br /&gt;
    target: The string or pattern to find within source&lt;br /&gt;
    start: The index within the source string to start the search, defaults to 1&lt;br /&gt;
    plain: Boolean flag indicating that target should be understood as plain&lt;br /&gt;
        text and not as a Lua style regular expression, defaults to true&lt;br /&gt;
&lt;br /&gt;
If invoked using named parameters, Mediawiki will automatically remove any leading or&lt;br /&gt;
trailing whitespace from the parameter.  In some circumstances this is desirable, in&lt;br /&gt;
other cases one may want to preserve the whitespace.&lt;br /&gt;
&lt;br /&gt;
This function returns the first index &amp;gt;= &amp;quot;start&amp;quot; where &amp;quot;target&amp;quot; can be found&lt;br /&gt;
within &amp;quot;source&amp;quot;.  Indices are 1-based.  If &amp;quot;target&amp;quot; is not found, then this&lt;br /&gt;
function returns 0.  If either &amp;quot;source&amp;quot; or &amp;quot;target&amp;quot; are missing / empty, this&lt;br /&gt;
function also returns 0.&lt;br /&gt;
&lt;br /&gt;
This function should be safe for UTF-8 strings.&lt;br /&gt;
]]&lt;br /&gt;
function str.find( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;source&#039;, &#039;target&#039;, &#039;start&#039;, &#039;plain&#039; } )&lt;br /&gt;
	local source_str = new_args[&#039;source&#039;] or &#039;&#039;&lt;br /&gt;
	local pattern = new_args[&#039;target&#039;] or &#039;&#039;&lt;br /&gt;
	local start_pos = tonumber(new_args[&#039;start&#039;]) or 1&lt;br /&gt;
	local plain = new_args[&#039;plain&#039;] or true&lt;br /&gt;
&lt;br /&gt;
	if source_str == &#039;&#039; or pattern == &#039;&#039; then&lt;br /&gt;
		return 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	plain = str._getBoolean( plain )&lt;br /&gt;
&lt;br /&gt;
	local start = mw.ustring.find( source_str, pattern, start_pos, plain )&lt;br /&gt;
	if start == nil then&lt;br /&gt;
		start = 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return start&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
replace&lt;br /&gt;
&lt;br /&gt;
This function allows one to replace a target string or pattern within another&lt;br /&gt;
string.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}&lt;br /&gt;
OR&lt;br /&gt;
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|&lt;br /&gt;
   count=replacement_count|plain=plain_flag}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    source: The string to search&lt;br /&gt;
    pattern: The string or pattern to find within source&lt;br /&gt;
    replace: The replacement text&lt;br /&gt;
    count: The number of occurences to replace, defaults to all.&lt;br /&gt;
    plain: Boolean flag indicating that pattern should be understood as plain&lt;br /&gt;
        text and not as a Lua style regular expression, defaults to true&lt;br /&gt;
]]&lt;br /&gt;
function str.replace( frame )&lt;br /&gt;
	local new_args = str._getParameters( frame.args, {&#039;source&#039;, &#039;pattern&#039;, &#039;replace&#039;, &#039;count&#039;, &#039;plain&#039; } )&lt;br /&gt;
	local source_str = new_args[&#039;source&#039;] or &#039;&#039;&lt;br /&gt;
	local pattern = new_args[&#039;pattern&#039;] or &#039;&#039;&lt;br /&gt;
	local replace = new_args[&#039;replace&#039;] or &#039;&#039;&lt;br /&gt;
	local count = tonumber( new_args[&#039;count&#039;] )&lt;br /&gt;
	local plain = new_args[&#039;plain&#039;] or true&lt;br /&gt;
&lt;br /&gt;
	if source_str == &#039;&#039; or pattern == &#039;&#039; then&lt;br /&gt;
		return source_str&lt;br /&gt;
	end&lt;br /&gt;
	plain = str._getBoolean( plain )&lt;br /&gt;
&lt;br /&gt;
	if plain then&lt;br /&gt;
		pattern = str._escapePattern( pattern )&lt;br /&gt;
		replace = mw.ustring.gsub( replace, &amp;quot;%%&amp;quot;, &amp;quot;%%%%&amp;quot; ) --Only need to escape replacement sequences.&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result&lt;br /&gt;
&lt;br /&gt;
	if count ~= nil then&lt;br /&gt;
		result = mw.ustring.gsub( source_str, pattern, replace, count )&lt;br /&gt;
	else&lt;br /&gt;
		result = mw.ustring.gsub( source_str, pattern, replace )&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    simple function to pipe string.rep to templates.&lt;br /&gt;
]]&lt;br /&gt;
function str.rep( frame )&lt;br /&gt;
	local repetitions = tonumber( frame.args[2] )&lt;br /&gt;
	if not repetitions then&lt;br /&gt;
		return str._error( &#039;function rep expects a number as second parameter, received &amp;quot;&#039; .. ( frame.args[2] or &#039;&#039; ) .. &#039;&amp;quot;&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return string.rep( frame.args[1] or &#039;&#039;, repetitions )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
escapePattern&lt;br /&gt;
&lt;br /&gt;
This function escapes special characters from a Lua string pattern. See [1]&lt;br /&gt;
for details on how patterns work.&lt;br /&gt;
&lt;br /&gt;
[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|escapePattern|pattern_string}}&lt;br /&gt;
&lt;br /&gt;
Parameters&lt;br /&gt;
    pattern_string: The pattern string to escape.&lt;br /&gt;
]]&lt;br /&gt;
function str.escapePattern( frame )&lt;br /&gt;
	local pattern_str = frame.args[1]&lt;br /&gt;
	if not pattern_str then&lt;br /&gt;
		return str._error( &#039;No pattern string specified&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	local result = str._escapePattern( pattern_str )&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
count&lt;br /&gt;
This function counts the number of occurrences of one string in another.&lt;br /&gt;
]]&lt;br /&gt;
function str.count(frame)&lt;br /&gt;
	local args = str._getParameters(frame.args, {&#039;source&#039;, &#039;pattern&#039;, &#039;plain&#039;})&lt;br /&gt;
	local source = args.source or &#039;&#039;&lt;br /&gt;
	local pattern = args.pattern or &#039;&#039;&lt;br /&gt;
	local plain = str._getBoolean(args.plain or true)&lt;br /&gt;
	if plain then&lt;br /&gt;
		pattern = str._escapePattern(pattern)&lt;br /&gt;
	end&lt;br /&gt;
	local _, count = mw.ustring.gsub(source, pattern, &#039;&#039;)&lt;br /&gt;
	return count&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
endswith&lt;br /&gt;
This function determines whether a string ends with another string.&lt;br /&gt;
]]&lt;br /&gt;
function str.endswith(frame)&lt;br /&gt;
	local args = str._getParameters(frame.args, {&#039;source&#039;, &#039;pattern&#039;})&lt;br /&gt;
	local source = args.source or &#039;&#039;&lt;br /&gt;
	local pattern = args.pattern or &#039;&#039;&lt;br /&gt;
	if pattern == &#039;&#039; then&lt;br /&gt;
		-- All strings end with the empty string.&lt;br /&gt;
		return &amp;quot;yes&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	if mw.ustring.sub(source, -mw.ustring.len(pattern), -1) == pattern then&lt;br /&gt;
		return &amp;quot;yes&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
join&lt;br /&gt;
&lt;br /&gt;
Join all non empty arguments together; the first argument is the separator.&lt;br /&gt;
Usage:&lt;br /&gt;
{{#invoke:String|join|sep|one|two|three}}&lt;br /&gt;
]]&lt;br /&gt;
function str.join(frame)&lt;br /&gt;
	local args = {}&lt;br /&gt;
	local sep&lt;br /&gt;
	for _, v in ipairs( frame.args ) do&lt;br /&gt;
		if sep then&lt;br /&gt;
			if v ~= &#039;&#039; then&lt;br /&gt;
				table.insert(args, v)&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			sep = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat( args, sep or &#039;&#039; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that populates the argument list given that user may need to use a mix of&lt;br /&gt;
named and unnamed parameters.  This is relevant because named parameters are not&lt;br /&gt;
identical to unnamed parameters due to string trimming, and when dealing with strings&lt;br /&gt;
we sometimes want to either preserve or remove that whitespace depending on the application.&lt;br /&gt;
]]&lt;br /&gt;
function str._getParameters( frame_args, arg_list )&lt;br /&gt;
	local new_args = {}&lt;br /&gt;
	local index = 1&lt;br /&gt;
	local value&lt;br /&gt;
&lt;br /&gt;
	for _, arg in ipairs( arg_list ) do&lt;br /&gt;
		value = frame_args[arg]&lt;br /&gt;
		if value == nil then&lt;br /&gt;
			value = frame_args[index]&lt;br /&gt;
			index = index + 1&lt;br /&gt;
		end&lt;br /&gt;
		new_args[arg] = value&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return new_args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function to handle error messages.&lt;br /&gt;
]]&lt;br /&gt;
function str._error( error_str )&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	local error_category = frame.args.error_category or &#039;モジュールStringのエラー&#039;&lt;br /&gt;
	local ignore_errors = frame.args.ignore_errors or false&lt;br /&gt;
	local no_category = frame.args.no_category or false&lt;br /&gt;
&lt;br /&gt;
	if str._getBoolean(ignore_errors) then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local error_str = &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;モジュールStringのエラー: &#039; .. error_str .. &#039;&amp;lt;/strong&amp;gt;&#039;&lt;br /&gt;
	if error_category ~= &#039;&#039; and not str._getBoolean( no_category ) then&lt;br /&gt;
		error_str = &#039;[[Category:&#039; .. error_category .. &#039;]]&#039; .. error_str&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return error_str&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper Function to interpret boolean strings&lt;br /&gt;
]]&lt;br /&gt;
function str._getBoolean( boolean_str )&lt;br /&gt;
	local boolean_value&lt;br /&gt;
&lt;br /&gt;
	if type( boolean_str ) == &#039;string&#039; then&lt;br /&gt;
		boolean_str = boolean_str:lower()&lt;br /&gt;
		if boolean_str == &#039;false&#039; or boolean_str == &#039;no&#039; or boolean_str == &#039;0&#039;&lt;br /&gt;
				or boolean_str == &#039;&#039; then&lt;br /&gt;
			boolean_value = false&lt;br /&gt;
		else&lt;br /&gt;
			boolean_value = true&lt;br /&gt;
		end&lt;br /&gt;
	elseif type( boolean_str ) == &#039;boolean&#039; then&lt;br /&gt;
		boolean_value = boolean_str&lt;br /&gt;
	else&lt;br /&gt;
		error( &#039;No boolean value found&#039; )&lt;br /&gt;
	end&lt;br /&gt;
	return boolean_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Helper function that escapes all pattern characters so that they will be treated&lt;br /&gt;
as plain text.&lt;br /&gt;
]]&lt;br /&gt;
function str._escapePattern( pattern_str )&lt;br /&gt;
	return mw.ustring.gsub( pattern_str, &amp;quot;([%(%)%.%%%+%-%*%?%[%^%$%]])&amp;quot;, &amp;quot;%%%1&amp;quot; )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return str&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
	<entry>
		<id>http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Tl&amp;diff=126</id>
		<title>テンプレート:Tl</title>
		<link rel="alternate" type="text/html" href="http://japolitiball.myht.org/index.php?title=%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88:Tl&amp;diff=126"/>
		<updated>2026-07-20T06:49:23Z</updated>

		<summary type="html">&lt;p&gt;LiberalPolandball: ページの作成:「&amp;amp;#123;&amp;amp;#123;{{{1}}}&amp;amp;#125;&amp;amp;#125;&amp;lt;noinclude&amp;gt; {{documentation}} &amp;lt;!-- カテゴリと言語間リンクはここではなく、/doc サブページに追加してください --&amp;gt; &amp;lt;/noinclude&amp;gt;」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;amp;#123;&amp;amp;#123;[[Template:{{{1}}}|{{{1}}}]]&amp;amp;#125;&amp;amp;#125;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- カテゴリと言語間リンクはここではなく、/doc サブページに追加してください --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>LiberalPolandball</name></author>
	</entry>
</feed>