<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.atom596.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=EmpressAutumn</id>
	<title>Empire of Mars Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.atom596.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=EmpressAutumn"/>
	<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php/Special:Contributions/EmpressAutumn"/>
	<updated>2026-07-21T17:02:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Main_Page&amp;diff=65</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Main_Page&amp;diff=65"/>
		<updated>2026-01-23T05:30:06Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Rewrote the home page, giving a brief explanation of the &amp;quot;phases&amp;quot; of the scenario&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the wiki for the &#039;&#039;&#039;Empire of Mars&#039;&#039;&#039; scenario, created by EmpressAutumn.&lt;br /&gt;
&lt;br /&gt;
Empire of Mars is an alternate history and future history creative writing project set in the mid-22nd Century.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
For the purpose of writing the scenario, Empire of Mars is split into five &amp;quot;phases&amp;quot;. These phases are marked by several highly-significant events, and the goal of the writing project is to connect these events by filling in the phases with plausible and highly detailed information.&lt;br /&gt;
&lt;br /&gt;
=== First Phase (1992 - 2016) ===&lt;br /&gt;
The Empire of Mars scenario diverged from our timeline on the 16th of July 1992, as independent candidate Ross Perot chose not to withdraw from the 1992 presidential election.&lt;br /&gt;
&lt;br /&gt;
=== Second Phase (2016 - 2040) ===&lt;br /&gt;
On the 23rd of June 2016, the first Brexit referendum was held in the United Kingdom, and the &amp;quot;Remain&amp;quot; vote won by a slim margin. A month later, on the 25th of July 2016, the Democratic Party of the United States officially nominated Bernie Sanders for the 2016 presidential election. These two events mark the beginning of the second phase of the Empire of Mars scenario.&lt;br /&gt;
&lt;br /&gt;
=== Third Phase (2040 - roughly 2090) ===&lt;br /&gt;
The third phase begins when Blair Halifax is elected President of the United States.&lt;br /&gt;
&lt;br /&gt;
=== Fourth Phase (roughly 2090 - 2153) ===&lt;br /&gt;
The fourth phase begins with the start of the Martian Revolutions.&lt;br /&gt;
&lt;br /&gt;
=== Fifth Phase (2153 - ongoing) ===&lt;br /&gt;
By the 22nd Century, humanity has significantly advanced in many ways. During the Second Space Race, colonies were built on the Moon and Mars and have continued to grow since then. On Earth, climate change has been mitigated and most of the world has been industrialized. It is an optimistic but reasonable view for the future of humanity.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Halifax_Family&amp;diff=64</id>
		<title>Halifax Family</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Halifax_Family&amp;diff=64"/>
		<updated>2025-07-09T13:55:16Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: /* Blair Halifax */ Rewrote the section about Blair Halifax&amp;#039;s rise to the Presidency&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Halifax Family&#039;&#039;&#039; is a prominent political family in the [[North American Federation]]. It has produced one Prime Minister of Canada, one President of the United States, and two Presidents and one Prime Minister of the North American Federation.&lt;br /&gt;
&lt;br /&gt;
== Blair Halifax ==&lt;br /&gt;
&#039;&#039;&#039;Blair Morgan Halifax&#039;&#039;&#039; was the 49th President of the United States of America from 2041 to 2045, and the 1st President of the [[North American Federation]] from 2045 to 2055. Prior to the uniting of North America, she was a citizen of both the United States and Canada. She played a pivotal role in the formation of the NAF, and was its longest-serving President.&lt;br /&gt;
&lt;br /&gt;
Halifax was born on the 18th of January 2003 in Trenton, New Jersey. Her father, Frederick Halifax, was a Canadian immigrant, so Blair was a citizen of both countries. She moved to Toms River, New Jersey 2021 at the age of 18. She became interested in left-wing politics during the Presidency of Bernie Sanders, and started working in local politics.&lt;br /&gt;
&lt;br /&gt;
In 2025, Halifax ran for Township Council in Toms River, focusing primarily on reducing poverty rates and increasing the average income. Despite being a Republican-dominated area, she won the election for Councilman-at-Large and took office on the 1st of January 2026. She was reelected to this position in 2029. Her time on the Council saw an increase in spending and revenue, and a reduction in the poverty rate.&lt;br /&gt;
&lt;br /&gt;
Halifax ran for the United States Senate in 2032, as then-senior Senator Cory Booker was stepping down. She emphasized her leadership experience while on the Toms River Council and was vocally opposed to the popular Hogan Administration. She won the Democratic primary, and ultimately was elected to the Senate with 41% of the popular vote, outperforming most predictions. She took office on the 18th of January 2033, her 30th birthday, after spending 15 days as a non-voting observer.&lt;br /&gt;
&lt;br /&gt;
During her term as Senator, Halifax continued to be a strong opponent of the Hogan and White Administrations. She became well-known nationwide during her 2034 media tour, where she endorsed several anti-Hogan Senate and Congressional candidates. Thanks in part to this effort, the Democratic Party became completely dominated by its progressive wing. In 2036, Halifax went on another media tour to campaign for David Perez, which was unsuccessful. She decisively won a second term in the Senate in 2038, a year which saw the Democrats win a majority in both houses due to an economic recession. She resigned on the 17th of January 2041 after 8 years in office.&lt;br /&gt;
&lt;br /&gt;
Halifax announced her intention to run for President in the autumn of 2039. She promised to balance the budget, lower the cost of living, and restore America&#039;s social services to their pre-Hogan states. Although the Blue Dogs were put in a uniquely strong position by the Republican Party&#039;s infighting, she won 302 Electoral College votes and took office on the 20th of January 2041. She was the only dual citizen, as well as the second woman and second person from New Jersey, to hold the office of President of the United States.&lt;br /&gt;
&lt;br /&gt;
Blair was a supporter of strengthening connections with the Republic of Canada, signing the Mutual Voting Rights Agreement in 2041, which allowed citizens of the United States living in Canada to vote in Canadian elections, and vice versa. This agreement was&lt;br /&gt;
&lt;br /&gt;
Blair ran for reelection in 2044, pledging to continue integration with Canada, and she managed to win another term. On 5 October 2045, she and Prime Minister Carrol signed the North American Federation Acts, merging the United States of America and the Republic of Canada. She then became acting President of North America, and new elections were scheduled for November 2046.&lt;br /&gt;
&lt;br /&gt;
Blair ran for President of North America in 2046, sparking debates about whether the 22nd Amendment should prevent her from seeking a third term. In a controversial Supreme Court decision, it was decided that the Presidency of the United States and the Presidency of North America were two different offices, and that Blair was eligible to serve two full terms in the future. She went on to win the election, affirming public support for the decision.&lt;br /&gt;
&lt;br /&gt;
Blair again ran for reelection in 2050 and won.&lt;br /&gt;
&lt;br /&gt;
At the age of 68, Blair died in her New Jersey home in 2072.&lt;br /&gt;
&lt;br /&gt;
== Bradley Carrol ==&lt;br /&gt;
Bradley Carrol was the 26th Prime Minister of Canada from 2034 to 2045 and the 1st Prime Minister of the [[North American Federation]] from 2045 to 2046. He was a cousin of Blair Halifax, and was an important player in the abolition of the Canadian Monarchy and the uniting of North America.&lt;br /&gt;
&lt;br /&gt;
Bradley was born in 1999 in Ontario to two Canadian parents. His mother was a member of the Halifax family, and her brother was Blair Halifax&#039;s father.&lt;br /&gt;
&lt;br /&gt;
Bradley ran for Parliament in 2030, winning a seat. His rhetorical skills allowed him to rise quickly in the Liberal Party, and after the 2034 Parliamentary Election, he was elected Prime Minister of the Kingdom of Canada in a coalition with the New Democratic Party.&lt;br /&gt;
&lt;br /&gt;
During the February 2038 Election, Bradley helped expand the Liberal Party&#039;s support, winning an outright majority in Parliament. Following the death of King Henry I and the ascension of Archie I, he again called for elections in June. He capitalized on republican sentiments and the unpopularity of the new king to win a supermajority in the June 2038 Election, and subsequently abolished the monarchy and created the Republic of Canada. He also signed the Mutual Voting Rights Agreement during this term.&lt;br /&gt;
&lt;br /&gt;
Bradley ran for Parliament again in the 2042 Election, promising to work with President Blair Halifax on continued integration between the United States and Canada. The Liberal Party lost its supermajority, but maintained a majority in Parliament and allowed him to continue as Prime Minister. In 2045, he signed the North American Federalization Acts with President Halifax, and became the acting Prime Minister of North America.&lt;br /&gt;
&lt;br /&gt;
Following the 2046 Federal Elections, Bradley intended to continue serving as Prime Minister. However, the Social Democrat and Liberal Parties, which intended to form a coalition together, failed to win a combined majority in Parliament. Although he maintained his seat, he decided to resign his leadership of the Liberal Party and retire from politics. He died in 2070 at the age of 70.&lt;br /&gt;
&lt;br /&gt;
== Yusef Halifax ==&lt;br /&gt;
Yusef Halifax was President of the [[North American Federation]] from 2110 to 2118. He ran on the promise of ending the [[Martian Revolutions]], and upon his inauguration, he announced that North America no longer intended to reconquer its colonies. During his administration, he normalized relations with the Empire of Mars. He was the great nephew of Blair Halifax by her younger brother.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Halifax_Family&amp;diff=63</id>
		<title>Halifax Family</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Halifax_Family&amp;diff=63"/>
		<updated>2025-05-08T15:13:16Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: /* Blair Halifax */ Added a middle name and a full date of birth&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Halifax Family&#039;&#039;&#039; is a prominent political family in the [[North American Federation]]. It has produced one Prime Minister of Canada, one President of the United States, and two Presidents and one Prime Minister of the North American Federation.&lt;br /&gt;
&lt;br /&gt;
== Blair Halifax ==&lt;br /&gt;
Blair Janis Halifax was the 48th President of the United States of America from 2041 to 2045, and the 1st President of the [[North American Federation]] from 2045 to 2055. Prior to the uniting of North America, she was a citizen of both the United States and Canada. She played a pivotal role in the formation of the NAF, and was its longest-serving President.&lt;br /&gt;
&lt;br /&gt;
Blair was born on the 18th of January 2004 in Trenton, New Jersey. Her mother was an American and her father was a Canadian immigrant, so she was a citizen of both countries. She became interested in left-wing politics during the Presidency of Bernie Sanders, and started working in local politics.&lt;br /&gt;
&lt;br /&gt;
She ran for President in 2040, at the age of 35, and won by a large margin. She was the only dual citizen, as well as the second woman and second person from New Jersey, to hold the office of President of the United States. Blair was a supporter of strengthening connections with the Republic of Canada, signing the Mutual Voting Rights Agreement in 2041, which allowed citizens of the United States living in Canada to vote in Canadian elections, and vice versa. This agreement was &lt;br /&gt;
&lt;br /&gt;
Blair ran for reelection in 2044, pledging to continue integration with Canada, and she managed to win another term. On 5 October 2045, she and Prime Minister Carrol signed the North American Federation Acts, merging the United States of America and the Republic of Canada. She then became acting President of North America, and new elections were scheduled for November 2046.&lt;br /&gt;
&lt;br /&gt;
Blair ran for President of North America in 2046, sparking debates about whether the 22nd Amendment should prevent her from seeking a third term. In a controversial Supreme Court decision, it was decided that the Presidency of the United States and the Presidency of North America were two different offices, and that Blair was eligible to serve two full terms in the future. She went on to win the election, affirming public support for the decision.&lt;br /&gt;
&lt;br /&gt;
Blair again ran for reelection in 2050 and won.&lt;br /&gt;
&lt;br /&gt;
At the age of 68, Blair died in her New Jersey home in 2072.&lt;br /&gt;
&lt;br /&gt;
== Bradley Carrol ==&lt;br /&gt;
Bradley Carrol was the 26th Prime Minister of Canada from 2034 to 2045 and the 1st Prime Minister of the [[North American Federation]] from 2045 to 2046. He was a cousin of Blair Halifax, and was an important player in the abolition of the Canadian Monarchy and the uniting of North America.&lt;br /&gt;
&lt;br /&gt;
Bradley was born in 1999 in Ontario to two Canadian parents. His mother was a member of the Halifax family, and her brother was Blair Halifax&#039;s father.&lt;br /&gt;
&lt;br /&gt;
Bradley ran for Parliament in 2030, winning a seat. His rhetorical skills allowed him to rise quickly in the Liberal Party, and after the 2034 Parliamentary Election, he was elected Prime Minister of the Kingdom of Canada in a coalition with the New Democratic Party.&lt;br /&gt;
&lt;br /&gt;
During the February 2038 Election, Bradley helped expand the Liberal Party&#039;s support, winning an outright majority in Parliament. Following the death of King Henry I and the ascension of Archie I, he again called for elections in June. He capitalized on republican sentiments and the unpopularity of the new king to win a supermajority in the June 2038 Election, and subsequently abolished the monarchy and created the Republic of Canada. He also signed the Mutual Voting Rights Agreement during this term.&lt;br /&gt;
&lt;br /&gt;
Bradley ran for Parliament again in the 2042 Election, promising to work with President Blair Halifax on continued integration between the United States and Canada. The Liberal Party lost its supermajority, but maintained a majority in Parliament and allowed him to continue as Prime Minister. In 2045, he signed the North American Federalization Acts with President Halifax, and became the acting Prime Minister of North America.&lt;br /&gt;
&lt;br /&gt;
Following the 2046 Federal Elections, Bradley intended to continue serving as Prime Minister. However, the Social Democrat and Liberal Parties, which intended to form a coalition together, failed to win a combined majority in Parliament. Although he maintained his seat, he decided to resign his leadership of the Liberal Party and retire from politics. He died in 2070 at the age of 70.&lt;br /&gt;
&lt;br /&gt;
== Yusef Halifax ==&lt;br /&gt;
Yusef Halifax was President of the [[North American Federation]] from 2110 to 2118. He ran on the promise of ending the [[Martian Revolutions]], and upon his inauguration, he announced that North America no longer intended to reconquer its colonies. During his administration, he normalized relations with the Empire of Mars. He was the great nephew of Blair Halifax by her younger brother.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=List_of_crewed_Mars_missions&amp;diff=62</id>
		<title>List of crewed Mars missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=List_of_crewed_Mars_missions&amp;diff=62"/>
		<updated>2025-04-29T20:18:38Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: /* New Space Race (2028 - 20xx) */ Wrote about Mars missions up until 2042&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since the mid-2030s, Mars has been a near-constant target of crewed missions by multiple countries. &lt;br /&gt;
&lt;br /&gt;
The first crewed Mars mission was Tianwen 6, a Chinese National Space Agency mission which landed taikonauts at three locations on the planet&#039;s surface. The first temporary base was Lindsay Eddie Base, set down during the Ares 2 mission.&lt;br /&gt;
&lt;br /&gt;
== New Space Race (2028 - 20xx) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Mission&lt;br /&gt;
!Launch Date&lt;br /&gt;
!Landing Date&lt;br /&gt;
!Mission Length&lt;br /&gt;
!Return Date&lt;br /&gt;
!Agency&lt;br /&gt;
Company&lt;br /&gt;
!Location&lt;br /&gt;
!Notable Information&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Tianwen 6&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|2036&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |[[wikipedia:China_National_Space_Administration|CNSA]]&lt;br /&gt;
|East Tharsis&lt;br /&gt;
|First crewed Mars landing, first landing on another planet&lt;br /&gt;
|-&lt;br /&gt;
|2036&lt;br /&gt;
|Isidis&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2036&lt;br /&gt;
|Medidiani&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Ares 1&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|2036&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |[[wikipedia:NASA|NASA]], [[wikipedia:European_Space_Agency|ESA]], [[wikipedia:Canadian_Space_Agency|CSA]]&lt;br /&gt;
[[wikipedia:SpaceX|SpaceX]]&lt;br /&gt;
|Sinai&lt;br /&gt;
|First American, Canadian, and European crewed Mars landing&lt;br /&gt;
|-&lt;br /&gt;
|2036&lt;br /&gt;
|Syrtis Major&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ares 2&lt;br /&gt;
|&lt;br /&gt;
|2038&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA, ESA, CSA, [[wikipedia:UK_Space_Agency|UKSA]]&lt;br /&gt;
SpaceX&lt;br /&gt;
|Elysium&lt;br /&gt;
|First temporary Mars base, first British crewed Mars landing&lt;br /&gt;
|-&lt;br /&gt;
|Tianwen 8&lt;br /&gt;
|&lt;br /&gt;
|2039&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CNSA&lt;br /&gt;
|Gemina&lt;br /&gt;
|First polar Mars base&lt;br /&gt;
|-&lt;br /&gt;
|Ares 3&lt;br /&gt;
|&lt;br /&gt;
|2039&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA, ESA, CSA&lt;br /&gt;
SpaceX&lt;br /&gt;
|West of Coloe&lt;br /&gt;
|Forced to perform emergency landing near Coloe, returned to Earth early&lt;br /&gt;
|-&lt;br /&gt;
|Ares 4&lt;br /&gt;
|&lt;br /&gt;
|2039&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA, ESA, [[wikipedia:JAXA|JAXA]]&lt;br /&gt;
SpaceX&lt;br /&gt;
|Icaria&lt;br /&gt;
|First southern hemisphere base, left a space station (MaSt) in low orbit&lt;br /&gt;
|-&lt;br /&gt;
|Tianwen 9&lt;br /&gt;
|&lt;br /&gt;
|2039&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CNSA, [[wikipedia:Roscosmos|Roscosmos]]&lt;br /&gt;
|Mareotis&lt;br /&gt;
|First semi-permanent and underground base, first Russian crewed Mars landing&lt;br /&gt;
|-&lt;br /&gt;
|Ares 5&lt;br /&gt;
|&lt;br /&gt;
|2040&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA, CSA&lt;br /&gt;
[[wikipedia:Boeing|Boeing]]&lt;br /&gt;
|Gemini&lt;br /&gt;
|First semi-permanent polar base&lt;br /&gt;
|-&lt;br /&gt;
|Tianwen 10&lt;br /&gt;
|&lt;br /&gt;
|2040&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CNSA&lt;br /&gt;
|Elysium&lt;br /&gt;
|First expedition to look for metal ores&lt;br /&gt;
|-&lt;br /&gt;
|Euromars 1&lt;br /&gt;
|&lt;br /&gt;
|2041&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|ESA, UKSA&lt;br /&gt;
|Malea&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MaSt-1&lt;br /&gt;
|&lt;br /&gt;
|2041&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA-CSA&lt;br /&gt;
Boeing&lt;br /&gt;
|Icaria&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Tianwen 11&lt;br /&gt;
|&lt;br /&gt;
|2041&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CNSA, Roscosmos&lt;br /&gt;
|Huo Hsing Vallis&lt;br /&gt;
|Left a gateway station (Huoxing Zhan) in high orbit&lt;br /&gt;
|-&lt;br /&gt;
|Ares 6&lt;br /&gt;
|&lt;br /&gt;
|2041&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA-CSA, UKSA, JAXA&lt;br /&gt;
Boeing&lt;br /&gt;
|Jezero&lt;br /&gt;
|First permanent Mars base, first use of 3D printing construction technology&lt;br /&gt;
|-&lt;br /&gt;
|MaSt-2&lt;br /&gt;
|&lt;br /&gt;
|2041&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA-CSA, ESA, UKSA&lt;br /&gt;
|Hellespontus&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Starbase 2&lt;br /&gt;
|&lt;br /&gt;
|2042&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|SpaceX&lt;br /&gt;
|West of Coloe&lt;br /&gt;
|Used the supplies from Ares 3, first fully-private Mars landing, first tourists on Mars&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=List_of_crewed_Mars_missions&amp;diff=61</id>
		<title>List of crewed Mars missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=List_of_crewed_Mars_missions&amp;diff=61"/>
		<updated>2025-04-28T23:37:10Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Added SpaceX to the American Mars missions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since the mid-2030s, Mars has been a near-constant target of crewed missions by multiple countries. &lt;br /&gt;
&lt;br /&gt;
The first crewed Mars mission was Tianwen 6, a Chinese National Space Agency mission which landed taikonauts at three locations on the planet&#039;s surface. The first temporary base was Lindsay Eddie Base, set down during the Ares 2 mission.&lt;br /&gt;
&lt;br /&gt;
== New Space Race (2028 - 20xx) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Mission&lt;br /&gt;
!Launch Date&lt;br /&gt;
!Landing Date&lt;br /&gt;
!Mission Length&lt;br /&gt;
!Return Date&lt;br /&gt;
!Agency&lt;br /&gt;
Company&lt;br /&gt;
!Location&lt;br /&gt;
!Notable Information&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Tianwen 6&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|2036&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |[[wikipedia:China_National_Space_Administration|CNSA]]&lt;br /&gt;
|East Tharsis&lt;br /&gt;
|First crewed Mars landing, first landing on another planet&lt;br /&gt;
|-&lt;br /&gt;
|2036&lt;br /&gt;
|Isidis&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2036&lt;br /&gt;
|Medidiani&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Ares 1&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|2036&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |[[wikipedia:NASA|NASA]], [[wikipedia:European_Space_Agency|ESA]], [[wikipedia:Canadian_Space_Agency|CSA]]&lt;br /&gt;
[[wikipedia:SpaceX|SpaceX]]&lt;br /&gt;
|Sinai&lt;br /&gt;
|First American, Canadian, and European crewed Mars landing&lt;br /&gt;
|-&lt;br /&gt;
|2036&lt;br /&gt;
|Syrtis Major&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ares 2&lt;br /&gt;
|&lt;br /&gt;
|2038&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA, ESA, CSA, [[wikipedia:UK_Space_Agency|UKSA]]&lt;br /&gt;
SpaceX&lt;br /&gt;
|Elysium&lt;br /&gt;
|First temporary Mars base, first British crewed Mars landing&lt;br /&gt;
|-&lt;br /&gt;
|Tianwen 8&lt;br /&gt;
|&lt;br /&gt;
|2039&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CNSA&lt;br /&gt;
|Gemina&lt;br /&gt;
|First polar Mars base&lt;br /&gt;
|-&lt;br /&gt;
|Ares 3&lt;br /&gt;
|&lt;br /&gt;
|2039&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA, ESA, CSA&lt;br /&gt;
SpaceX&lt;br /&gt;
|West of Coloe&lt;br /&gt;
|Forced to perform emergency landing near Coloe, returned to Earth early&lt;br /&gt;
|-&lt;br /&gt;
|Ares 4&lt;br /&gt;
|&lt;br /&gt;
|2039&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA, ESA, [[wikipedia:JAXA|JAXA]]&lt;br /&gt;
SpaceX&lt;br /&gt;
|Icaria&lt;br /&gt;
|First southern hemisphere base&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=List_of_crewed_Mars_missions&amp;diff=60</id>
		<title>List of crewed Mars missions</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=List_of_crewed_Mars_missions&amp;diff=60"/>
		<updated>2025-04-28T21:39:22Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Created the page and started writing about the initial crewed missions to Mars&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since the mid-2030s, Mars has been a near-constant target of crewed missions by multiple countries. &lt;br /&gt;
&lt;br /&gt;
The first crewed Mars mission was Tianwen 6, a Chinese National Space Agency mission which landed taikonauts at three locations on the planet&#039;s surface. The first temporary base was Lindsay Eddie Base, set down during the Ares 2 mission.&lt;br /&gt;
&lt;br /&gt;
== New Space Race ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!Mission&lt;br /&gt;
!Launch Date&lt;br /&gt;
!Landing Date&lt;br /&gt;
!Mission Length&lt;br /&gt;
!Return Date&lt;br /&gt;
!Agency/Company&lt;br /&gt;
!Location&lt;br /&gt;
!Notable Information&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |Tianwen 6&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
|2036&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; |[[wikipedia:China_National_Space_Administration|CNSA]]&lt;br /&gt;
|East Tharsis&lt;br /&gt;
|First crewed Mars landing, first landing on another planet&lt;br /&gt;
|-&lt;br /&gt;
|2036&lt;br /&gt;
|Isidis&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2036&lt;br /&gt;
|Medidiani&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |Ares 1&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|2036&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; |[[wikipedia:NASA|NASA]], [[wikipedia:European_Space_Agency|ESA]], [[wikipedia:Canadian_Space_Agency|CSA]]&lt;br /&gt;
|Sinai&lt;br /&gt;
|First American, Canadian, and European crewed Mars landing&lt;br /&gt;
|-&lt;br /&gt;
|2036&lt;br /&gt;
|Syrtis Major&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ares 2&lt;br /&gt;
|&lt;br /&gt;
|2038&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA, ESA, CSA, [[wikipedia:UK_Space_Agency|UKSA]]&lt;br /&gt;
|Elysium&lt;br /&gt;
|First temporary Mars base, first British crewed Mars landing&lt;br /&gt;
|-&lt;br /&gt;
|Tianwen 8&lt;br /&gt;
|&lt;br /&gt;
|2039&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|CNSA&lt;br /&gt;
|Gemina&lt;br /&gt;
|First polar Mars base&lt;br /&gt;
|-&lt;br /&gt;
|Ares 3&lt;br /&gt;
|&lt;br /&gt;
|2039&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA, ESA, CSA&lt;br /&gt;
|West of Coloe&lt;br /&gt;
|Forced to perform emergency landing near Coloe, returned to Earth early&lt;br /&gt;
|-&lt;br /&gt;
|Ares 4&lt;br /&gt;
|&lt;br /&gt;
|2039&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|NASA, ESA, [[wikipedia:JAXA|JAXA]]&lt;br /&gt;
|Icaria&lt;br /&gt;
|First southern hemisphere base&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=World_War_III&amp;diff=59</id>
		<title>World War III</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=World_War_III&amp;diff=59"/>
		<updated>2025-03-13T17:29:49Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Wrote about the Second East African War and the Ethiopian Invasion of Eritrea&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Third World War&#039;&#039;&#039; or &#039;&#039;&#039;World War III&#039;&#039;&#039; was a collection of large-scale global conflicts that took place from 2065 to 2069 between the [[Global Peace Treaty Organization]], the Republic of India and its allies, and the Russo-Chinese Alliance. The war is generally considered to have begun in 2065, however, some historians argue that it begun in 2064 or even 2062, since those years saw the beginning of regional wars that contributed to the escalation of World War III.&lt;br /&gt;
&lt;br /&gt;
== Theaters ==&lt;br /&gt;
&lt;br /&gt;
=== Middle Eastern War (2062 - 2068) ===&lt;br /&gt;
The Middle Eastern War begun on the 5th of May 2062, when Iraq declared war on Iran, and ended on the 18th of October 2068 with the signing of the Treaty of Baghdad. The war is itself made up of several smaller wars.&lt;br /&gt;
&lt;br /&gt;
==== Third Iran-Iraq War (2062 - 2068) ====&lt;br /&gt;
The Republic of Iraq declared war on the Islamic Republic of Iran on the 5th of May 2062, following years of escalating tensions over Iran’s renewed nuclear program. Iraq, estimating that Iran would have functional nuclear weapons by 2064, committed to an invasion to dismantle Iran’s nuclear program. Iraq was supported by the Levant states, while Iran was supported by Saudi Arabia, the Gulf states, and to a lesser extent, Pakistan.&lt;br /&gt;
&lt;br /&gt;
==== Gulf Campaign (2066 - 2067) ====&lt;br /&gt;
Following their declaration of war with Iraq on the 27th of February 2066, Saudi forces crossed the border on the 5th of March. Simultaneously, Kuwait began to block all imports to Iraq. Saudi Arabia aimed to take control of Iraq’s southwestern border before moving east towards Baghdad. On the 6th of March, the North American Federation declared war on Saudi Arabia, along with the rest of GPTO. By the 10th of March, Al Bașrah and An Nāșirīyah had been captured.&lt;br /&gt;
&lt;br /&gt;
On the 20th of March, the Saudi offensive was fully halted by the combined forces of Iraq, Jordan, Israel, and Syria. The next day, North America declared war on Kuwait, and half an hour later, landed forces in the country to little resistance. The Levant states declared war on Saudi Arabia over the following week, and Saudi forces quickly retreated out of Iraq during that time. On the 27th of March, all of Iraq had been liberated, ending Saudi Arabia’s four week campaign.&lt;br /&gt;
&lt;br /&gt;
=== African Front (2064 - 2069) ===&lt;br /&gt;
The African Front was primarily fought between East Africa, Ethiopia, Nigeria, South Africa, and the Congo. The fighting was triangular, meaning that there were three distinct alliances that all fought against each other at different times.&lt;br /&gt;
&lt;br /&gt;
==== First East African War (2064 - 2066) ====&lt;br /&gt;
Following the formation of the East African Federation, there were people who called for South Sudan to join the federation. The desire for unification grew in both countries, but was opposed by the government of South Sudan, which preferred to stay aligned with Ethiopia, East Africa’s regional rival. On the 3rd of August 2064, the government of South Sudan was overthrown by protesters, and was replaced by a pro-unification government. On the 8th of August, Ethiopian troops crossed the border to restore the old government, and East African troops crossed the border the next day to defend the new government.&lt;br /&gt;
&lt;br /&gt;
==== Second East African War (2066 - 2069) ====&lt;br /&gt;
Rwanda and the Congo had a history of border disputes going back to before the unification of the Congo and the federalization of East Africa. Rwandan-backed rebels had been occupying parts of the Kivu regions of the Congo since the 2020s, and the federal government of East Africa continued to support them over the next few decades. As East Africa&#039;s attention was occupied in their war with Ethiopia, the Congolese government decided to invade the separatist-held regions.&lt;br /&gt;
&lt;br /&gt;
The invasion began on the 21st of July 2066, and the first rebel lines were broken by the 24th of July. Uvira was captured on the 2nd of August, and Bukavu was captured on the 13th of August. By August 15th, the rebels had retreated to their final defensive positions, only controlling Goma and Rutshuru. They held these positions alone for two more months.&lt;br /&gt;
&lt;br /&gt;
The rapid retreat of the rebel forces was a leading motivator for the end of the First East African War. After the ceasefire was declared on the 6th of October, East African troops rushed into the rebel pocket and the Congolese border. Thirty minutes after the signing of the Treaty of Hargeisa, East Africa declared war on the Congo and moved troops into the rebel lines around Bukavu.&lt;br /&gt;
&lt;br /&gt;
==== Ethiopian Invasion of Eritrea (2067) ====&lt;br /&gt;
In the Treaty of Hargeisa, East Africa gave Ethiopia a blank cheque to invade the Republic of Eritrea, which had broken away from Ethiopia over 100 years earlier. East Africa had traditionally been a guarantor of Eritrean security, so the abandonment of their ally was widely viewed as a stab in the back. On the 9th of January 2067, Ethiopian forces entered the country.&lt;br /&gt;
&lt;br /&gt;
==== Nigerian-Congolese War (2067 - 2069) ====&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=World_War_III&amp;diff=58</id>
		<title>World War III</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=World_War_III&amp;diff=58"/>
		<updated>2025-03-13T16:36:15Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Wrote about the Gulf Campaign and the First East African War&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Third World War&#039;&#039;&#039; or &#039;&#039;&#039;World War III&#039;&#039;&#039; was a collection of large-scale global conflicts that took place from 2065 to 2069 between the [[Global Peace Treaty Organization]], the Republic of India and its allies, and the Russo-Chinese Alliance. The war is generally considered to have begun in 2065, however, some historians argue that it begun in 2064 or even 2062, since those years saw the beginning of regional wars that contributed to the escalation of World War III.&lt;br /&gt;
&lt;br /&gt;
== Theaters ==&lt;br /&gt;
&lt;br /&gt;
=== Middle Eastern War (2062 - 2068) ===&lt;br /&gt;
The Middle Eastern War begun on the 5th of May 2062, when Iraq declared war on Iran, and ended on the 18th of October 2068 with the signing of the Treaty of Baghdad. The war is itself made up of several smaller wars.&lt;br /&gt;
&lt;br /&gt;
==== Third Iran-Iraq War (2062 - 2068) ====&lt;br /&gt;
The Republic of Iraq declared war on the Islamic Republic of Iran on the 5th of May 2062, following years of escalating tensions over Iran’s renewed nuclear program. Iraq, estimating that Iran would have functional nuclear weapons by 2064, committed to an invasion to dismantle Iran’s nuclear program. Iraq was supported by the Levant states, while Iran was supported by Saudi Arabia, the Gulf states, and to a lesser extent, Pakistan.&lt;br /&gt;
&lt;br /&gt;
==== Gulf Campaign (2066 - 2067) ====&lt;br /&gt;
Following their declaration of war with Iraq on the 27th of February 2066, Saudi forces crossed the border on the 5th of March. Simultaneously, Kuwait began to block all imports to Iraq. Saudi Arabia aimed to take control of Iraq’s southwestern border before moving east towards Baghdad. On the 6th of March, the North American Federation declared war on Saudi Arabia, along with the rest of GPTO. By the 10th of March, Al Bașrah and An Nāșirīyah had been captured.&lt;br /&gt;
&lt;br /&gt;
On the 20th of March, the Saudi offensive was fully halted by the combined forces of Iraq, Jordan, Israel, and Syria. The next day, North America declared war on Kuwait, and half an hour later, landed forces in the country to little resistance. The Levant states declared war on Saudi Arabia over the following week, and Saudi forces quickly retreated out of Iraq during that time. On the 27th of March, all of Iraq had been liberated, ending Saudi Arabia’s four week campaign.&lt;br /&gt;
&lt;br /&gt;
=== African Front (2064 - 2069) ===&lt;br /&gt;
The African Front was primarily fought between East Africa, Ethiopia, Nigeria, South Africa, and the Congo. The fighting was triangular, meaning that there were three distinct alliances that all fought against each other at different times.&lt;br /&gt;
&lt;br /&gt;
==== First East African War (2064 - 2066) ====&lt;br /&gt;
Following the formation of the East African Federation, there were people who called for South Sudan to join the federation. The desire for unification grew in both countries, but was opposed by the government of South Sudan, which preferred to stay aligned with Ethiopia, East Africa’s regional rival. On the 3rd of August 2064, the government of South Sudan was overthrown by protesters, and was replaced by a pro-unification government. On the 8th of August, Ethiopian troops crossed the border to restore the old government, and East African troops crossed the border the next day to defend the new government.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=World_War_III&amp;diff=57</id>
		<title>World War III</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=World_War_III&amp;diff=57"/>
		<updated>2025-03-13T05:21:50Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Begun writing about World War III, starting with the Middle Eastern War&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Third World War&#039;&#039;&#039; or &#039;&#039;&#039;World War III&#039;&#039;&#039; was a collection of large-scale global conflicts that took place from 2065 to 2069 between the [[Global Peace Treaty Organization]], the Republic of India and its allies, and the Russo-Chinese Alliance. The war is generally considered to have begun in 2065, however, some historians argue that it begun in 2064 or even 2062, since those years saw the beginning of regional wars that contributed to the escalation of World War III.&lt;br /&gt;
&lt;br /&gt;
== Theaters ==&lt;br /&gt;
&lt;br /&gt;
=== Middle Eastern War (2062 - 2068) ===&lt;br /&gt;
The Middle Eastern War begun on the 5th of May 2062, when Iraq declared war on Iran, and ended on the 18th of October 2068 with the signing of the Treaty of Baghdad. The war is itself made up of several smaller wars.&lt;br /&gt;
&lt;br /&gt;
==== Third Iran-Iraq War (2062 - 2068) ====&lt;br /&gt;
The Republic of Iraq declared war on the Islamic Republic of Iran on the 5th of May 2062, following years of escalating tensions over Iran’s renewed nuclear program. Iraq, estimating that Iran would have functional nuclear weapons by 2064, committed to an invasion to dismantle Iran’s nuclear program. Iraq was supported by the Levant states, while Iran was supported by Saudi Arabia, the Gulf states, and to a lesser extent, Pakistan.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Main_Page&amp;diff=56</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Main_Page&amp;diff=56"/>
		<updated>2025-02-05T14:53:43Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Wrote a bit about the scenario’s premise&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the wiki for the &#039;&#039;&#039;Empire of Mars&#039;&#039;&#039; scenario, created by EmpressAutumn.&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
&#039;&#039;&#039;Empire of Mars&#039;&#039;&#039; is an alternate history and future history scenario set in the mid-22nd Century. It diverged from the real timeline in 2016, when the Democratic Party of the United States chooses to nominate Bernie Sanders for President instead of Hillary Clinton.&lt;br /&gt;
&lt;br /&gt;
By the 22nd Century, humanity has significantly advanced in many ways. During the Second Space Race, colonies were built on the Moon and Mars and have continued to grow since then. On Earth, climate change has been mitigated and most of the world has been industrialized. It is an optimistic but reasonable view for the future of humanity.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Halifax_Family&amp;diff=55</id>
		<title>Halifax Family</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Halifax_Family&amp;diff=55"/>
		<updated>2025-02-02T21:25:25Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Wrote more about Bradley Carrol&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Halifax Family&#039;&#039;&#039; is a prominent political family in the [[North American Federation]]. It has produced one Prime Minister of Canada, one President of the United States, and two Presidents and one Prime Minister of the North American Federation.&lt;br /&gt;
&lt;br /&gt;
== Blair Halifax ==&lt;br /&gt;
Blair Halifax was the 48th President of the United States of America from 2041 to 2045, and the 1st President of the [[North American Federation]] from 2045 to 2055. Prior to the uniting of North America, she was a citizen of both the United States and Canada. She played a pivotal role in the formation of the NAF, and was its longest-serving President.&lt;br /&gt;
&lt;br /&gt;
Blair was born in 2004 in Trenton, New Jersey. Her mother was an American and her father was a Canadian immigrant, so she was a citizen of both countries. She became interested in left-wing politics during the Presidency of Bernie Sanders, and started working in local politics.&lt;br /&gt;
&lt;br /&gt;
She ran for President in 2040, at the age of 35, and won by a large margin. She was the only dual citizen, as well as the second woman and second person from New Jersey, to hold the office of President of the United States. Blair was a supporter of strengthening connections with the Republic of Canada, signing the Mutual Voting Rights Agreement in 2041, which allowed citizens of the United States living in Canada to vote in Canadian elections, and vice versa. This agreement was &lt;br /&gt;
&lt;br /&gt;
Blair ran for reelection in 2044, pledging to continue integration with Canada, and she managed to win another term. On 5 October 2045, she and Prime Minister Carrol signed the North American Federation Acts, merging the United States of America and the Republic of Canada. She then became acting President of North America, and new elections were scheduled for November 2046.&lt;br /&gt;
&lt;br /&gt;
Blair ran for President of North America in 2046, sparking debates about whether the 22nd Amendment should prevent her from seeking a third term. In a controversial Supreme Court decision, it was decided that the Presidency of the United States and the Presidency of North America were two different offices, and that Blair was eligible to serve two full terms in the future. She went on to win the election, affirming public support for the decision.&lt;br /&gt;
&lt;br /&gt;
Blair again ran for reelection in 2050 and won.&lt;br /&gt;
&lt;br /&gt;
At the age of 68, Blair died in her New Jersey home in 2072.&lt;br /&gt;
&lt;br /&gt;
== Bradley Carrol ==&lt;br /&gt;
Bradley Carrol was the 26th Prime Minister of Canada from 2034 to 2045 and the 1st Prime Minister of the [[North American Federation]] from 2045 to 2046. He was a cousin of Blair Halifax, and was an important player in the abolition of the Canadian Monarchy and the uniting of North America.&lt;br /&gt;
&lt;br /&gt;
Bradley was born in 1999 in Ontario to two Canadian parents. His mother was a member of the Halifax family, and her brother was Blair Halifax&#039;s father.&lt;br /&gt;
&lt;br /&gt;
Bradley ran for Parliament in 2030, winning a seat. His rhetorical skills allowed him to rise quickly in the Liberal Party, and after the 2034 Parliamentary Election, he was elected Prime Minister of the Kingdom of Canada in a coalition with the New Democratic Party.&lt;br /&gt;
&lt;br /&gt;
During the February 2038 Election, Bradley helped expand the Liberal Party&#039;s support, winning an outright majority in Parliament. Following the death of King Henry I and the ascension of Archie I, he again called for elections in June. He capitalized on republican sentiments and the unpopularity of the new king to win a supermajority in the June 2038 Election, and subsequently abolished the monarchy and created the Republic of Canada. He also signed the Mutual Voting Rights Agreement during this term.&lt;br /&gt;
&lt;br /&gt;
Bradley ran for Parliament again in the 2042 Election, promising to work with President Blair Halifax on continued integration between the United States and Canada. The Liberal Party lost its supermajority, but maintained a majority in Parliament and allowed him to continue as Prime Minister. In 2045, he signed the North American Federalization Acts with President Halifax, and became the acting Prime Minister of North America.&lt;br /&gt;
&lt;br /&gt;
Following the 2046 Federal Elections, Bradley intended to continue serving as Prime Minister. However, the Social Democrat and Liberal Parties, which intended to form a coalition together, failed to win a combined majority in Parliament. Although he maintained his seat, he decided to resign his leadership of the Liberal Party and retire from politics. He died in 2070 at the age of 70.&lt;br /&gt;
&lt;br /&gt;
== Yusef Halifax ==&lt;br /&gt;
Yusef Halifax was President of the [[North American Federation]] from 2110 to 2118. He ran on the promise of ending the [[Martian Revolutions]], and upon his inauguration, he announced that North America no longer intended to reconquer its colonies. During his administration, he normalized relations with the Empire of Mars. He was the great nephew of Blair Halifax by her younger brother.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Martian_Revolutions&amp;diff=54</id>
		<title>Martian Revolutions</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Martian_Revolutions&amp;diff=54"/>
		<updated>2025-02-02T20:37:10Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Add link to Yusef Halifax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Martian Revolutions&#039;&#039;&#039; were a series of conflicts that lasted from 2096 to 2111, where several Martian colonies fought for political freedom and independence from Earth. The first revolution began on 27 July 2096 in the [[North American Federation|North American]] Jezero colony, when activists led by Charlotte Richardson seized control of the colonial government. This prompted similar action in other North American colonies, which by mid-2098 had spread to other countries&#039; colonies as well. Initially, many revolutionaries called for a single federal Martian state. However, the movement split when supporters of Richardson proclaimed the Empire of Mars in 2108 and crowned her as the empress. In reaction, the Republic of Mars was declared later that year. The conflicts officially ended on 4 February 2111 when the North American President [[Halifax Family#Yusef Halifax|Yusef Halifax]] declared that the NAF no longer intended to reclaim its lost colonies.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Halifax_Family&amp;diff=53</id>
		<title>Halifax Family</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Halifax_Family&amp;diff=53"/>
		<updated>2025-02-02T20:34:51Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Wrote about Blair Halifax, Bradley Carrol, and Yusef Halifax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Halifax Family&#039;&#039;&#039; is a prominent political family in the [[North American Federation]]. It has produced one Prime Minister of Canada, one President of the United States, and two Presidents and one Prime Minister of the North American Federation.&lt;br /&gt;
&lt;br /&gt;
== Blair Halifax ==&lt;br /&gt;
Blair Halifax was the 48th President of the United States of America from 2041 to 2045, and the 1st President of the [[North American Federation]] from 2045 to 2055. Prior to the uniting of North America, she was a citizen of both the United States and Canada. She played a pivotal role in the formation of the NAF, and was its longest-serving President.&lt;br /&gt;
&lt;br /&gt;
Blair was born in 2004 in Trenton, New Jersey. Her mother was an American and her father was a Canadian immigrant, so she was a citizen of both countries. She became interested in left-wing politics during the Presidency of Bernie Sanders, and started working in local politics.&lt;br /&gt;
&lt;br /&gt;
She ran for President in 2040, at the age of 35, and won by a large margin. She was the only dual citizen, as well as the second woman and second person from New Jersey, to hold the office of President of the United States. Blair was a supporter of strengthening connections with the Republic of Canada, signing the Mutual Voting Rights Agreement in 2041, which allowed citizens of the United States living in Canada to vote in Canadian elections, and vice versa. This agreement was &lt;br /&gt;
&lt;br /&gt;
Blair ran for reelection in 2044, pledging to continue integration with Canada, and she managed to win another term. On 5 October 2045, she and Prime Minister Carrol signed the North American Federation Acts, merging the United States of America and the Republic of Canada. She then became acting President of North America, and new elections were scheduled for November 2046.&lt;br /&gt;
&lt;br /&gt;
Blair ran for President of North America in 2046, sparking debates about whether the 22nd Amendment should prevent her from seeking a third term. In a controversial Supreme Court decision, it was decided that the Presidency of the United States and the Presidency of North America were two different offices, and that Blair was eligible to serve two full terms in the future. She went on to win the election, affirming public support for the decision.&lt;br /&gt;
&lt;br /&gt;
Blair again ran for reelection in 2050 and won.&lt;br /&gt;
&lt;br /&gt;
At the age of 68, Blair died in her New Jersey home in 2072.&lt;br /&gt;
&lt;br /&gt;
== Bradley Carrol ==&lt;br /&gt;
Bradley Carrol was the 26th Prime Minister of Canada from 2034 to 2045 and the 1st Prime Minister of the [[North American Federation]] from 2045 to 2046. He was a cousin of Blair Halifax, and was an important player in the uniting of North America.&lt;br /&gt;
&lt;br /&gt;
Bradley was born in 1999 in Ontario to two Canadian parents. His mother was a member of the Halifax family, and her brother was Blair Halifax&#039;s father.&lt;br /&gt;
&lt;br /&gt;
Bradley retired from politics in 2046, following the first North American Federal Elections. He died in 2070 at the age of 70.&lt;br /&gt;
&lt;br /&gt;
== Yusef Halifax ==&lt;br /&gt;
Yusef Halifax was President of the [[North American Federation]] from 2110 to 2118. He ran on the promise of ending the [[Martian Revolutions]], and upon his inauguration, he announced that North America no longer intended to reconquer its colonies. During his administration, he normalized relations with the Empire of Mars. He was the great nephew of Blair Halifax by her younger brother.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Martian_Revolutions&amp;diff=52</id>
		<title>Martian Revolutions</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Martian_Revolutions&amp;diff=52"/>
		<updated>2025-02-02T20:32:00Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Change the end date of the Revolutions to 2111&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Martian Revolutions&#039;&#039;&#039; were a series of conflicts that lasted from 2096 to 2111, where several Martian colonies fought for political freedom and independence from Earth. The first revolution began on 27 July 2096 in the [[North American Federation|North American]] Jezero colony, when activists led by Charlotte Richardson seized control of the colonial government. This prompted similar action in other North American colonies, which by mid-2098 had spread to other countries&#039; colonies as well. Initially, many revolutionaries called for a single federal Martian state. However, the movement split when supporters of Richardson proclaimed the Empire of Mars in 2108 and crowned her as the empress. In reaction, the Republic of Mars was declared later that year. The conflicts officially ended on 4 February 2111 when the North American President Yusef Halifax declared that the NAF no longer intended to reclaim its lost colonies.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=File:GPTO_Member_States.png&amp;diff=51</id>
		<title>File:GPTO Member States.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=File:GPTO_Member_States.png&amp;diff=51"/>
		<updated>2024-11-24T23:10:13Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: EmpressAutumn uploaded a new version of File:GPTO Member States.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A map showing GPTO members in blue, with nuclear-armed members having gold hashes. It also shows nuclear-armed non-GPTO member states.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Global_Peace_Treaty_Organization&amp;diff=50</id>
		<title>Global Peace Treaty Organization</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Global_Peace_Treaty_Organization&amp;diff=50"/>
		<updated>2024-11-24T23:09:06Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Created the page, added the map of the alliance, and wrote a list of member states.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:GPTO Member States.png|thumb|341x341px|Member states shown in dark blue. Nuclear-armed members have a gold hash pattern.]]&lt;br /&gt;
The &#039;&#039;&#039;Global Peace Treaty Organization&#039;&#039;&#039; (&#039;&#039;&#039;GPTO&#039;&#039;&#039;) is an international military alliance consisting of 55 member states. It was founded on 4 April 1949 as the North Atlantic Treaty Organization to counter the Soviet Union&#039;s influence in Europe. The alliance got its current name with the signing of the Global Peace Treaty on 4 April 2039, when it merged with the South East Asian Treaty Organization.&lt;br /&gt;
&lt;br /&gt;
The alliance is based on the concept that an attack against one member is an attack against all, and that members are obligated to defend each other militarily. Member states are also subject to binding alliance-wide arbitration for disputes between each other.&lt;br /&gt;
&lt;br /&gt;
The military integration of GPTO played an important part in the Oceanic Powers&#039; victory in World War III. Historians widely agree that the periodic war gaming done by the alliance was crucial in cutting off Russia and China from their allies in Africa, which shortened the war considerably.&lt;br /&gt;
&lt;br /&gt;
== Member States ==&lt;br /&gt;
The Global Peace Treaty Organization is made of 55 member states:&lt;br /&gt;
&lt;br /&gt;
* Albania&lt;br /&gt;
* Australia&lt;br /&gt;
* Bahrain&lt;br /&gt;
* Belgium&lt;br /&gt;
* Bosnia and Herzegovina&lt;br /&gt;
* Bulgaria&lt;br /&gt;
* Central Arabia&lt;br /&gt;
* Croatia&lt;br /&gt;
* Czechia&lt;br /&gt;
* Denmark&lt;br /&gt;
* Egypt&lt;br /&gt;
* Estonia&lt;br /&gt;
* Finland&lt;br /&gt;
* France&lt;br /&gt;
* Georgia&lt;br /&gt;
* Germany&lt;br /&gt;
* Greece&lt;br /&gt;
* Greenland&lt;br /&gt;
* Hungary&lt;br /&gt;
* Iceland&lt;br /&gt;
* India&lt;br /&gt;
* Iraq&lt;br /&gt;
* Israel&lt;br /&gt;
* Italy&lt;br /&gt;
* Japan&lt;br /&gt;
* Jordan&lt;br /&gt;
* Kosovo&lt;br /&gt;
* Korea&lt;br /&gt;
* Kuwait&lt;br /&gt;
* Latvia&lt;br /&gt;
* Lithuania&lt;br /&gt;
* Montenegro&lt;br /&gt;
* Netherlands&lt;br /&gt;
* New Zealand&lt;br /&gt;
* [[North American Federation|North America]]&lt;br /&gt;
* North Macedonia&lt;br /&gt;
* Norway&lt;br /&gt;
* Oman&lt;br /&gt;
* Philippines&lt;br /&gt;
* Poland&lt;br /&gt;
* Portugal&lt;br /&gt;
* Qatar&lt;br /&gt;
* Romania&lt;br /&gt;
* Slovakia&lt;br /&gt;
* Slovenia&lt;br /&gt;
* Spain&lt;br /&gt;
* Sweden&lt;br /&gt;
* Taiwan&lt;br /&gt;
* Thailand&lt;br /&gt;
* Turkiye&lt;br /&gt;
* Ukraine&lt;br /&gt;
* United Arab Emirates&lt;br /&gt;
* United Kingdom&lt;br /&gt;
* Vietnam&lt;br /&gt;
&lt;br /&gt;
Although it is not a country, the European Union is an observer of the GPTO and has certain benefits of membership. The European Parliament elects a representative to the Global Peace Council, although this representative does not have voting rights. They are the only member of the council who cannot vote.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=File:GPTO_Member_States.png&amp;diff=49</id>
		<title>File:GPTO Member States.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=File:GPTO_Member_States.png&amp;diff=49"/>
		<updated>2024-11-24T22:32:00Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A map showing GPTO members in blue, with nuclear-armed members having gold hashes. It also shows nuclear-armed non-GPTO member states.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=North_American_Federation&amp;diff=48</id>
		<title>North American Federation</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=North_American_Federation&amp;diff=48"/>
		<updated>2024-11-24T07:08:48Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Wrote a little about the NAF military&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;North American Federation&#039;&#039;&#039; (&#039;&#039;&#039;NAF&#039;&#039;&#039;), sometimes referred to as &#039;&#039;&#039;North America&#039;&#039;&#039; or simply &#039;&#039;&#039;America&#039;&#039;&#039; is a federal state located mostly in North America. It is the second largest country by land area and the fourth largest by population, being home to 510 million people as of the 2150 census. Its largest cities are New York, Los Angeles, Chicago, and Toronto, and its capital is Washington, DC.&lt;br /&gt;
&lt;br /&gt;
The North American Federation was formed on 5 October 2045 from the United States of America and the Republic of Canada, whose federal governments merged together after decades of economic integration between the two countries. Many people from the English-speaking parts of former-Canada, especially Ontario, still identify themselves as Canadians.&lt;br /&gt;
&lt;br /&gt;
The government of the NAF is federal, presidential, and constitutional republic. It is split into three branches: legislative, executive, and judicial. The legislative branch is primarily the Congress of North America, which is a bicameral legislature. The upper house is the Parliament of North America, which is led by the Prime Minister and elected by national proportional representation, and the lower house is the Senate, which is led by the Vice President and elected from single member districts. The executive branch is led by the President, who is elected alongside the Vice President in a nationwide ranked-choice election. The executive branch also oversees many federal departments, which are led jointly by the President and Prime Minister. The President is considered the Head of State and Head of Government of North America.&lt;br /&gt;
&lt;br /&gt;
The North American Federation is a member of the Global Peace Treaty Organization, and is the de facto leader of the alliance due to the country&#039;s military strength. The NAF is the world&#039;s foremost military power. Its military is composed of 6 branches: the Army, Navy, Air Force, Coast Guard, Space Force, and Special Operations. The commander-in-chief of the North American Armed Forces is the President.&lt;br /&gt;
&lt;br /&gt;
The United States was a major player in the Second Space Race, so upon its formation, the North American Federation was already a strongly established power on the Moon and Mars. The country lost most of its Martian colonies during the [[Martian Revolutions]], but still maintains a few. Following that, the North American Lunar colonies were reorganized into semi-autonomous states with special representation in Congress, preventing revolutionary ideas from taking hold in the remaining North American colonies. Many of the most influential Martian settlements are formerly-North American colonies, including Jezero, the capital of the Empire of Mars.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;See also: [[wikipedia:History_of_the_United_States|Wikipedia: History of the United States]], [[wikipedia:History_of_Canada|Wikipedia: History of Canada]]&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prior to Unification (2016 - 2045) ===&lt;br /&gt;
Following the end of the First Cold War and the fall of the Soviet Union, the Democratic Party in the United States shifted away from labor-liberalism and towards neoliberalism. However, the Presidential Election of 2016 between Democrat Bernie Sanders and Republican Donald Trump saw this shift reversed. Sanders ran on a platform of social democracy and expanded workers rights, and won the election with particularly strong support in the Rust Belt. His first term saw the expansion of the Affordable Care Act into a universal healthcare system, as well as a raised minimum wage and further protections for worker unions. During the 2020 election, Sanders ran against the Republican Marco Rubio. In contrast to Trump&#039;s populist campaign in 2016, Rubio ran on a moderate conservative agenda, referring to Sanders as a socialist. Although Rubio outperformed Sanders in the southern states, Sanders consolidated support in the Great Lakes region and won reelection, though by a smaller margin than in 2016. Sanders&#039; second term saw few legislative successes due to disloyalty from moderate Democrats in Congress.&lt;br /&gt;
&lt;br /&gt;
The 2024 Presidential Election in the United States saw the Democratic Party nominate Elizabeth Warren, Sanders&#039; Vice President, against Florida Governor Ron DeSantis. Warren promised to continue Sanders&#039; pro-worker and pro-industry policies, while DeSantis campaigned on a socially conservative and pro-business agenda. Due to slow economic growth during Sanders&#039; second term, DeSantis&#039; pro-business policies resonated with moderates, but his staunch conservatism was off-putting to some voters. Ultimately, Warren won the election thanks to narrow margins in Ohio, Indiana, and Virginia. While the Democrats controlled both houses of Congress, many Democrats routinely sided with the Republican minority, undermining Warren&#039;s ability to pass policy. Some of them left the Democratic Party altogether, forming the Liberal Democratic Caucus.&lt;br /&gt;
&lt;br /&gt;
By January 2028, many moderate Democrats and some moderate Republicans became attracted to the Liberal Democratic Caucus&#039; policies. By March, it was clear that Warren would be the Democratic Party&#039;s nominee, so these moderates formed the Liberal Democratic Party. The 2028 Presidential Election became a three-way race between Warren, nominated by the remaining Democrats, Dan Crenshaw, nominated by the Republicans, and Josh Shapiro, nominated by the Liberal Democrats. Shapiro gained strong support in liberal-leaning suburbs and managed to win 108 Electoral College votes. Since no candidate won enough electoral votes for a majority, Shapiro pledged his electors to support Crenshaw in exchange for a cabinet position. However, due to faithless elector laws, only 64 of Shapiro&#039;s votes could be cast for Crenshaw, leaving him still short of a majority. Congress voted to reelect Warren, making Shapiro her Vice President.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Template:Nobold&amp;diff=47</id>
		<title>Template:Nobold</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Template:Nobold&amp;diff=47"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Nobold/styles.css&amp;quot;/&amp;gt;&amp;lt;span class=&amp;quot;nobold&amp;quot;&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- PLEASE ADD CATEGORIES AND INTERWIKIS TO THE /doc SUBPAGE, THANKS --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Template:Both&amp;diff=45</id>
		<title>Template:Both</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Template:Both&amp;diff=45"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SAFESUBST:&amp;lt;noinclude /&amp;gt;#if:{{{1|}}}|{{SAFESUBST:&amp;lt;noinclude /&amp;gt;#if:{{{2|}}}|1}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Template:Main_other&amp;diff=43</id>
		<title>Template:Main other</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Template:Main_other&amp;diff=43"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#switch:&lt;br /&gt;
  &amp;lt;!--If no or empty &amp;quot;demospace&amp;quot; parameter then detect namespace--&amp;gt;&lt;br /&gt;
  {{#if:{{{demospace|}}} &lt;br /&gt;
  | {{lc: {{{demospace}}} }}    &amp;lt;!--Use lower case &amp;quot;demospace&amp;quot;--&amp;gt;&lt;br /&gt;
  | {{#ifeq:{{NAMESPACE}}|{{ns:0}}&lt;br /&gt;
    | main&lt;br /&gt;
    | other&lt;br /&gt;
    }} &lt;br /&gt;
  }}&lt;br /&gt;
| main     = {{{1|}}}&lt;br /&gt;
| other&lt;br /&gt;
| #default = {{{2|}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Template:Flatlist&amp;diff=41</id>
		<title>Template:Flatlist</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Template:Flatlist&amp;diff=41"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Hlist/styles.css&amp;quot;/&amp;gt;&amp;lt;div class=&amp;quot;hlist {{{class|}}}&amp;quot; {{#if:{{{style|}}}{{{indent|}}}|style=&amp;quot;{{#if:{{{indent|}}}|margin-left: {{#expr:{{{indent}}}*1.6}}em;}} {{{style|}}}&amp;quot;}}&amp;gt;{{#if:{{{1|}}}|&lt;br /&gt;
{{{1}}}&lt;br /&gt;
&amp;lt;/div&amp;gt;}}&amp;lt;noinclude&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Template:Yesno&amp;diff=39</id>
		<title>Template:Yesno</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Template:Yesno&amp;diff=39"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;#switch: {{&amp;lt;includeonly&amp;gt;safesubst:&amp;lt;/includeonly&amp;gt;lc: {{{1|¬}}} }}&lt;br /&gt;
 |no&lt;br /&gt;
 |n&lt;br /&gt;
 |f&lt;br /&gt;
 |false&lt;br /&gt;
 |off&lt;br /&gt;
 |0        = {{{no|&amp;lt;!-- null --&amp;gt;}}}&lt;br /&gt;
 |         = {{{blank|{{{no|&amp;lt;!-- null --&amp;gt;}}}}}}&lt;br /&gt;
 |¬        = {{{¬|}}}&lt;br /&gt;
 |yes&lt;br /&gt;
 |y&lt;br /&gt;
 |t&lt;br /&gt;
 |true&lt;br /&gt;
 |on&lt;br /&gt;
 |1        = {{{yes|yes}}}&lt;br /&gt;
 |#default = {{{def|{{{yes|yes}}}}}}&lt;br /&gt;
}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Module:Convert/text&amp;diff=37</id>
		<title>Module:Convert/text</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Module:Convert/text&amp;diff=37"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Text used by Module:Convert for enwiki.&lt;br /&gt;
-- This is a separate module to simplify translation for use on another wiki.&lt;br /&gt;
-- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki.&lt;br /&gt;
&lt;br /&gt;
-- Some units accept an SI prefix before the unit code, such as &amp;quot;kg&amp;quot; for kilogram.&lt;br /&gt;
local SIprefixes = {&lt;br /&gt;
	-- The prefix field is what the prefix should be, if different from the prefix used.&lt;br /&gt;
	[&#039;Q&#039;] = { exponent = 30, name = &#039;quetta&#039;,                 },&lt;br /&gt;
	[&#039;R&#039;] = { exponent = 27, name = &#039;ronna&#039;,                  },&lt;br /&gt;
	[&#039;Y&#039;] = { exponent = 24, name = &#039;yotta&#039;,                  },&lt;br /&gt;
	[&#039;Z&#039;] = { exponent = 21, name = &#039;zetta&#039;,                  },&lt;br /&gt;
	[&#039;E&#039;] = { exponent = 18, name = &#039;exa&#039;  ,                  },&lt;br /&gt;
	[&#039;P&#039;] = { exponent = 15, name = &#039;peta&#039; ,                  },&lt;br /&gt;
	[&#039;T&#039;] = { exponent = 12, name = &#039;tera&#039; ,                  },&lt;br /&gt;
	[&#039;G&#039;] = { exponent =  9, name = &#039;giga&#039; ,                  },&lt;br /&gt;
	[&#039;M&#039;] = { exponent =  6, name = &#039;mega&#039; ,                  },&lt;br /&gt;
	[&#039;k&#039;] = { exponent =  3, name = &#039;kilo&#039; ,                  },&lt;br /&gt;
	[&#039;h&#039;] = { exponent =  2, name = &#039;hecto&#039;,                  },&lt;br /&gt;
	[&#039;da&#039;]= { exponent =  1, name = &#039;deca&#039; , name_us = &#039;deka&#039; },&lt;br /&gt;
	[&#039;d&#039;] = { exponent = -1, name = &#039;deci&#039; ,                  },&lt;br /&gt;
	[&#039;c&#039;] = { exponent = -2, name = &#039;centi&#039;,                  },&lt;br /&gt;
	[&#039;m&#039;] = { exponent = -3, name = &#039;milli&#039;,                  },&lt;br /&gt;
	[&#039;μ&#039;] = { exponent = -6, name = &#039;micro&#039;,                  },  -- key = &#039;GREEK SMALL LETTER MU&#039; (U+03BC) utf-8 CE BC&lt;br /&gt;
	[&#039;µ&#039;] = { exponent = -6, name = &#039;micro&#039;, prefix = &#039;μ&#039;     },  -- key = &#039;MICRO SIGN&#039; (U+00B5) utf-8 C2 B5&lt;br /&gt;
	[&#039;u&#039;] = { exponent = -6, name = &#039;micro&#039;, prefix = &#039;μ&#039;     },  -- not an SI prefix, but allow for people typing this&lt;br /&gt;
	[&#039;n&#039;] = { exponent = -9, name = &#039;nano&#039; ,                  },&lt;br /&gt;
	[&#039;p&#039;] = { exponent =-12, name = &#039;pico&#039; ,                  },&lt;br /&gt;
	[&#039;f&#039;] = { exponent =-15, name = &#039;femto&#039;,                  },&lt;br /&gt;
	[&#039;a&#039;] = { exponent =-18, name = &#039;atto&#039; ,                  },&lt;br /&gt;
	[&#039;z&#039;] = { exponent =-21, name = &#039;zepto&#039;,                  },&lt;br /&gt;
	[&#039;y&#039;] = { exponent =-24, name = &#039;yocto&#039;,                  },&lt;br /&gt;
	[&#039;r&#039;] = { exponent =-27, name = &#039;ronto&#039;,                  },&lt;br /&gt;
	[&#039;q&#039;] = { exponent =-30, name = &#039;quecto&#039;,                 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Some units can be qualified with one of the following prefixes, when linked.&lt;br /&gt;
local customary_units = {&lt;br /&gt;
	{ &amp;quot;US&amp;quot;, link = &amp;quot;United States customary units&amp;quot; },&lt;br /&gt;
	{ &amp;quot;U.S.&amp;quot;, link = &amp;quot;United States customary units&amp;quot; },&lt;br /&gt;
	{ &amp;quot;imperial&amp;quot;, link = &amp;quot;Imperial units&amp;quot; },&lt;br /&gt;
	{ &amp;quot;imp&amp;quot;, link = &amp;quot;Imperial units&amp;quot; },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Names when using engineering notation (a prefix of &amp;quot;eN&amp;quot; where N is a number; example &amp;quot;e6km&amp;quot;).&lt;br /&gt;
-- key = { &amp;quot;name&amp;quot;, link = &amp;quot;article title&amp;quot;, exponent = numeric_key_value }&lt;br /&gt;
-- If lk=on and link is defined, the name of the number will appear as a link.&lt;br /&gt;
local eng_scales = {&lt;br /&gt;
	[&amp;quot;3&amp;quot;]  = { &amp;quot;thousand&amp;quot;, exponent = 3 },&lt;br /&gt;
	[&amp;quot;6&amp;quot;]  = { &amp;quot;million&amp;quot;, exponent = 6 },&lt;br /&gt;
	[&amp;quot;9&amp;quot;]  = { &amp;quot;billion&amp;quot;, link = &amp;quot;1000000000 (number)&amp;quot;, exponent = 9 },&lt;br /&gt;
	[&amp;quot;12&amp;quot;] = { &amp;quot;trillion&amp;quot;, link = &amp;quot;1000000000000 (number)&amp;quot;, exponent = 12 },&lt;br /&gt;
	[&amp;quot;15&amp;quot;] = { &amp;quot;quadrillion&amp;quot;, link = &amp;quot;1000000000000000 (number)&amp;quot;, exponent = 15 },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local all_categories = {&lt;br /&gt;
	unit = &amp;quot;[[Category:Convert errors]]&amp;quot;,&lt;br /&gt;
	option = &amp;quot;[[Category:Convert errors]]&amp;quot;,&lt;br /&gt;
	warning = &#039;[[Category:Convert invalid options]]&#039;,&lt;br /&gt;
	tracking = &#039;[[Category:Convert tracking]]&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- For some error messages, the following puts the wanted style around&lt;br /&gt;
-- each unit code marked like &#039;...%{ft%}...&#039;.&lt;br /&gt;
local unitcode_regex = &#039;%%([{}])&#039;&lt;br /&gt;
local unitcode_replace = { [&#039;{&#039;] = &#039;&amp;quot;&#039;, [&#039;}&#039;] = &#039;&amp;quot;&#039; }  -- no longer need the more elaborate substitute used before 2013-09-28&lt;br /&gt;
&lt;br /&gt;
-- All messages that may be displayed if a problem occurs.&lt;br /&gt;
local all_messages = {&lt;br /&gt;
	-- Message format string: $1=title, $2=text, $3=category, $4=anchor.&lt;br /&gt;
	-- Each displayed message starts with &amp;quot;Convert:&amp;quot; so can easily locate by searching article.&lt;br /&gt;
	cvt_format = &#039;&amp;lt;sup class=&amp;quot;noprint Inline-Template&amp;quot; style=&amp;quot;white-space:nowrap;&amp;quot;&amp;gt;[&amp;lt;i&amp;gt;[[Help:Convert messages#$4|&amp;lt;span title=&amp;quot;Convert: $1&amp;quot;&amp;gt;convert: $2&amp;lt;/span&amp;gt;]]&amp;lt;/i&amp;gt;]&amp;lt;/sup&amp;gt;$3&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
	cvt_format2 = &#039;&amp;lt;sup class=&amp;quot;noprint Inline-Template&amp;quot; style=&amp;quot;white-space:nowrap;&amp;quot;&amp;gt;[[Help:Convert messages#$4|&amp;lt;span title=&amp;quot;Convert: $1&amp;quot;&amp;gt;$2&amp;lt;/span&amp;gt;]]&amp;lt;/sup&amp;gt;$3&amp;lt;span class=&amp;quot;error&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039;,&lt;br /&gt;
	cvt_format_preview = &#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;Error in convert: $1 [[Help:Convert messages#$4|(help)]]&amp;lt;/strong&amp;gt;$3&#039;,&lt;br /&gt;
	-- Each of following messages is a table:&lt;br /&gt;
	-- { [1] = &#039;title&#039;,         -- mouseover title text&lt;br /&gt;
	--   [2] = &#039;text&#039;,          -- link text displayed in article&lt;br /&gt;
	--   [3] = &#039;category key&#039;,  -- key to lookup category in all_categories&lt;br /&gt;
	--   [4] = &#039;anchor&#039;,        -- anchor for link to relevant section on help page&lt;br /&gt;
	--   regex = gsub_regex,&lt;br /&gt;
	--   replace = gsub_table,&lt;br /&gt;
	-- }                    Mouseover title text                           Link text               CatKey     Anchor&lt;br /&gt;
	cvt_bad_input      = { &#039;input &amp;quot;$1&amp;quot; must be a number and unit&#039;       , &#039;invalid input&#039;       , &#039;option&#039;,  &#039;invalid_input&#039;        },&lt;br /&gt;
	cvt_bad_num        = { &#039;Value &amp;quot;$1&amp;quot; must be a number&#039;                , &#039;invalid number&#039;      , &#039;option&#039;,  &#039;invalid_number&#039;       },&lt;br /&gt;
	cvt_big_prec       = { &#039;Precision &amp;quot;$1&amp;quot; is too large&#039;                , &#039;precision too large&#039; , &#039;option&#039;,  &#039;precision_too_large&#039;  },&lt;br /&gt;
	cvt_invalid_num    = { &#039;Number has overflowed&#039;                      , &#039;number overflow&#039;     , &#039;option&#039;,  &#039;number_overflow&#039;      },&lt;br /&gt;
	cvt_no_num         = { &#039;Needs the number to be converted&#039;           , &#039;needs a number&#039;      , &#039;option&#039;,  &#039;needs_number&#039;         },&lt;br /&gt;
	cvt_no_num2        = { &#039;Needs another number for a range&#039;           , &#039;needs another number&#039;, &#039;option&#039;,  &#039;needs_another_number&#039; },&lt;br /&gt;
	cvt_bad_altitude   = { &#039;&amp;quot;$1&amp;quot; needs an integer&#039;                      , &#039;invalid altitude&#039;    , &#039;option&#039;,  &#039;invalid_altitude&#039;     },&lt;br /&gt;
	cvt_bad_frac       = { &#039;&amp;quot;$1&amp;quot; needs an integer above 1&#039;              , &#039;invalid fraction&#039;    , &#039;option&#039;,  &#039;invalid_fraction&#039;     },&lt;br /&gt;
	cvt_bad_prec       = { &#039;Precision &amp;quot;$1&amp;quot; must be an integer&#039;          , &#039;invalid precision&#039;   , &#039;option&#039;,  &#039;invalid_precision&#039;    },&lt;br /&gt;
	cvt_bad_sigfig     = { &#039;&amp;quot;$1&amp;quot; needs a positive integer&#039;              , &#039;invalid sigfig&#039;      , &#039;option&#039;,  &#039;invalid_sigfig&#039;       },&lt;br /&gt;
	cvt_empty_option   = { &#039;Ignored empty option &amp;quot;$1&amp;quot;&#039;                  , &#039;empty option&#039;        , &#039;option&#039;,  &#039;empty_option&#039;         },&lt;br /&gt;
	cvt_deprecated     = { &#039;Option &amp;quot;$1&amp;quot; is deprecated&#039;                  , &#039;*&#039;                   , &#039;option&#039;,  &#039;deprecated_option&#039;, format = &#039;cvt_format2&#039;, nowarn = true },&lt;br /&gt;
	cvt_no_spell       = { &#039;Spelling is not available&#039;                  , &#039;bug, ask for help&#039;   , &#039;option&#039;,  &#039;ask_for_help&#039;         },&lt;br /&gt;
	cvt_unknown_option = { &#039;Ignored invalid option &amp;quot;$1&amp;quot;&#039;                , &#039;invalid option&#039;      , &#039;option&#039;,  &#039;invalid_option&#039;       },&lt;br /&gt;
	cvt_wd_fail        = { &#039;Unable to access Wikidata&#039;                  , &#039;wikidata problem&#039;    , &#039;option&#039;,  &#039;wikidata_problem&#039;     },&lt;br /&gt;
	cvt_bad_default    = { &#039;Unit &amp;quot;$1&amp;quot; has an invalid default&#039;           , &#039;bug, ask for help&#039;   , &#039;unit&#039;  ,  &#039;ask_for_help&#039;         },&lt;br /&gt;
	cvt_bad_unit       = { &#039;Unit &amp;quot;$1&amp;quot; is invalid here&#039;                  , &#039;unit invalid here&#039;   , &#039;unit&#039;  ,  &#039;unit_invalid_here&#039;    },&lt;br /&gt;
	cvt_no_default     = { &#039;Unit &amp;quot;$1&amp;quot; has no default output unit&#039;       , &#039;bug, ask for help&#039;   , &#039;unit&#039;  ,  &#039;ask_for_help&#039;         },&lt;br /&gt;
	cvt_no_unit        = { &#039;Needs name of unit&#039;                         , &#039;needs unit name&#039;     , &#039;unit&#039;  ,  &#039;needs_unit_name&#039;      },&lt;br /&gt;
	cvt_unknown        = { &#039;Unit name &amp;quot;$1&amp;quot; is not known&#039;                , &#039;unknown unit&#039;        , &#039;unit&#039;  ,  &#039;unknown_unit&#039;         },&lt;br /&gt;
	cvt_should_be      = { &#039;$1&#039;                                         , &#039;ambiguous unit&#039;      , &#039;unit&#039;  ,  &#039;ambiguous_unit&#039;, regex = unitcode_regex, replace = unitcode_replace },&lt;br /&gt;
	cvt_mismatch       = { &#039;Cannot convert &amp;quot;$1&amp;quot; to &amp;quot;$2&amp;quot;&#039;                , &#039;unit mismatch&#039;       , &#039;unit&#039;  ,  &#039;unit_mismatch&#039;        },&lt;br /&gt;
	cvt_bug_convert    = { &#039;Bug: Cannot convert between specified units&#039;, &#039;bug, ask for help&#039;   , &#039;unit&#039;  ,  &#039;ask_for_help&#039;         },&lt;br /&gt;
	cvt_lookup         = { &#039;Unit &amp;quot;$1&amp;quot; is incorrectly defined&#039;           , &#039;bug, ask for help&#039;   , &#039;unit&#039;  ,  &#039;ask_for_help&#039;         },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Text to join input value/unit with output value/unit.&lt;br /&gt;
local disp_joins = {&lt;br /&gt;
	-- [1]=before output, [2]=after output, [3]=between outputs in a combination; default &amp;quot;; &amp;quot;&lt;br /&gt;
	-- [wantname] gives default abbr=off&lt;br /&gt;
	[&amp;quot;or&amp;quot;]         = { &amp;quot; or &amp;quot;    , &amp;quot;&amp;quot; , &amp;quot; or &amp;quot;, wantname = true },&lt;br /&gt;
	[&amp;quot;sqbr-sp&amp;quot;]    = { &amp;quot; [&amp;quot;      , &amp;quot;]&amp;quot; },&lt;br /&gt;
	[&amp;quot;sqbr-nbsp&amp;quot;]  = { &amp;quot;&amp;amp;nbsp;[&amp;quot; , &amp;quot;]&amp;quot; },&lt;br /&gt;
	[&amp;quot;comma&amp;quot;]      = { &amp;quot;, &amp;quot;      , &amp;quot;&amp;quot; , &amp;quot;, &amp;quot; },&lt;br /&gt;
	[&amp;quot;semicolon&amp;quot;]  = { &amp;quot;; &amp;quot;      , &amp;quot;&amp;quot;  },&lt;br /&gt;
	[&amp;quot;slash-sp&amp;quot;]   = { &amp;quot; / &amp;quot;     , &amp;quot;&amp;quot; , wantname = true },&lt;br /&gt;
	[&amp;quot;slash-nbsp&amp;quot;] = { &amp;quot;&amp;amp;nbsp;/ &amp;quot;, &amp;quot;&amp;quot; , wantname = true },&lt;br /&gt;
	[&amp;quot;slash-nosp&amp;quot;] = { &amp;quot;/&amp;quot;       , &amp;quot;&amp;quot; , wantname = true },&lt;br /&gt;
	[&amp;quot;b&amp;quot;]          = { &amp;quot; (&amp;quot;      , &amp;quot;)&amp;quot; },&lt;br /&gt;
	[&amp;quot;(or)&amp;quot;]       = { &amp;quot; (&amp;quot;      , &amp;quot;)&amp;quot;, &amp;quot; or &amp;quot; },&lt;br /&gt;
	[&amp;quot;br&amp;quot;]         = { &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;  , &amp;quot;&amp;quot; , wantname = true },&lt;br /&gt;
	[&amp;quot;br()&amp;quot;]       = { &amp;quot;&amp;lt;br /&amp;gt;(&amp;quot; , &amp;quot;)&amp;quot;, wantname = true },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Text to separate values in a range.&lt;br /&gt;
local range_types = {&lt;br /&gt;
	-- Specifying a table requires either:&lt;br /&gt;
	-- * &amp;quot;off&amp;quot; and &amp;quot;on&amp;quot; values (for &amp;quot;abbr=off&amp;quot; and &amp;quot;abbr=on&amp;quot;), or&lt;br /&gt;
	-- * &amp;quot;input&amp;quot; and &amp;quot;output&amp;quot; values (for LHS and RHS);&lt;br /&gt;
	-- other fields are optional.&lt;br /&gt;
	-- When &amp;quot;adj=on|abbr=off&amp;quot; applies, spaces in range text are replaced with hyphens.&lt;br /&gt;
	-- With &amp;quot;exception = true&amp;quot;, that also occurs with &amp;quot;adj=on|abbr=on&amp;quot;.&lt;br /&gt;
	-- If &amp;quot;adj&amp;quot; is defined here, that text (unchanged) is used with &amp;quot;adj=on&amp;quot;.&lt;br /&gt;
	[&amp;quot;+&amp;quot;]      = &amp;quot; + &amp;quot;,&lt;br /&gt;
	[&amp;quot;,&amp;quot;]      = &amp;quot;,&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
	[&amp;quot;, and&amp;quot;]  = &amp;quot;, and &amp;quot;,&lt;br /&gt;
	[&amp;quot;, or&amp;quot;]   = &amp;quot;, or &amp;quot;,&lt;br /&gt;
	[&amp;quot;by&amp;quot;]     = &amp;quot; by &amp;quot;,&lt;br /&gt;
	[&amp;quot;-&amp;quot;]      = &amp;quot;–&amp;quot;,&lt;br /&gt;
	[&amp;quot;to about&amp;quot;] = &amp;quot; to about &amp;quot;,&lt;br /&gt;
	[&amp;quot;and&amp;quot;]    = { off = &amp;quot; and &amp;quot;, on = &amp;quot; and &amp;quot;, exception = true },&lt;br /&gt;
	[&amp;quot;and(-)&amp;quot;] = { input = &amp;quot; and &amp;quot;, output = &amp;quot;–&amp;quot; },&lt;br /&gt;
	[&amp;quot;or&amp;quot;]     = { off = &amp;quot; or &amp;quot; , on = &amp;quot; or &amp;quot; , exception = true },&lt;br /&gt;
	[&amp;quot;to&amp;quot;]     = { off = &amp;quot; to &amp;quot; , on = &amp;quot; to &amp;quot; , exception = true },&lt;br /&gt;
	[&amp;quot;to(-)&amp;quot;]  = { input = &amp;quot;&amp;amp;nbsp;to &amp;quot;, output = &amp;quot;–&amp;quot; },&lt;br /&gt;
	[&amp;quot;+/-&amp;quot;]    = { off = &amp;quot;&amp;amp;nbsp;±&amp;amp;nbsp;&amp;quot;, on = &amp;quot;&amp;amp;nbsp;±&amp;amp;nbsp;&amp;quot;, adj = &amp;quot;&amp;amp;nbsp;±&amp;amp;nbsp;&amp;quot;, is_range_change = true },&lt;br /&gt;
	[&amp;quot;by(x)&amp;quot;]  = { input = &amp;quot; by &amp;quot;, output = &amp;quot; ×&amp;amp;nbsp;&amp;quot;, out_range_x = true },&lt;br /&gt;
	[&amp;quot;x&amp;quot;]      = { off = &amp;quot; by &amp;quot;, on = &amp;quot; ×&amp;amp;nbsp;&amp;quot;, abbr_range_x = true },&lt;br /&gt;
	[&amp;quot;xx&amp;quot;]     = &amp;quot;&amp;amp;nbsp;×&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
	[&amp;quot;*&amp;quot;]      = &amp;quot;×&amp;quot;,&lt;br /&gt;
	[&amp;quot;/&amp;quot;]      = &amp;quot;&amp;amp;thinsp;/&amp;amp;thinsp;&amp;quot;,  -- for a table of high/low temperatures with {{convert|83|/|63|F|disp=br()|abbr=values}}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local range_aliases = {&lt;br /&gt;
	-- [&amp;quot;alternative name for a range&amp;quot;] = &amp;quot;standard range name&amp;quot;&lt;br /&gt;
	[&amp;quot;–&amp;quot;]        = &amp;quot;-&amp;quot;,&lt;br /&gt;
	[&amp;quot;&amp;amp;ndash;&amp;quot;]  = &amp;quot;-&amp;quot;,&lt;br /&gt;
	[&amp;quot;×&amp;quot;]        = &amp;quot;x&amp;quot;,&lt;br /&gt;
	[&amp;quot;&amp;amp;times;&amp;quot;]  = &amp;quot;x&amp;quot;,&lt;br /&gt;
	[&amp;quot;±&amp;quot;]        = &amp;quot;+/-&amp;quot;,&lt;br /&gt;
	[&amp;quot;&amp;amp;plusmn;&amp;quot;] = &amp;quot;+/-&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Convert accepts range text delimited with whitespace, for example, {{convert|1 to 2|ft}}.&lt;br /&gt;
-- In addition, the following &amp;quot;words&amp;quot; are accepted without spaces, for example, {{convert|1-2|ft}}.&lt;br /&gt;
-- Words must be in correct order for searching, for example, &#039;x&#039; after &#039;xx&#039;.&lt;br /&gt;
local range_words = { &#039;-&#039;, &#039;–&#039;, &#039;xx&#039;, &#039;x&#039;, &#039;*&#039; }&lt;br /&gt;
&lt;br /&gt;
local ranges = {&lt;br /&gt;
	types = range_types,&lt;br /&gt;
	aliases = range_aliases,&lt;br /&gt;
	words = range_words,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Valid option names.&lt;br /&gt;
local en_option_name = {&lt;br /&gt;
	-- [&amp;quot;local text for option name&amp;quot;] = &amp;quot;en name used in this module&amp;quot;&lt;br /&gt;
	[&amp;quot;$&amp;quot;] = &amp;quot;$&amp;quot;,&lt;br /&gt;
	[&amp;quot;abbr&amp;quot;] = &amp;quot;abbr&amp;quot;,&lt;br /&gt;
	[&amp;quot;adj&amp;quot;] = &amp;quot;adj&amp;quot;,&lt;br /&gt;
	[&amp;quot;altitude_ft&amp;quot;] = &amp;quot;altitude_ft&amp;quot;,&lt;br /&gt;
	[&amp;quot;altitude_m&amp;quot;] = &amp;quot;altitude_m&amp;quot;,&lt;br /&gt;
	[&amp;quot;comma&amp;quot;] = &amp;quot;comma&amp;quot;,&lt;br /&gt;
	[&amp;quot;debug&amp;quot;] = &amp;quot;debug&amp;quot;,&lt;br /&gt;
	[&amp;quot;disp&amp;quot;] = &amp;quot;disp&amp;quot;,&lt;br /&gt;
	[&amp;quot;frac&amp;quot;] = &amp;quot;frac&amp;quot;,&lt;br /&gt;
	[&amp;quot;input&amp;quot;] = &amp;quot;input&amp;quot;,&lt;br /&gt;
	[&amp;quot;lang&amp;quot;] = &amp;quot;lang&amp;quot;,&lt;br /&gt;
	[&amp;quot;link&amp;quot;] = &amp;quot;lk&amp;quot;,&lt;br /&gt;
	[&amp;quot;lk&amp;quot;] = &amp;quot;lk&amp;quot;,&lt;br /&gt;
	[&amp;quot;order&amp;quot;] = &amp;quot;order&amp;quot;,&lt;br /&gt;
	[&amp;quot;qid&amp;quot;] = &amp;quot;qid&amp;quot;,&lt;br /&gt;
	[&amp;quot;qual&amp;quot;] = &amp;quot;qual&amp;quot;,&lt;br /&gt;
	[&amp;quot;qualifier&amp;quot;] = &amp;quot;qual&amp;quot;,&lt;br /&gt;
	[&amp;quot;round&amp;quot;] = &amp;quot;round&amp;quot;,&lt;br /&gt;
	[&amp;quot;sigfig&amp;quot;] = &amp;quot;sigfig&amp;quot;,&lt;br /&gt;
	[&amp;quot;sing&amp;quot;] = &amp;quot;adj&amp;quot;,                   -- &amp;quot;sing&amp;quot; is an old alias for &amp;quot;adj&amp;quot;&lt;br /&gt;
	[&amp;quot;sortable&amp;quot;] = &amp;quot;sortable&amp;quot;,&lt;br /&gt;
	[&amp;quot;sp&amp;quot;] = &amp;quot;sp&amp;quot;,&lt;br /&gt;
	[&amp;quot;spell&amp;quot;] = &amp;quot;spell&amp;quot;,&lt;br /&gt;
	[&amp;quot;stylein&amp;quot;] = &amp;quot;stylein&amp;quot;,&lt;br /&gt;
	[&amp;quot;styleout&amp;quot;] = &amp;quot;styleout&amp;quot;,&lt;br /&gt;
	[&amp;quot;tracking&amp;quot;] = &amp;quot;tracking&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Valid option values.&lt;br /&gt;
-- Convention: parms.opt_xxx refers to an option that is set here&lt;br /&gt;
-- (not intended to be set by the template which invokes this module).&lt;br /&gt;
-- Example: At enwiki, &amp;quot;abbr&amp;quot; includes:&lt;br /&gt;
--     [&amp;quot;values&amp;quot;] = &amp;quot;opt_values&amp;quot;&lt;br /&gt;
-- As a result, if the template uses abbr=values, Module:Convert sets:&lt;br /&gt;
--     parms[&amp;quot;opt_values&amp;quot;] = true&lt;br /&gt;
--     parms[&amp;quot;abbr&amp;quot;] = nil&lt;br /&gt;
-- Therefore parms.abbr will be nil, or will have one of the listed values&lt;br /&gt;
-- that do not start with &amp;quot;opt_&amp;quot;.&lt;br /&gt;
-- An option value of form &amp;quot;xxx?&amp;quot; is the same as &amp;quot;xxx&amp;quot; but shows the input as deprecated.&lt;br /&gt;
-- Options removed in January 2018 with remnants still in Module:Convert:&lt;br /&gt;
--     abbr=mos (in a range, repeat the input unit)&lt;br /&gt;
--     adj=1 (set opt_singular to make the unit name singular when 0 &amp;lt; abs(value) &amp;lt;= 1)&lt;br /&gt;
local en_option_value = {&lt;br /&gt;
	[&amp;quot;$&amp;quot;] = &#039;TEXT&#039;,                     -- TEXT should be a currency symbol that will be used instead of &amp;quot;$&amp;quot;&lt;br /&gt;
	[&amp;quot;abbr&amp;quot;] = {&lt;br /&gt;
		-- [&amp;quot;local text for option value&amp;quot;] = &amp;quot;en value used in this module&amp;quot;&lt;br /&gt;
		[&amp;quot;def&amp;quot;] = &amp;quot;&amp;quot;,                   -- ignored (some wrapper templates call convert with &amp;quot;abbr=def&amp;quot; to mean &amp;quot;default abbreviation&amp;quot;)&lt;br /&gt;
		[&amp;quot;h&amp;quot;] = &amp;quot;on&amp;quot;,                   -- abbr=on + use &amp;quot;h&amp;quot; for hand unit (default)&lt;br /&gt;
		[&amp;quot;hh&amp;quot;] = &amp;quot;opt_hand_hh&amp;quot;,         -- abbr=on + use &amp;quot;hh&amp;quot; for hand unit&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;in&amp;quot;,                  -- use symbol for LHS unit&lt;br /&gt;
		[&amp;quot;none&amp;quot;] = &amp;quot;off&amp;quot;,               -- old name for &amp;quot;off&amp;quot;&lt;br /&gt;
		[&amp;quot;off&amp;quot;] = &amp;quot;off&amp;quot;,                -- use name for all units&lt;br /&gt;
		[&amp;quot;on&amp;quot;] = &amp;quot;on&amp;quot;,                  -- use symbol for all units&lt;br /&gt;
		[&amp;quot;out&amp;quot;] = &amp;quot;out&amp;quot;,                -- use symbol for RHS unit (default)&lt;br /&gt;
		[&amp;quot;unit&amp;quot;] = &amp;quot;unit&amp;quot;,              -- abbr=on but abbreviate units only: e6km → million km (not ×10⁶ km)&lt;br /&gt;
		[&amp;quot;values&amp;quot;] = &amp;quot;opt_values&amp;quot;,      -- show only input and output numbers, not units&lt;br /&gt;
		[&amp;quot;~&amp;quot;] = &amp;quot;opt_also_symbol&amp;quot;,      -- show input unit symbol as well as name&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;adj&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;mid&amp;quot;] = &amp;quot;opt_adjectival, opt_adj_mid&amp;quot;,  -- adj=on with user-specified text after input unit (between input and output)&lt;br /&gt;
		[&amp;quot;off&amp;quot;] = &amp;quot;&amp;quot;,                   -- ignored (off is the default)&lt;br /&gt;
		[&amp;quot;on&amp;quot;] = &amp;quot;opt_adjectival&amp;quot;,      -- unit name is singular and hyphenated&lt;br /&gt;
		[&amp;quot;pre&amp;quot;] = &amp;quot;opt_one_preunit&amp;quot;,    -- user-specified text before input unit&lt;br /&gt;
		[&amp;quot;ri0&amp;quot;] = &amp;quot;opt_ri=0&amp;quot;,           -- round input with precision = 0&lt;br /&gt;
		[&amp;quot;ri1&amp;quot;] = &amp;quot;opt_ri=1&amp;quot;,           -- round input with precision = 1&lt;br /&gt;
		[&amp;quot;ri2&amp;quot;] = &amp;quot;opt_ri=2&amp;quot;,           -- round input with precision = 2&lt;br /&gt;
		[&amp;quot;ri3&amp;quot;] = &amp;quot;opt_ri=3&amp;quot;,           -- round input with precision = 3&lt;br /&gt;
		[&amp;quot;~&amp;quot;] = &amp;quot;opt_also_symbol&amp;quot;,      -- same as abbr=~ so can have {{convert|1|C|K|abbr=off|adj=~}}&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;altitude_ft&amp;quot;] = &#039;INTEGER&#039;,&lt;br /&gt;
	[&amp;quot;altitude_m&amp;quot;] = &#039;INTEGER&#039;,&lt;br /&gt;
	[&amp;quot;comma&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;5&amp;quot;] = &amp;quot;opt_comma5&amp;quot;,           -- only use numsep grouping if 5 or more digits&lt;br /&gt;
		[&amp;quot;gaps&amp;quot;] = &amp;quot;opt_gaps&amp;quot;,          -- use gaps, not numsep, to separate groups of digits&lt;br /&gt;
		[&amp;quot;gaps3&amp;quot;] = &amp;quot;opt_gaps, opt_gaps3&amp;quot;,  -- group only in threes rather than default of no gap before a single digit after decimal mark&lt;br /&gt;
		[&amp;quot;off&amp;quot;] = &amp;quot;opt_nocomma&amp;quot;,        -- no numsep in input or output numbers&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;debug&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;yes&amp;quot;] = &amp;quot;opt_sortable_debug&amp;quot;, -- make the normally hidden sort key visible&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;disp&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;5&amp;quot;] = &amp;quot;opt_round=5?&amp;quot;,         -- round output value to nearest 5&lt;br /&gt;
		[&amp;quot;b&amp;quot;] = &amp;quot;b&amp;quot;,                    -- join: &#039;(...)&#039;&lt;br /&gt;
		[&amp;quot;(or)&amp;quot;] = &amp;quot;(or)&amp;quot;,              -- join: &#039;(...)&#039; with &#039;or&#039; between outputs in a combination&lt;br /&gt;
		[&amp;quot;br&amp;quot;] = &amp;quot;br&amp;quot;,                  -- join: &#039;&amp;lt;br /&amp;gt;&#039;&lt;br /&gt;
		[&amp;quot;br()&amp;quot;] = &amp;quot;br()&amp;quot;,              -- join: &#039;&amp;lt;br /&amp;gt;(...)&#039;&lt;br /&gt;
		[&amp;quot;comma&amp;quot;] = &amp;quot;comma&amp;quot;,            -- join: &#039;,&#039;&lt;br /&gt;
		[&amp;quot;flip&amp;quot;] = &amp;quot;opt_flip&amp;quot;,          -- reverse order of input/output&lt;br /&gt;
		[&amp;quot;number&amp;quot;] = &amp;quot;opt_output_number_only&amp;quot;,  -- display output value (not input, and not output symbol/name)&lt;br /&gt;
		[&amp;quot;or&amp;quot;] = &amp;quot;or&amp;quot;,                  -- join: &#039;or&#039;&lt;br /&gt;
		[&amp;quot;out&amp;quot;] = &amp;quot;opt_output_only&amp;quot;,&lt;br /&gt;
		[&amp;quot;output number only&amp;quot;] = &amp;quot;opt_output_number_only&amp;quot;,&lt;br /&gt;
		[&amp;quot;output only&amp;quot;] = &amp;quot;opt_output_only&amp;quot;,&lt;br /&gt;
		[&amp;quot;preunit&amp;quot;] = &amp;quot;opt_two_preunits&amp;quot;,    -- user-specified text before input and output units&lt;br /&gt;
		[&amp;quot;semicolon&amp;quot;] = &amp;quot;semicolon&amp;quot;,    -- join: &#039;;&#039;&lt;br /&gt;
		[&amp;quot;sqbr&amp;quot;] = &amp;quot;sqbr&amp;quot;,              -- join: &#039;[...]&#039;&lt;br /&gt;
		[&amp;quot;table&amp;quot;] = &amp;quot;opt_table&amp;quot;,        -- output is suitable for a table cell with align=&amp;quot;right&amp;quot;&lt;br /&gt;
		[&amp;quot;tablecen&amp;quot;] = &amp;quot;opt_tablecen&amp;quot;,  -- output is suitable for a table cell with align=&amp;quot;center&amp;quot;&lt;br /&gt;
		[&amp;quot;unit&amp;quot;] = &amp;quot;opt_input_unit_only&amp;quot;, -- display input symbol/name (not output, and not input value)&lt;br /&gt;
		[&amp;quot;unit or text&amp;quot;] = &amp;quot;opt_input_unit_only, opt_ignore_error&amp;quot;, -- display input symbol/name, or given unit code if not known&lt;br /&gt;
		[&amp;quot;unit2&amp;quot;] = &amp;quot;opt_output_unit_only&amp;quot;,&lt;br /&gt;
		[&amp;quot;x&amp;quot;] = &amp;quot;x&amp;quot;,                    -- join: &amp;lt;first&amp;gt;...&amp;lt;second&amp;gt; (user-specified text)&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;frac&amp;quot;] = &#039;INTEGER&#039;,&lt;br /&gt;
	[&amp;quot;input&amp;quot;] = &#039;TEXT&#039;,                 -- TEXT should be &amp;lt;value&amp;gt;&amp;lt;space&amp;gt;&amp;lt;unitcode&amp;gt; or &amp;lt;wikidata-property-id&amp;gt;&lt;br /&gt;
	[&amp;quot;lang&amp;quot;] = {                        -- language for output digits (both en and local digits are always accepted for input)&lt;br /&gt;
		[&amp;quot;en&amp;quot;] = &amp;quot;opt_lang_en&amp;quot;,         -- use en digits for numbers, regardless of local language&lt;br /&gt;
		[&amp;quot;local&amp;quot;] = &amp;quot;opt_lang_local&amp;quot;,   -- use local digits for numbers (default, although config can change default to en)&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;lk&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;in&amp;quot;,                  -- link LHS unit name or symbol&lt;br /&gt;
		[&amp;quot;off&amp;quot;] = &amp;quot;off&amp;quot;,                -- do not link: same as default except for hand unit&lt;br /&gt;
		[&amp;quot;on&amp;quot;] = &amp;quot;on&amp;quot;,                  -- link all unit names or symbols (but not twice for the same unit)&lt;br /&gt;
		[&amp;quot;out&amp;quot;] = &amp;quot;out&amp;quot;,                -- link RHS unit name or symbol&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;order&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;flip&amp;quot;] = &amp;quot;opt_flip&amp;quot;,          -- reverse order of input/output&lt;br /&gt;
		[&amp;quot;out&amp;quot;] = &amp;quot;opt_order_out&amp;quot;,      -- do not show input; instead, use order in output combination, with the first output shown as the input&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;qid&amp;quot;] = &#039;TEXT&#039;,                   -- TEXT should be a Wikidata Q item identifier&lt;br /&gt;
	[&amp;quot;qual&amp;quot;] = &#039;TEXT&#039;,                  -- TEXT should be a Wikidata Q item identifier&lt;br /&gt;
	[&amp;quot;round&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;0.5&amp;quot;] = &amp;quot;opt_round=0.5&amp;quot;,      -- round output value to nearest 0.5&lt;br /&gt;
		[&amp;quot;5&amp;quot;] = &amp;quot;opt_round=5&amp;quot;,          -- round output value to nearest 5&lt;br /&gt;
		[&amp;quot;10&amp;quot;] = &amp;quot;opt_round=10&amp;quot;,        -- round output value to nearest 10 (same as but clearer than &amp;quot;|-1&amp;quot;)&lt;br /&gt;
		[&amp;quot;25&amp;quot;] = &amp;quot;opt_round=25&amp;quot;,        -- round output value to nearest 25&lt;br /&gt;
		[&amp;quot;50&amp;quot;] = &amp;quot;opt_round=50&amp;quot;,        -- round output value to nearest 50&lt;br /&gt;
		[&amp;quot;each&amp;quot;] = &amp;quot;opt_round_each&amp;quot;,    -- using default precision in a range, round each output separately (default uses highest precision of each item in range)&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;sigfig&amp;quot;] = &#039;INTEGER&#039;,&lt;br /&gt;
	[&amp;quot;sortable&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;off&amp;quot;] = &amp;quot;&amp;quot;,                   -- ignored (off is the default)&lt;br /&gt;
		[&amp;quot;on&amp;quot;] = &amp;quot;opt_sortable_on&amp;quot;,     -- output sort key for use in a sortable table, based on value from converting to a standard base unit&lt;br /&gt;
		[&amp;quot;debug&amp;quot;] = &amp;quot;opt_sortable_on, opt_sortable_debug&amp;quot;,  -- |sortable=debug is the same as |sortable=on|debug=yes&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;sp&amp;quot;] = {&lt;br /&gt;
		[&amp;quot;us&amp;quot;] = &amp;quot;opt_sp_us&amp;quot;,           -- use U.S. spelling (like &amp;quot;meter&amp;quot; instead of default &amp;quot;metre&amp;quot;)&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;spell&amp;quot;] = {                       -- only English spelling is supported; not scientific notation; only some fractions&lt;br /&gt;
		[&amp;quot;in&amp;quot;] = &amp;quot;opt_spell_in&amp;quot;,        -- spell input value in words&lt;br /&gt;
		[&amp;quot;In&amp;quot;] = &amp;quot;opt_spell_in, opt_spell_upper&amp;quot;,                -- spell input value in words with first letter uppercase&lt;br /&gt;
		[&amp;quot;on&amp;quot;] = &amp;quot;opt_spell_in, opt_spell_out&amp;quot;,                  -- spell input and output values in words&lt;br /&gt;
		[&amp;quot;On&amp;quot;] = &amp;quot;opt_spell_in, opt_spell_out, opt_spell_upper&amp;quot;, -- same, with first letter of first word in result uppercase&lt;br /&gt;
		[&amp;quot;us&amp;quot;] = &amp;quot;opt_sp_us&amp;quot;,           -- use U.S. spelling; same as sp=us so spell=us also works&lt;br /&gt;
	},&lt;br /&gt;
	[&amp;quot;stylein&amp;quot;] = &#039;TEXT&#039;,&lt;br /&gt;
	[&amp;quot;styleout&amp;quot;] = &#039;TEXT&#039;,&lt;br /&gt;
	[&amp;quot;tracking&amp;quot;] = &#039;TEXT&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local titles = {&lt;br /&gt;
	[&amp;quot;frac&amp;quot;] = &amp;quot;Fraction/styles.css&amp;quot;,&lt;br /&gt;
	[&amp;quot;sfrac&amp;quot;] = &amp;quot;Sfrac/styles.css&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	SIprefixes = SIprefixes,&lt;br /&gt;
	all_categories = all_categories,&lt;br /&gt;
	all_messages = all_messages,&lt;br /&gt;
	currency = { [&#039;$&#039;] = true, [&#039;£&#039;] = true, [&#039;€&#039;] = true, [&#039;₱&#039;] = true, [&#039;₽&#039;] = true, [&#039;¥&#039;] = true },&lt;br /&gt;
	customary_units = customary_units,&lt;br /&gt;
	disp_joins = disp_joins,&lt;br /&gt;
	en_option_name = en_option_name,&lt;br /&gt;
	en_option_value = en_option_value,&lt;br /&gt;
	eng_scales = eng_scales,&lt;br /&gt;
	ranges = ranges,&lt;br /&gt;
	titles = titles,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Module:Convert/data&amp;diff=35</id>
		<title>Module:Convert/data</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Module:Convert/data&amp;diff=35"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Conversion data used by [[Module:Convert]] which uses mw.loadData() for&lt;br /&gt;
-- read-only access to this module so that it is loaded only once per page.&lt;br /&gt;
-- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki.&lt;br /&gt;
--&lt;br /&gt;
-- These data tables follow:&lt;br /&gt;
--   all_units           all properties for a unit, including default output&lt;br /&gt;
--   default_exceptions  exceptions for default output (&#039;kg&#039; and &#039;g&#039; have different defaults)&lt;br /&gt;
--   link_exceptions     exceptions for links (&#039;kg&#039; and &#039;g&#039; have different links)&lt;br /&gt;
--&lt;br /&gt;
-- These tables are generated by a script which reads the wikitext of a page that&lt;br /&gt;
-- documents the required properties of each unit; see [[:en:Module:Convert/doc]].&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
-- Do not change the data in this table because it is created by running --&lt;br /&gt;
-- a script that reads the wikitext from a wiki page (see note above).   --&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
local all_units = {&lt;br /&gt;
    [&amp;quot;Gy&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;gray&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;Gy&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;absorbed radiation dose&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;rad&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gray (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;rad&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;rad&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;rad&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;absorbed radiation dose&amp;quot;,&lt;br /&gt;
	scale    = 0.01,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;Gy&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Rad (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cm/s2&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;centimetre per second squared&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;centimeter per second squared&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;centimetres per second squared&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;centimeters per second squared&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cm/s&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;acceleration&amp;quot;,&lt;br /&gt;
	scale    = 0.01,&lt;br /&gt;
	default  = &amp;quot;ft/s2&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gal (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft/s2&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot per second squared&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;feet per second squared&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft/s&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;acceleration&amp;quot;,&lt;br /&gt;
	scale    = 0.3048,&lt;br /&gt;
	default  = &amp;quot;m/s2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g0&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;standard gravity&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;standard gravities&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;&#039;&#039;g&#039;&#039;&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;acceleration&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;m/s2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-force&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;&#039;&#039;g&#039;&#039;&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;&#039;&#039;g&#039;&#039;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;acceleration&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;m/s2&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;g-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km/hs&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilometre per hour per second&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilometer per hour per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilometres per hour per second&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilometers per hour per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;km/(h⋅s)&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;acceleration&amp;quot;,&lt;br /&gt;
	scale    = 0.27777777777777779,&lt;br /&gt;
	default  = &amp;quot;mph/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Acceleration&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km/s2&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilometre per second squared&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilometer per second squared&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilometres per second squared&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilometers per second squared&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;km/s&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;acceleration&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;mph/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Acceleration&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m/s2&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metre per second squared&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;meter per second squared&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;metres per second squared&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;meters per second squared&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m/s&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;acceleration&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;ft/s2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mph/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;mile per hour per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;miles per hour per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mph/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;acceleration&amp;quot;,&lt;br /&gt;
	scale    = 0.44704,&lt;br /&gt;
	default  = &amp;quot;km/hs&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Acceleration&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km/h/s&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;km/hs&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;standard gravity&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;g0&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;1000sqft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;thousand square feet&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;thousand square feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;1000&amp;amp;nbsp;sq&amp;amp;nbsp;ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 92.90304,&lt;br /&gt;
	default  = &amp;quot;m2&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Square foot&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;a&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;are&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 100,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;sqft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Hectare#Are&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acre&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;acre&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 4046.8564224,&lt;br /&gt;
	default  = &amp;quot;ha&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;rood&amp;quot;] = { 4, default = &amp;quot;ha&amp;quot; }, [&amp;quot;sqperch&amp;quot;] = { 160, default = &amp;quot;ha&amp;quot; } },&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acre-sing&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;acre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;arpent&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;arpent&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 3418.89,&lt;br /&gt;
	default  = &amp;quot;ha&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cda&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cuerda&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cda&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 3930.395625,&lt;br /&gt;
	default  = &amp;quot;ha acre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;daa&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;decare&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;daa&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;km2 sqmi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dunam&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;dunam&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;km2 sqmi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dunum&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;dunum&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;km2 sqmi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Dunam&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ha&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;hectare&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ha&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 10000,&lt;br /&gt;
	default  = &amp;quot;acre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hectare&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;hectare&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ha&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 10000,&lt;br /&gt;
	default  = &amp;quot;acre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Irish acre&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;Irish acre&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Irish&amp;amp;nbsp;acres&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 6555.2385024,&lt;br /&gt;
	default  = &amp;quot;ha&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Acre (Irish)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m2&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;square metre&amp;quot;,&lt;br /&gt;
	_name1_us= &amp;quot;square meter&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	prefix_position= 8,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 2,&lt;br /&gt;
	default  = &amp;quot;sqft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Square metre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pondemaat&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pondemaat&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pondemaat&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;pond&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 3674.363358816,&lt;br /&gt;
	default  = &amp;quot;m2&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;:nl:pondemaat&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pyeong&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;pyeong&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;pyeong&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 3.3057851239669422,&lt;br /&gt;
	default  = &amp;quot;m2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;rai&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;rai&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;rai&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 1600,&lt;br /&gt;
	default  = &amp;quot;m2&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Rai (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;rood&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;rood&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 1011.7141056,&lt;br /&gt;
	default  = &amp;quot;sqft m2&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;sqperch&amp;quot;] = { 40, default = &amp;quot;m2&amp;quot; } },&lt;br /&gt;
	link     = &amp;quot;Rood (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sqfoot&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;square foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;square foot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;sq&amp;amp;nbsp;ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 0.09290304,&lt;br /&gt;
	default  = &amp;quot;m2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sqft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;square foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;square feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;sq&amp;amp;nbsp;ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 0.09290304,&lt;br /&gt;
	default  = &amp;quot;m2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sqin&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;square inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;square inches&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;sq&amp;amp;nbsp;in&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 0.00064516,&lt;br /&gt;
	default  = &amp;quot;cm2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sqmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;square mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;sq&amp;amp;nbsp;mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 2589988.110336,&lt;br /&gt;
	default  = &amp;quot;km2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sqnmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;square nautical mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;sq&amp;amp;nbsp;nmi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 3429904,&lt;br /&gt;
	default  = &amp;quot;km2 sqmi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Nautical mile&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sqperch&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;perches&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;perch&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 25.29285264,&lt;br /&gt;
	default  = &amp;quot;m2&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Rod (unit)#Area and volume&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sqverst&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;square verst&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 1138062.24,&lt;br /&gt;
	default  = &amp;quot;km2 sqmi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Verst&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sqyd&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;square yard&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;sq&amp;amp;nbsp;yd&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 0.83612736,&lt;br /&gt;
	default  = &amp;quot;m2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tsubo&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;tsubo&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;tsubo&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;area&amp;quot;,&lt;br /&gt;
	scale    = 3.3057851239669422,&lt;br /&gt;
	default  = &amp;quot;m2&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Japanese units of measurement#Area&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acres&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;acre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;are&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;a&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;decare&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;daa&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;foot2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;sqfoot&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;sqft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;sqin&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km²&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;km2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mi2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;sqmi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;million acre&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e6acre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;million acres&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e6acre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;million hectares&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e6ha&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m²&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;nmi2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;sqnmi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pond&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;pondemaat&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sq arp&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;arpent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sqkm&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;km2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sqm&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;square verst&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;sqverst&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;verst2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;sqverst&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;yd2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;sqyd&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m2/ha&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;square metre per hectare&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;square meter per hectare&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;square metres per hectare&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;square meters per hectare&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;/ha&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area per unit area&amp;quot;,&lt;br /&gt;
	scale    = 0.0001,&lt;br /&gt;
	default  = &amp;quot;sqft/acre&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Basal area&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sqft/acre&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;square foot per acre&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;square feet per acre&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;sq&amp;amp;nbsp;ft/acre&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;area per unit area&amp;quot;,&lt;br /&gt;
	scale    = 2.295684113865932e-5,&lt;br /&gt;
	default  = &amp;quot;m2/ha&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Basal area&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cent&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cent&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;¢&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;cent&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;cent&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cent (currency)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;¢&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;A.h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;ampere hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;A⋅h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;charge&amp;quot;,&lt;br /&gt;
	scale    = 3600,&lt;br /&gt;
	default  = &amp;quot;coulomb&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;coulomb&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;coulomb&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;C&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;charge&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;e&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Coulomb&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;e&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;elementary charge&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;&#039;&#039;e&#039;&#039;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;charge&amp;quot;,&lt;br /&gt;
	scale    = 1.602176487e-19,&lt;br /&gt;
	default  = &amp;quot;coulomb&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-mol&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-mole&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g&amp;amp;#8209;mol&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;chemical amount&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;lbmol&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gmol&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-mole&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gmol&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;chemical amount&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;lbmol&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kmol&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilomole&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kmol&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;chemical amount&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;lbmol&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb-mol&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-mole&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb&amp;amp;#8209;mol&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;chemical amount&amp;quot;,&lt;br /&gt;
	scale    = 453.59237,&lt;br /&gt;
	default  = &amp;quot;mol&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbmol&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-mole&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lbmol&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;chemical amount&amp;quot;,&lt;br /&gt;
	scale    = 453.59237,&lt;br /&gt;
	default  = &amp;quot;mol&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mol&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;mole&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mol&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;chemical amount&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;lbmol&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kgCO2/L&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram per litre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram per liter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms per litre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms per liter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg(CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;)/L&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;co2 per unit volume&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;lbCO2/USgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbCO2/USgal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per US gallon&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per US gallon&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lbCO2/US&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;co2 per unit volume&amp;quot;,&lt;br /&gt;
	scale    = 119.82642731689663,&lt;br /&gt;
	default  = &amp;quot;kgCO2/L&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oz/lb&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;oz&amp;quot;, &amp;quot;lb&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;concentration&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;mg/kg&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mg/kg&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;mg&amp;quot;, &amp;quot;kg&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;concentration&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;oz/lb&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g/dm3&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram per cubic decimetre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;gram per cubic decimeter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grams per cubic decimetre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;grams per cubic decimeter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g/dm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;kg/m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g/L&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram per litre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;gram per liter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grams per litre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;grams per liter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g/L&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;lb/cuin&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g/mL&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram per millilitre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;gram per milliliter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grams per millilitre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;grams per milliliter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g/mL&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;lb/cuin&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g/ml&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram per millilitre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;gram per milliliter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grams per millilitre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;grams per milliliter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g/ml&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;lb/cuin&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/dm3&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram per cubic decimetre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram per cubic decimeter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms per cubic decimetre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms per cubic decimeter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg/dm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;lb/cuft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/L&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram per litre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram per liter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms per litre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms per liter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg/L&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;lb/USgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/l&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram per litre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram per liter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms per litre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms per liter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg/l&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;lb/USgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/m3&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram per cubic metre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram per cubic meter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms per cubic metre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms per cubic meter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg/m&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;lb/cuyd&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/cuft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per cubic foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per cubic foot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/cu&amp;amp;nbsp;ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 16.018463373960142,&lt;br /&gt;
	default  = &amp;quot;g/cm3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/cuin&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per cubic inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per cubic inch&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/cu&amp;amp;nbsp;in&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 27679.904710203122,&lt;br /&gt;
	default  = &amp;quot;g/cm3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/cuyd&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per cubic yard&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per cubic yard&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/cu&amp;amp;nbsp;yd&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 0.5932764212577829,&lt;br /&gt;
	default  = &amp;quot;kg/m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/impgal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per imperial gallon&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per imperial gallon&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/imp&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 99.776372663101697,&lt;br /&gt;
	default  = &amp;quot;kg/L&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/in3&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per cubic inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per cubic inch&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/cu&amp;amp;thinsp;in&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 27679.904710203122,&lt;br /&gt;
	default  = &amp;quot;g/cm3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/U.S.gal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per U.S. gallon&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per U.S. gallon&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/U.S.&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 119.82642731689663,&lt;br /&gt;
	default  = &amp;quot;kg/L&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/USbu&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per US bushel&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per US bushel&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/US&amp;amp;nbsp;bu&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 12.871859780974471,&lt;br /&gt;
	default  = &amp;quot;kg/m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Bushel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/USgal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per US gallon&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per US gallon&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/US&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 119.82642731689663,&lt;br /&gt;
	default  = &amp;quot;kg/L&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbm/cuin&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound mass per cubic inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds mass per cubic inch&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lbm/cu&amp;amp;thinsp;in&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 27679.904710203122,&lt;br /&gt;
	default  = &amp;quot;g/cm3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mg/L&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;milligram per litre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;milligram per liter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;milligrams per litre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;milligrams per liter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mg/L&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	default  = &amp;quot;lb/cuin&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oz/cuin&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;ounce per cubic inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;ounces per cubic inch&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;oz/cu&amp;amp;nbsp;in&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	scale    = 1729.9940443876951,&lt;br /&gt;
	default  = &amp;quot;g/cm3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g/cm3&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;g&amp;quot;, &amp;quot;cm3&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;lb/cuin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g/m3&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;g&amp;quot;, &amp;quot;m3&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;lb/cuyd&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mg/m3&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;Mg&amp;quot;, &amp;quot;m3&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;lb/cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mg/l&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;mg&amp;quot;, &amp;quot;ll&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;oz/cuin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;μg/dL&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;μg&amp;quot;, &amp;quot;dL&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;lb/cuin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;μg/l&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;μg&amp;quot;, &amp;quot;ll&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;density&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;oz/cuin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/ft3&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;lb/cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/yd3&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;lb/cuyd&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbm/in3&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;lbm/cuin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mcg/dL&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μg/dL&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oz/in3&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;oz/cuin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ug/dL&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μg/dL&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ug/l&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μg/l&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;B.O.T.U.&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;Board of Trade Unit&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;B.O.T.U.&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3600000,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;bboe&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;barrel of oil equivalent&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;barrels of oil equivalent&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;bboe&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 6117863200,&lt;br /&gt;
	default  = &amp;quot;GJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BOE&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;barrel of oil equivalent&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;barrels of oil equivalent&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;BOE&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 6117863200,&lt;br /&gt;
	default  = &amp;quot;GJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;BTU&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1055.05585262,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Btu&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Btu&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1055.05585262,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU-39F&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (39°F)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (39°F)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;BTU&amp;lt;sub&amp;gt;39°F&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1059.67,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Btu-39F&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (39°F)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (39°F)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Btu&amp;lt;sub&amp;gt;39°F&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1059.67,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU-59F&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (59°F)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (59°F)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;BTU&amp;lt;sub&amp;gt;59°F&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1054.804,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Btu-59F&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (59°F)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (59°F)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Btu&amp;lt;sub&amp;gt;59°F&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1054.804,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU-60F&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (60°F)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (60°F)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;BTU&amp;lt;sub&amp;gt;60°F&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1054.68,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Btu-60F&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (60°F)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (60°F)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Btu&amp;lt;sub&amp;gt;60°F&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1054.68,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU-63F&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (63°F)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (63°F)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;BTU&amp;lt;sub&amp;gt;63°F&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1054.6,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Btu-63F&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (63°F)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (63°F)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Btu&amp;lt;sub&amp;gt;63°F&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1054.6,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU-ISO&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (ISO)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (ISO)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;BTU&amp;lt;sub&amp;gt;ISO&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1055.056,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Btu-ISO&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;BTU-ISO&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU-IT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (IT)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (IT)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;BTU&amp;lt;sub&amp;gt;IT&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1055.05585262,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Btu-IT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (IT)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (IT)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Btu&amp;lt;sub&amp;gt;IT&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1055.05585262,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU-mean&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (mean)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (mean)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;BTU&amp;lt;sub&amp;gt;mean&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1055.87,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Btu-mean&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (mean)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (mean)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Btu&amp;lt;sub&amp;gt;mean&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1055.87,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU-th&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (thermochemical)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (thermochemical)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;BTU&amp;lt;sub&amp;gt;th&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1054.35026444,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Btu-th&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit (thermochemical)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units (thermochemical)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Btu&amp;lt;sub&amp;gt;th&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1054.35026444,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Cal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;calorie&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Cal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;calorie&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184,&lt;br /&gt;
	default  = &amp;quot;J&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Cal-15&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;Calorie (15°C)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;Calories (15°C)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Cal&amp;lt;sub&amp;gt;15&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4185.8,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cal-15&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;calorie (15°C)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;calories (15°C)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cal&amp;lt;sub&amp;gt;15&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.1858,&lt;br /&gt;
	default  = &amp;quot;J&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Cal-IT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;Calorie (International Steam Table)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;Calories (International Steam Table)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Cal&amp;lt;sub&amp;gt;IT&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4186.8,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cal-IT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;calorie (International Steam Table)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;calories (International Steam Table)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cal&amp;lt;sub&amp;gt;IT&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.1868,&lt;br /&gt;
	default  = &amp;quot;J&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Cal-th&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;Calorie (thermochemical)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;Calories (thermochemical)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Cal&amp;lt;sub&amp;gt;th&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cal-th&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;calorie (thermochemical)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;calories (thermochemical)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cal&amp;lt;sub&amp;gt;th&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184,&lt;br /&gt;
	default  = &amp;quot;J&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;CHU-IT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;Celsius heat unit (International Table)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;Celsius heat units (International Table)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;CHU&amp;lt;sub&amp;gt;IT&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1899.100534716,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Conversion of units#Energy&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cufootnaturalgas&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic foot of natural gas&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic foot of natural gas&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cuftnaturalgas&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1055055.85262,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Conversion of units#Energy&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuftnaturalgas&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic foot of natural gas&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic feet of natural gas&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cuftnaturalgas&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1055055.85262,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Conversion of units#Energy&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Eh&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;Hartree&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;&#039;&#039;E&#039;&#039;&amp;lt;sub&amp;gt;h&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.35974417e-18,&lt;br /&gt;
	default  = &amp;quot;eV&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;erg&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;erg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.0000001,&lt;br /&gt;
	default  = &amp;quot;μJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;eV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;electronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;eV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1.602176487e-19,&lt;br /&gt;
	default  = &amp;quot;aJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;feV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;femtoelectronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;feV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1.602176487e-34,&lt;br /&gt;
	default  = &amp;quot;yJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;foe&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;foe&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1e44,&lt;br /&gt;
	default  = &amp;quot;YJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Foe (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ftlb&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot-pound&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft⋅lb&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	alttype  = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 1.3558179483314004,&lt;br /&gt;
	default  = &amp;quot;J&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Foot-pound (energy)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ftlb-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot-pound force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;foot-pounds force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft⋅lb&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	alttype  = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 1.3558179483314004,&lt;br /&gt;
	default  = &amp;quot;J&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Foot-pound (energy)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ftlbf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot-pound force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;foot-pounds force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft⋅lbf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	alttype  = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 1.3558179483314004,&lt;br /&gt;
	default  = &amp;quot;J&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Foot-pound (energy)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ftpdl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot-poundal&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft⋅pdl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.0421401100938048,&lt;br /&gt;
	default  = &amp;quot;J&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GeV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gigaelectronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;GeV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1.602176487e-10,&lt;br /&gt;
	default  = &amp;quot;nJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;grams of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gram of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Gtoe&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gigatonne of oil equivalent&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gigatonnes of oil equivalent&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Gtoe&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.1868e19,&lt;br /&gt;
	default  = &amp;quot;EJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Tonne of oil equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GtonTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;gigatons of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gigaton of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184e18,&lt;br /&gt;
	default  = &amp;quot;EJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GtTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;gigatonnes of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gigatonne of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184e18,&lt;br /&gt;
	default  = &amp;quot;EJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GW.h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gigawatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;GW⋅h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3.6e12,&lt;br /&gt;
	default  = &amp;quot;TJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GWh&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gigawatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;GWh&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3.6e12,&lt;br /&gt;
	default  = &amp;quot;TJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hph&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;horsepower-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;hp⋅h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 2684519.537696172792,&lt;br /&gt;
	default  = &amp;quot;kWh&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Horsepower&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;inlb&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch-pound&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in⋅lb&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	alttype  = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 0.1129848290276167,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Foot-pound (energy)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;inlb-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch-pound force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inch-pounds force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in⋅lb&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	alttype  = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 0.1129848290276167,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Foot-pound (energy)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;inlbf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch-pound force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inch-pounds force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in⋅lbf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	alttype  = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 0.1129848290276167,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Foot-pound (energy)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;inoz-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch-ounce force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inch-ounces force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in⋅oz&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	alttype  = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 0.00706155181422604375,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Foot-pound (energy)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;inozf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch-ounce force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inch-ounces force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in⋅ozf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	alttype  = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 0.00706155181422604375,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Foot-pound (energy)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;J&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;joule&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;J&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;cal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Joule&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kBOE&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilo barrel of oil equivalent&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilo barrels of oil equivalent&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kBOE&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 6.1178632e12,&lt;br /&gt;
	default  = &amp;quot;TJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel of oil equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilocalorie&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kcal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcal-15&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilocalorie (15°C)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilocalories (15°C)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kcal&amp;lt;sub&amp;gt;15&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4185.8,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcal-IT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilocalorie (International Steam Table)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilocalories (International Steam Table)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kcal&amp;lt;sub&amp;gt;IT&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4186.8,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcal-th&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilocalorie (thermochemical)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilocalories (thermochemical)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kcal&amp;lt;sub&amp;gt;th&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kerg&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kiloerg&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kerg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.0001,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Erg&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;keV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kiloelectronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;keV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1.602176487e-16,&lt;br /&gt;
	default  = &amp;quot;fJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kgTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;kilograms of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kilogram of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184000,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kt(TNT)&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilotonne&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kiloton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184e12,&lt;br /&gt;
	default  = &amp;quot;TJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ktoe&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilotonne of oil equivalent&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilotonnes of oil equivalent&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ktoe&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.1868e13,&lt;br /&gt;
	default  = &amp;quot;TJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Tonne of oil equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ktonTNT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kiloton of TNT&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilotons of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184e12,&lt;br /&gt;
	default  = &amp;quot;TJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ktTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;kilotonnes of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kilotonne of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184e12,&lt;br /&gt;
	default  = &amp;quot;TJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kW.h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilowatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kW⋅h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3600000,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kWh&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilowatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kWh&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3600000,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mcal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megacalorie&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mcal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184000,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mcal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millicalorie&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mcal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.004184,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mcal-15&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megacalorie (15°C)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;megacalories (15°C)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mcal&amp;lt;sub&amp;gt;15&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4185800,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mcal-15&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millicalorie (15°C)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;millicalories (15°C)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mcal&amp;lt;sub&amp;gt;15&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.0041858,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mcal-IT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megacalorie (International Steam Table)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;megacalories (International Steam Table)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mcal&amp;lt;sub&amp;gt;IT&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4186800,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mcal-IT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millicalorie (International Steam Table)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;millicalories (International Steam Table)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mcal&amp;lt;sub&amp;gt;IT&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.0041868,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mcal-th&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megacalorie (thermochemical)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;megacalories (thermochemical)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mcal&amp;lt;sub&amp;gt;th&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184000,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mcal-th&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millicalorie (thermochemical)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;millicalories (thermochemical)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mcal&amp;lt;sub&amp;gt;th&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.004184,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Merg&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megaerg&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Merg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.1,&lt;br /&gt;
	default  = &amp;quot;J&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Erg&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;merg&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millierg&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;merg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.0000000001,&lt;br /&gt;
	default  = &amp;quot;μJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Erg&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MeV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megaelectronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;MeV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1.602176487e-13,&lt;br /&gt;
	default  = &amp;quot;pJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;meV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millielectronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;meV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1.602176487e-22,&lt;br /&gt;
	default  = &amp;quot;zJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MMBtu&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;million British thermal units&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;million British thermal units&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;MMBtu&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1055055852.62,&lt;br /&gt;
	default  = &amp;quot;GJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mt(TNT)&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megatonne&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;megaton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184e15,&lt;br /&gt;
	default  = &amp;quot;PJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mtoe&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megatonne of oil equivalent&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;megatonnes of oil equivalent&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mtoe&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.1868e16,&lt;br /&gt;
	default  = &amp;quot;PJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Tonne of oil equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MtonTNT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megaton of TNT&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;megatons of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184e15,&lt;br /&gt;
	default  = &amp;quot;PJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mtonTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;millitons of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;milliton of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184000,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MtTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;megatonnes of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;megatonne of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184e15,&lt;br /&gt;
	default  = &amp;quot;PJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mtTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;millitonnes of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;millitonne of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184000,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MW.h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megawatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;MW⋅h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3600000000,&lt;br /&gt;
	default  = &amp;quot;GJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mW.h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;milliwatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mW⋅h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3.6,&lt;br /&gt;
	default  = &amp;quot;J&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MWh&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megawatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;MWh&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3600000000,&lt;br /&gt;
	default  = &amp;quot;GJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mWh&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;milliwatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mWh&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3.6,&lt;br /&gt;
	default  = &amp;quot;J&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;neV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;nanoelectronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;neV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1.602176487e-28,&lt;br /&gt;
	default  = &amp;quot;yJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;PeV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;petaelectronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;PeV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.0001602176487,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;peV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;picoelectronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;peV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1.602176487e-31,&lt;br /&gt;
	default  = &amp;quot;yJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;PSh&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;Pferdestärkenstunde&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;PSh&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 2647795.5,&lt;br /&gt;
	default  = &amp;quot;kWh&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;quad&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;quadrillion British thermal units&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;quadrillion British thermal units&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;quad&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1.054804e18,&lt;br /&gt;
	default  = &amp;quot;EJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Quad (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Ry&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;rydberg&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Ry&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 2.1798741e-18,&lt;br /&gt;
	default  = &amp;quot;eV&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Rydberg constant&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;scf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;standard cubic foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;standard cubic feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;scf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 2869.2044809344,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;scfoot&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;standard cubic foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;standard cubic foot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;scf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 2869.2044809344,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;t(TNT)&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;tonne&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;t&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184000000,&lt;br /&gt;
	default  = &amp;quot;GJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;TeV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;teraelectronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;TeV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1.602176487e-7,&lt;br /&gt;
	default  = &amp;quot;μJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;th&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;thermie&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;th&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4186800,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Conversion of units#Energy&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;thm-EC&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;therm (EC)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;therms (EC)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;thm (EC)&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 105506000,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Therm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;thm-UK&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;therm (UK)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;therms (UK)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;thm (UK)&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 105505585.257348,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Therm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;thm-US&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;therm (US)&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;therm (U.S.)&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;therms (US)&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;therms (U.S.)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;thm (US)&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;thm (U.S.)&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 105480400,&lt;br /&gt;
	default  = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Therm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;toe&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;tonne of oil equivalent&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;tonnes of oil equivalent&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;toe&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 41868000000,&lt;br /&gt;
	default  = &amp;quot;GJ&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tonTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;tons of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ton of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184000000,&lt;br /&gt;
	default  = &amp;quot;GJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;tonnes of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;tonne of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4184000000,&lt;br /&gt;
	default  = &amp;quot;GJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;TtonTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;teratons of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;teraton of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184e21,&lt;br /&gt;
	default  = &amp;quot;ZJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;TtTNT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;teratonnes of TNT&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;teratonne of TNT&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 4.184e21,&lt;br /&gt;
	default  = &amp;quot;ZJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;TW.h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;terawatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;TW⋅h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3.6e15,&lt;br /&gt;
	default  = &amp;quot;PJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;TWh&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;terawatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;TWh&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3.6e15,&lt;br /&gt;
	default  = &amp;quot;PJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;W.h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;watt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;W⋅h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3600,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Wh&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;watt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Wh&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 3600,&lt;br /&gt;
	default  = &amp;quot;kJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;μerg&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;microerg&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;μerg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1e-13,&lt;br /&gt;
	default  = &amp;quot;nJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Erg&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;μeV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;microelectronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;μeV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1.602176487e-25,&lt;br /&gt;
	default  = &amp;quot;yJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;μW.h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;microwatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;μW⋅h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.0036,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;μWh&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;microwatt-hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;μWh&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 0.0036,&lt;br /&gt;
	default  = &amp;quot;mJ&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-kW.h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kW.h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;btu&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;BTU&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Calorie&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Cal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft.lbf&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;ftlbf&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft·lbf&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;ftlbf&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-cal-15&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cal-15&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-cal-IT&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cal-IT&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-cal-th&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cal-th&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-kcal-15&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kcal-15&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-kcal-IT&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kcal-IT&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-kcal-th&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kcal-th&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-Mcal-15&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Mcal-15&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-mcal-15&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mcal-15&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-Mcal-IT&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Mcal-IT&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-mcal-IT&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mcal-IT&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-Mcal-th&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Mcal-th&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-mcal-th&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mcal-th&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GW-h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;GW.h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GW·h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;GW.h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Hartree&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Eh&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hp.h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;hph&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in.lb-f&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;inlb-f&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in.lbf&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;inlbf&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in.oz-f&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;inoz-f&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in.ozf&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;inozf&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kbboe&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kBOE&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kbboe&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg-cal-15&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Cal-15&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg-cal-IT&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Cal-IT&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg-cal-th&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Cal-th&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kW-h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kW.h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kW·h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kW.h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MW-h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;MW.h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mW-h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mW.h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MW·h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;MW.h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;TW-h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;TW.h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;uerg&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μerg&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ueV&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μeV&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;uW-h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μW.h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;uW.h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μW.h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;uWh&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μWh&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;W-h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;W.h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;eVpar&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;electronvolt&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;eV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per chemical amount&amp;quot;,&lt;br /&gt;
	scale    = 96485.329522144166,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;kcal/mol&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcal/mol&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;kcal&amp;quot;, &amp;quot;mol&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per chemical amount&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kJ/mol&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilocalorie per mole&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kJ/mol&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;kJ&amp;quot;, &amp;quot;mol&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per chemical amount&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kcal/mol&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Joule per mole&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kWh/100 km&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilowatt-hour per 100 kilometres&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilowatt-hour per 100 kilometers&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilowatt-hours per 100 kilometres&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilowatt-hours per 100 kilometers&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kW⋅h/100&amp;amp;nbsp;km&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit length&amp;quot;,&lt;br /&gt;
	scale    = 36,&lt;br /&gt;
	default  = &amp;quot;MJ/km kWh/mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt-hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kWh/100 mi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilowatt-hour per 100 miles&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilowatt-hours per 100 miles&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kW⋅h/100&amp;amp;nbsp;mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit length&amp;quot;,&lt;br /&gt;
	scale    = 22.3694,&lt;br /&gt;
	default  = &amp;quot;mpge&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Miles per gallon gasoline equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MJ/100 km&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megajoule per 100 kilometres&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;megajoule per 100 kilometers&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;megajoules per 100 kilometres&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;megajoules per 100 kilometers&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;MJ/100&amp;amp;nbsp;km&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit length&amp;quot;,&lt;br /&gt;
	scale    = 10,&lt;br /&gt;
	default  = &amp;quot;BTU/mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mpge&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;mile per gallon gasoline equivalent&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;miles per gallon gasoline equivalent&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mpg&amp;amp;#8209;e&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit length&amp;quot;,&lt;br /&gt;
	scale    = 1.3263314048360777e-5,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;kWh/100 mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Miles per gallon gasoline equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU/mi&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;BTU&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit length&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;v &amp;gt; 1525 ! M ! k ! J/km&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kJ/km&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;kJ&amp;quot;, &amp;quot;km&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit length&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;BTU/mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kWh/km&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;-kW.h&amp;quot;, &amp;quot;km&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit length&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;MJ/km kWh/mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kWh/mi&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;-kW.h&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit length&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kWh/km MJ/km&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MJ/km&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;MJ&amp;quot;, &amp;quot;km&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit length&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;BTU/mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mpg-e&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mpge&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU/lb&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British thermal unit per pound&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;British thermal units per pound&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;BTU/lb&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 2326,&lt;br /&gt;
	default  = &amp;quot;kJ/kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;British thermal unit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cal/g&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;calorie per gram&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;calories per gram&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cal/g&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 4184,&lt;br /&gt;
	default  = &amp;quot;J/g&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GJ/kg&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gigajoule per kilogram&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gigajoules per kilogram&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;GJ/kg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 1e9,&lt;br /&gt;
	default  = &amp;quot;ktTNT/t&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Specific energy&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;J/g&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;joule per gram&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;joules per gram&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;J/g&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;kcal/g&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Specific energy&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcal/g&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilocalorie per gram&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilocalories per gram&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kcal/g&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 4184000,&lt;br /&gt;
	default  = &amp;quot;kJ/g&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kJ/g&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilojoule per gram&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilojoules per gram&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kJ/g&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 1000000,&lt;br /&gt;
	default  = &amp;quot;kcal/g&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Specific energy&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kJ/kg&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilojoule per kilogram&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilojoules per kilogram&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kJ/kg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;BTU/lb&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Specific energy&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ktonTNT/MT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;kilotons of TNT per metric ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kiloton of TNT per metric ton&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 4184000000,&lt;br /&gt;
	default  = &amp;quot;GJ/kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ktTNT/t&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;kilotonnes of TNT per tonne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kilotonne of TNT per tonne&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 4184000000,&lt;br /&gt;
	default  = &amp;quot;GJ/kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MtonTNT/MT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;megatons of TNT per metric ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;megaton of TNT per metric ton&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 4.184e12,&lt;br /&gt;
	default  = &amp;quot;TJ/kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MtTNT/MT&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;megatonnes of TNT per tonne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;megatonne of TNT per tonne&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 4.184e12,&lt;br /&gt;
	default  = &amp;quot;TJ/kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;TNT equivalent&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;TJ/kg&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;terajoule per kilogram&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;terajoules per kilogram&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;TJ/kg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 1e12,&lt;br /&gt;
	default  = &amp;quot;MtTNT/MT&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Specific energy&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Cal/g&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;Cal&amp;quot;, &amp;quot;g&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kJ/g&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU/cuft&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;BTU&amp;quot;, &amp;quot;cuft&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit volume&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kJ/L&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Cal/12USoz(mL)serve&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;Cal&amp;quot;, &amp;quot;-12USoz(mL)serve&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit volume&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kJ/L&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Cal/12USoz(ml)serve&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;Cal&amp;quot;, &amp;quot;-12USoz(ml)serve&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit volume&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kJ/l&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Cal/12USozserve&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;Cal&amp;quot;, &amp;quot;-12USozserve&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit volume&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kJ/L&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Cal/USoz&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;Cal&amp;quot;, &amp;quot;USoz&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit volume&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kJ/ml&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kJ/L&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;kJ&amp;quot;, &amp;quot;L&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit volume&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;BTU/cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kJ/l&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;kJ&amp;quot;, &amp;quot;ll&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit volume&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;BTU/cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kJ/ml&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;kJ&amp;quot;, &amp;quot;ml&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit volume&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;Cal/USoz&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MJ/m3&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;MJ&amp;quot;, &amp;quot;m3&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;energy per unit volume&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;BTU/cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Sv&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;sievert&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;Sv&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;equivalent radiation dose&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;rem&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Sievert&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;rem&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;rem&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;rem&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;equivalent radiation dose&amp;quot;,&lt;br /&gt;
	scale    = 0.01,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;Sv&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Roentgen equivalent man&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g/km&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram per kilometre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;gram per kilometer&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grams per kilometre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;grams per kilometer&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g/km&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;exhaust emission&amp;quot;,&lt;br /&gt;
	scale    = 1e-6,&lt;br /&gt;
	default  = &amp;quot;oz/mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g/mi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram per mile&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grams per mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g/mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;exhaust emission&amp;quot;,&lt;br /&gt;
	scale    = 6.2137119223733397e-7,&lt;br /&gt;
	default  = &amp;quot;g/km&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gCO2/km&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per kilometre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;gram of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per kilometer&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grams of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per kilometre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;grams of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per kilometer&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g(CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;)/km&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;exhaust emission&amp;quot;,&lt;br /&gt;
	scale    = 1e-6,&lt;br /&gt;
	default  = &amp;quot;ozCO2/mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gCO2/mi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per mile&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grams of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g(CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;)/mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;exhaust emission&amp;quot;,&lt;br /&gt;
	scale    = 6.2137119223733397e-7,&lt;br /&gt;
	default  = &amp;quot;gCO2/km&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/km&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram per kilometre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram per kilometer&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms per kilometre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms per kilometer&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg/km&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;exhaust emission&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	default  = &amp;quot;lb/mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kgCO2/km&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per kilometre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per kilometer&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per kilometre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per kilometer&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg(CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;)/km&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;exhaust emission&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	default  = &amp;quot;lbCO2/mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/mi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per mile&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;exhaust emission&amp;quot;,&lt;br /&gt;
	scale    = 0.00028184923173665794,&lt;br /&gt;
	default  = &amp;quot;kg/km&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbCO2/mi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per mile&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb(CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;)/mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;exhaust emission&amp;quot;,&lt;br /&gt;
	scale    = 0.00028184923173665794,&lt;br /&gt;
	default  = &amp;quot;kgCO2/km&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oz/mi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;ounce per mile&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;ounces per mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;oz/mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;exhaust emission&amp;quot;,&lt;br /&gt;
	scale    = 1.7615576983541121e-5,&lt;br /&gt;
	default  = &amp;quot;g/km&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ozCO2/mi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;ounce of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per mile&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;ounces of CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; per mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;oz(CO&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;)/mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;exhaust emission&amp;quot;,&lt;br /&gt;
	scale    = 1.7615576983541121e-5,&lt;br /&gt;
	default  = &amp;quot;gCO2/km&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Exhaust gas&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuft/a&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic foot per annum&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic feet per annum&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;ft/a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 8.9730672142368242e-10,&lt;br /&gt;
	default  = &amp;quot;m3/a&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic foot per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuft/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic foot per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic feet per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;ft/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 3.2774128000000003e-7,&lt;br /&gt;
	default  = &amp;quot;m3/d&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic foot per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuft/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic foot per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic feet per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;ft/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 7.8657907200000004e-6,&lt;br /&gt;
	default  = &amp;quot;m3/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic foot per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuft/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic foot per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic feet per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;ft/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 0.00047194744319999999,&lt;br /&gt;
	default  = &amp;quot;m3/min&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuft/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic foot per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic feet per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;ft/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 28316846592e-12,&lt;br /&gt;
	default  = &amp;quot;m3/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cumi/a&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic mile per annum&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic miles per annum&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;mi/a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 132.08171170940057,&lt;br /&gt;
	default  = &amp;quot;km3/a&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic foot per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuyd/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic yard per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic yards per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cuyd/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 0.00021237634944000001,&lt;br /&gt;
	default  = &amp;quot;m3/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic foot per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuyd/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic yard per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic yards per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;yd/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 0.76455485798400002,&lt;br /&gt;
	default  = &amp;quot;m3/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Goilbbl/a&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;billion barrels per year&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;billion barrels per year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Gbbl/a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 5.0380033629933836,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! e6 ! e9 ! m3/a&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel per day&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impgal/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial gallon per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;imperial gallons per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;imp&amp;amp;nbsp;gal/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 1.2628027777777779e-6,&lt;br /&gt;
	default  = &amp;quot;m3/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gallon&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impgal/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial gallon per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;imperial gallons per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;imp gal/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 7.5768166666666671e-5,&lt;br /&gt;
	default  = &amp;quot;m3/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gallon&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impgal/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial gallon per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;imperial gallons per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;impgal/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 0.00454609,&lt;br /&gt;
	default  = &amp;quot;m3/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Imperial gallons per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km3/a&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic kilometre per annum&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;cubic kilometer per annum&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic kilometres per annum&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;cubic kilometers per annum&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;km&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;/a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 31.68808781402895,&lt;br /&gt;
	default  = &amp;quot;cumi/a&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km3/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic kilometre per day&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;cubic kilometer per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic kilometres per day&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;cubic kilometers per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;km&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 11574.074074074075,&lt;br /&gt;
	default  = &amp;quot;cuft/d&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;koilbbl/a&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;thousand barrels per year&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;thousand barrels per year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kbbl/a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 5.0380033629933841e-6,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! ! e3 ! m3/a&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel per day&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;koilbbl/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;thousand barrels per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;thousand barrels per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kbbl/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 0.0018401307283333335,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! ! e3 ! m3/d&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel per day&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;litre per hour&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;liter per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;litres per hour&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;liters per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;L/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 2.7777777777777776e-7,&lt;br /&gt;
	default  = &amp;quot;impgal/h USgal/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;litre per minute&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;liter per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;litres per minute&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;liters per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;L/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 1.6666666666666667e-5,&lt;br /&gt;
	default  = &amp;quot;impgal/min USgal/min&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;litre per second&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;liter per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;litres per second&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;liters per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;L/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	default  = &amp;quot;cuft/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m3/a&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic metre per annum&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;cubic meter per annum&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic metres per annum&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;cubic meters per annum&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;/a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 3.1688087814028947e-8,&lt;br /&gt;
	default  = &amp;quot;cuft/a&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m3/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic metre per day&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;cubic meter per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic metres per day&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;cubic meters per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 1.1574074074074073e-5,&lt;br /&gt;
	default  = &amp;quot;cuft/d&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m3/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic metre per hour&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;cubic meter per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic metres per hour&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;cubic meters per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 0.00027777777777777778,&lt;br /&gt;
	default  = &amp;quot;cuft/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m3/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic metre per minute&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;cubic meter per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic metres per minute&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;cubic meters per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 0.016666666666666666,&lt;br /&gt;
	default  = &amp;quot;cuft/min&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m3/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic metre per second&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;cubic meter per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic metres per second&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;cubic meters per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;cuft/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Moilbbl/a&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;million barrels per year&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;million barrels per year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mbbl/a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 0.0050380033629933837,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! e3 ! e6 ! m3/a&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel per day&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Moilbbl/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;million barrels per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;million barrels per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mbbl/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 1.8401307283333335,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! e3 ! e6 ! m3/d&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel per day&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oilbbl/a&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;barrel per year&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;barrels per year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;bbl/a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 5.0380033629933841e-9,&lt;br /&gt;
	default  = &amp;quot;m3/a&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel per day&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oilbbl/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;barrel per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;barrels per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;bbl/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 1.8401307283333336e-6,&lt;br /&gt;
	default  = &amp;quot;m3/d&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Toilbbl/a&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;trillion barrels per year&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;trillion barrels per year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Tbbl/a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 5038.0033629933832,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! e9 ! e12 ! m3/a&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel per day&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.gal/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;U.S. gallon per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;U.S. gallons per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;U.S.&amp;amp;nbsp;gal/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 4.3812636388888893e-8,&lt;br /&gt;
	default  = &amp;quot;m3/s&amp;quot;,&lt;br /&gt;
	customary= 1,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.gal/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gallon per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gallons per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gal/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 1.0515032733333334e-6,&lt;br /&gt;
	default  = &amp;quot;m3/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gallon&amp;quot;,&lt;br /&gt;
	customary= 2,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.gal/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;U.S. gallon per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;U.S. gallons per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;U.S.&amp;amp;nbsp;gal/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 6.3090196400000003e-5,&lt;br /&gt;
	default  = &amp;quot;m3/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gallon&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USgal/a&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US gallon per year&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;US gallons per year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;gal/a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 1.1995246102365199e-10,&lt;br /&gt;
	default  = &amp;quot;m3/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USgal/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US gallon per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;US gallons per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;gal/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 4.3812636388888893e-8,&lt;br /&gt;
	default  = &amp;quot;m3/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USgal/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gallon per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gallons per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gal/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 1.0515032733333334e-6,&lt;br /&gt;
	default  = &amp;quot;m3/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gallon&amp;quot;,&lt;br /&gt;
	customary= 1,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USgal/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US gallon per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;US gallons per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;gal/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 6.3090196400000003e-5,&lt;br /&gt;
	default  = &amp;quot;m3/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gallon&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USgal/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US gallon per second&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. gallon per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;US gallons per second&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;U.S. gallons per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;USgal/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;flow&amp;quot;,&lt;br /&gt;
	scale    = 0.003785411784,&lt;br /&gt;
	default  = &amp;quot;m3/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;US gallons per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft3/a&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cuft/a&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft3/d&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cuft/d&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft3/h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cuft/h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft3/s&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cuft/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Gcuft/a&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e9cuft/a&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Gcuft/d&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e9cuft/d&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcuft/a&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e3cuft/a&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcuft/d&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e3cuft/d&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcuft/s&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e3cuft/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mcuft/a&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e6cuft/a&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mcuft/d&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e6cuft/d&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mcuft/s&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e6cuft/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m³/s&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m3/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Tcuft/a&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e12cuft/a&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Tcuft/d&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e12cuft/d&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;u.s.gal/min&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;U.S.gal/min&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usgal/min&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USgal/min&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-LTf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;long ton-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;long tons-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;LTf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 9964.01641818352,&lt;br /&gt;
	default  = &amp;quot;kN&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-STf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;short ton-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;short tons-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;STf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 8896.443230521,&lt;br /&gt;
	default  = &amp;quot;kN&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dyn&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;dyne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;dyn&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.00001,&lt;br /&gt;
	default  = &amp;quot;gr-f&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grams-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.00980665,&lt;br /&gt;
	default  = &amp;quot;mN oz-f&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grams-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.00980665,&lt;br /&gt;
	default  = &amp;quot;mN ozf&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gr-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;grain-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grains-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gr&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.0006354602307515,&lt;br /&gt;
	default  = &amp;quot;μN&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound (force)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;grf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;grain-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grains-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;grf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.0006354602307515,&lt;br /&gt;
	default  = &amp;quot;μN&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound (force)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kdyn&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilodyne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kdyn&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.01,&lt;br /&gt;
	default  = &amp;quot;oz-f&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Dyne&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;N lb-f&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kgf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kgf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;N lbf&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kp&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilopond&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;N lb-f&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L/T-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;long ton-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;long tons-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;L/T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 9964.01641818352,&lt;br /&gt;
	default  = &amp;quot;kN&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L/Tf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;long ton-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;long tons-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;L/Tf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 9964.01641818352,&lt;br /&gt;
	default  = &amp;quot;kN&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 4.4482216152605,&lt;br /&gt;
	default  = &amp;quot;N&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound (force)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lbf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 4.4482216152605,&lt;br /&gt;
	default  = &amp;quot;N&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound (force)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb(f)&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 4.4482216152605,&lt;br /&gt;
	default  = &amp;quot;N&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound (force)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;LT-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;long ton-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;long tons-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;LT&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 9964.01641818352,&lt;br /&gt;
	default  = &amp;quot;kN&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;LTf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;long ton-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;long tons-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;LTf&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 9964.01641818352,&lt;br /&gt;
	default  = &amp;quot;kN&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mdyn&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megadyne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mdyn&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 10,&lt;br /&gt;
	default  = &amp;quot;lb-f&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Dyne&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mdyn&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millidyne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mdyn&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.00000001,&lt;br /&gt;
	default  = &amp;quot;gr-f&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Dyne&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mg-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;milligram-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;milligrams-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mg&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.00000980665,&lt;br /&gt;
	default  = &amp;quot;μN gr-f&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mgf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;milligram-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;milligrams-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mgf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.00000980665,&lt;br /&gt;
	default  = &amp;quot;μN grf&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mp&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megapond&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 9806.65,&lt;br /&gt;
	default  = &amp;quot;kN LT-f ST-f&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mp&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millipond&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.00000980665,&lt;br /&gt;
	default  = &amp;quot;μN gr-f&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;N&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;newton&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;N&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;lb-f&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Newton (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oz-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;ounce-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;ounces-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;oz&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.2780138203095378125,&lt;br /&gt;
	default  = &amp;quot;mN&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound (force)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ozf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;ounce-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;ounces-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ozf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.2780138203095378125,&lt;br /&gt;
	default  = &amp;quot;mN&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound (force)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;p&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pond&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;p&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.00980665,&lt;br /&gt;
	default  = &amp;quot;mN oz-f&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pdl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;poundal&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;pdl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 0.138254954376,&lt;br /&gt;
	default  = &amp;quot;N&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;S/T-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;short ton-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;short tons-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;S/T&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 8896.443230521,&lt;br /&gt;
	default  = &amp;quot;kN&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;S/Tf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;short ton-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;short tons-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;S/Tf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 8896.443230521,&lt;br /&gt;
	default  = &amp;quot;kN&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ST-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;short ton-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;short tons-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ST&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 8896.443230521,&lt;br /&gt;
	default  = &amp;quot;kN&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;STf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;short ton-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;short tons-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;STf&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 8896.443230521,&lt;br /&gt;
	default  = &amp;quot;kN&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;t-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;tonne-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;tonnes-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;t&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 9806.65,&lt;br /&gt;
	default  = &amp;quot;kN LT-f ST-f&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Ton-force#Tonne-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;tonne-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;tonnes-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;tf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
	scale    = 9806.65,&lt;br /&gt;
	default  = &amp;quot;kN LTf STf&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Ton-force#Tonne-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dyne&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;dyn&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;newtons&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;N&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;poundal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;pdl&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tonne-force&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;tf&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impgal/mi&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;@impgal&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = 1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;L/km USgal/mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km/L&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;km&amp;quot;, &amp;quot;L&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;mpgimp mpgus&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km/l&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;km&amp;quot;, &amp;quot;ll&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;mpgimp mpgus&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L/100 km&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;L&amp;quot;, &amp;quot;100km&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = 1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;mpgimp mpgus&amp;quot;,&lt;br /&gt;
	symlink  = &amp;quot;[[Fuel economy in automobiles#Units of measure|L/100&amp;amp;nbsp;km]]&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;l/100 km&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;ll&amp;quot;, &amp;quot;100km&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = 1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;mpgimp mpgus&amp;quot;,&lt;br /&gt;
	symlink  = &amp;quot;[[Fuel economy in automobiles#Units of measure|l/100&amp;amp;nbsp;km]]&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L/km&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;L&amp;quot;, &amp;quot;km&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = 1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;mpgimp mpgus&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;l/km&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;ll&amp;quot;, &amp;quot;km&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = 1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;mpgimp mpgus&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mi/impqt&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;mi&amp;quot;, &amp;quot;impqt&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;km/L&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mi/U.S.qt&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;mi&amp;quot;, &amp;quot;U.S.qt&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;km/L&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mi/USqt&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;mi&amp;quot;, &amp;quot;USqt&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;km/L&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mi/usqt&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;mi&amp;quot;, &amp;quot;usqt&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;km/L&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mpgimp&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;mi&amp;quot;, &amp;quot;@impgal&amp;quot; },&lt;br /&gt;
	symbol   = &amp;quot;mpg&amp;lt;sub&amp;gt;&amp;amp;#8209;imp&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;L/100 km+mpgus&amp;quot;,&lt;br /&gt;
	symlink  = &amp;quot;[[Fuel economy in automobiles#Units of measure|mpg]]&amp;lt;sub&amp;gt;&amp;amp;#8209;[[Imperial units|imp]]&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mpgus&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;mi&amp;quot;, &amp;quot;+USgal&amp;quot; },&lt;br /&gt;
	symbol   = &amp;quot;mpg&amp;lt;sub&amp;gt;&amp;amp;#8209;US&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;L/100 km+mpgimp&amp;quot;,&lt;br /&gt;
	symlink  = &amp;quot;[[Fuel economy in automobiles#Units of measure|mpg]]&amp;lt;sub&amp;gt;&amp;amp;#8209;[[United States customary units|US]]&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.gal/mi&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;*U.S.gal&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = 1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;L/km impgal/mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usgal/mi&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;+USgal&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
	invert   = 1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;L/km impgal/mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L/100km&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;L/100 km&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;l/100km&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;l/100 km&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mpg&amp;quot;] = {&lt;br /&gt;
	shouldbe = &amp;quot;Use %{mpgus%} for miles per US gallon or %{mpgimp%} for miles per imperial gallon (not %{mpg%})&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mpgU.S.&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mpgus&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mpg&amp;lt;sub&amp;gt;&amp;amp;#8209;U.S.&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	symlink  = &amp;quot;[[Fuel economy in automobiles#Units of measure|mpg]]&amp;lt;sub&amp;gt;&amp;amp;#8209;[[United States customary units|U.S.]]&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mpgu.s.&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mpgus&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mpg&amp;lt;sub&amp;gt;&amp;amp;#8209;U.S.&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	symlink  = &amp;quot;[[Fuel economy in automobiles#Units of measure|mpg]]&amp;lt;sub&amp;gt;&amp;amp;#8209;[[United States customary units|U.S.]]&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mpgUS&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mpgus&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USgal/mi&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;usgal/mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kPa/m&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;kPa&amp;quot;, &amp;quot;-m-frac&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fracture gradient&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;psi/ft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;psi/ft&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;psi&amp;quot;, &amp;quot;-ft-frac&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fracture gradient&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kPa/m&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cm/km&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;centimetre per kilometre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;centimeter per kilometer&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;centimetres per kilometre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;centimeters per kilometer&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cm/km&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;gradient&amp;quot;,&lt;br /&gt;
	scale    = 0.00001,&lt;br /&gt;
	default  = &amp;quot;ft/mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Grade (slope)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft/mi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot per mile&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;feet per mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft/mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;gradient&amp;quot;,&lt;br /&gt;
	scale    = 0.00018939393939393939,&lt;br /&gt;
	default  = &amp;quot;v &amp;lt; 5.28 ! c ! ! m/km&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Grade (slope)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft/nmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot per nautical mile&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;feet per nautical mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft/nmi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;gradient&amp;quot;,&lt;br /&gt;
	scale    = 0.00016457883369330455,&lt;br /&gt;
	default  = &amp;quot;v &amp;lt; 6.076 ! c ! ! m/km&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Grade (slope)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in/ft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch per foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inches per foot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in/ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;gradient&amp;quot;,&lt;br /&gt;
	scale    = 0.083333333333333329,&lt;br /&gt;
	default  = &amp;quot;mm/m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Grade (slope)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in/mi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch per mile&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inches per mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in/mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;gradient&amp;quot;,&lt;br /&gt;
	scale    = 1.5782828282828283e-5,&lt;br /&gt;
	default  = &amp;quot;v &amp;lt; 0.6336 ! m ! c ! m/km&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Grade (slope)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m/km&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metre per kilometre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;meter per kilometer&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;metres per kilometre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;meters per kilometer&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m/km&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;gradient&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	default  = &amp;quot;ft/mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Grade (slope)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mm/km&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millimetre per kilometre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;millimeter per kilometer&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;millimetres per kilometre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;millimeters per kilometer&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mm/km&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;gradient&amp;quot;,&lt;br /&gt;
	scale    = 0.000001,&lt;br /&gt;
	default  = &amp;quot;in/mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Grade (slope)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mm/m&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millimetre per metre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;millimeter per meter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;millimetres per metre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;millimeters per meter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mm/m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;gradient&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	default  = &amp;quot;in/ft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Grade (slope)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;admi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;admiralty mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;nmi&amp;amp;nbsp;(admiralty)&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1853.184,&lt;br /&gt;
	default  = &amp;quot;km mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Nautical mile&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;AU&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;astronomical unit&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;AU&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 149597870700,&lt;br /&gt;
	default  = &amp;quot;km mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Brnmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;British nautical mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;(Brit)&amp;amp;nbsp;nmi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1853.184,&lt;br /&gt;
	default  = &amp;quot;km mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Nautical mile&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;bu&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;bu&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;bu&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.0030303030303030303,&lt;br /&gt;
	default  = &amp;quot;mm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Japanese units of measurement#Length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ch&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;chain&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ch&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 20.1168,&lt;br /&gt;
	default  = &amp;quot;ft m&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;ft&amp;quot;] = { 66, default = &amp;quot;m&amp;quot; }, [&amp;quot;yd&amp;quot;] = { 22, default = &amp;quot;m&amp;quot; } },&lt;br /&gt;
	link     = &amp;quot;Chain (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;chlk&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;[[Chain (unit)|chain]]&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;[[Chain (unit)|ch]]&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 20.1168,&lt;br /&gt;
	default  = &amp;quot;ft m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;chain&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;chain&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 20.1168,&lt;br /&gt;
	default  = &amp;quot;ft m&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;ft&amp;quot;] = { 66, default = &amp;quot;m&amp;quot; }, [&amp;quot;yd&amp;quot;] = { 22, default = &amp;quot;m&amp;quot; } },&lt;br /&gt;
	link     = &amp;quot;Chain (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;chainlk&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;[[Chain (unit)|chain]]&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 20.1168,&lt;br /&gt;
	default  = &amp;quot;ft m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dpcm&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;dot/cm&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;dot/cm&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 100,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;dpi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Dots per inch&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dpi&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;DPI&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;DPI&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 39.370078740157481,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;pitch&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Dots per inch&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;fathom&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;fathom&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1.8288,&lt;br /&gt;
	default  = &amp;quot;ft m&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;foot&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;foot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.3048,&lt;br /&gt;
	default  = &amp;quot;m&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;in&amp;quot;] = { 12, default = &amp;quot;m&amp;quot; } },&lt;br /&gt;
	link     = &amp;quot;Foot (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.3048,&lt;br /&gt;
	exception= &amp;quot;integer_more_precision&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;m&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;in&amp;quot;] = { 12, default = &amp;quot;m&amp;quot; } },&lt;br /&gt;
	link     = &amp;quot;Foot (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;furlong&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;furlong&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 201.168,&lt;br /&gt;
	default  = &amp;quot;ft m&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Gly&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gigalight-year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Gly&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 9.4607304725808e24,&lt;br /&gt;
	default  = &amp;quot;Mpc&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Light-year#Definitions&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Gpc&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gigaparsec&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Gpc&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 3.0856775814671916e25,&lt;br /&gt;
	default  = &amp;quot;Gly&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Parsec#Megaparsecs and gigaparsecs&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hand&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;hand&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	builtin  = &amp;quot;hand&amp;quot;,&lt;br /&gt;
	scale    = 0.1016,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;in cm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Hand (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inches&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.0254,&lt;br /&gt;
	exception= &amp;quot;subunit_more_precision&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;mm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;inabbreviated&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;in&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.0254,&lt;br /&gt;
	default  = &amp;quot;mm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Inch&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kly&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilolight-year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kly&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 9.4607304725808e18,&lt;br /&gt;
	default  = &amp;quot;pc&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Light-year#Definitions&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kpc&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kiloparsec&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kpc&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 3.0856775814671916e19,&lt;br /&gt;
	default  = &amp;quot;kly&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Parsec#Parsecs and kiloparsecs&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;LD&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;lunar distance&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;LD&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 384403000,&lt;br /&gt;
	default  = &amp;quot;km mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Lunar distance (astronomy)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;league&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;league&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 4828.032,&lt;br /&gt;
	default  = &amp;quot;km&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;League (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ly&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;light-year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ly&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 9.4607304725808e15,&lt;br /&gt;
	default  = &amp;quot;AU&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;metre&amp;quot;,&lt;br /&gt;
	_name1_us= &amp;quot;meter&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;v &amp;gt; 0 and v &amp;lt; 3 ! ftin ! ft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Metre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1609.344,&lt;br /&gt;
	default  = &amp;quot;km&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;ch&amp;quot;] = { 80, default = &amp;quot;km&amp;quot; }, [&amp;quot;chlk&amp;quot;] = { 80, default = &amp;quot;km&amp;quot; }, [&amp;quot;chain&amp;quot;] = { 80, default = &amp;quot;km&amp;quot; }, [&amp;quot;chainlk&amp;quot;] = { 80, default = &amp;quot;km&amp;quot; }, [&amp;quot;ft&amp;quot;] = { 5280, default = &amp;quot;km&amp;quot; }, [&amp;quot;furlong&amp;quot;] = { 8, default = &amp;quot;km&amp;quot; }, [&amp;quot;yd&amp;quot;] = { 1760, default = &amp;quot;km&amp;quot; } },&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mil&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;mil&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.0000254,&lt;br /&gt;
	default  = &amp;quot;mm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Thousandth of an inch&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mly&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megalight-year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mly&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 9.4607304725808e21,&lt;br /&gt;
	default  = &amp;quot;kpc&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Light-year#Definitions&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mpc&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megaparsec&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mpc&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 3.0856775814671916e22,&lt;br /&gt;
	default  = &amp;quot;Mly&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Parsec#Megaparsecs and gigaparsecs&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;NM&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;nautical mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;NM&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1852,&lt;br /&gt;
	default  = &amp;quot;km mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;nmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;nautical mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;nmi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1852,&lt;br /&gt;
	default  = &amp;quot;km mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oldUKnmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;nautical mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;nmi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1853.184,&lt;br /&gt;
	default  = &amp;quot;km mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oldUSnmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;nautical mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;nmi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1853.24496,&lt;br /&gt;
	default  = &amp;quot;km mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pc&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;parsec&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;pc&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 3.0856775814671916e16,&lt;br /&gt;
	default  = &amp;quot;ly&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;perch&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;perches&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;perch&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 5.0292,&lt;br /&gt;
	default  = &amp;quot;ft m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Rod (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pitch&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;μm&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;μm&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1e-6,&lt;br /&gt;
	default  = &amp;quot;dpi&amp;quot;,&lt;br /&gt;
	defkey   = &amp;quot;pitch&amp;quot;,&lt;br /&gt;
	linkey   = &amp;quot;pitch&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Dots per inch&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pole&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;pole&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 5.0292,&lt;br /&gt;
	default  = &amp;quot;ft m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Rod (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pre1954U.S.nmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;(pre-1954&amp;amp;nbsp;U.S.) nautical mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;(pre&amp;amp;#8209;1954&amp;amp;nbsp;U.S.) nmi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1853.24496,&lt;br /&gt;
	default  = &amp;quot;km mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Nautical mile&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pre1954USnmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;(pre-1954&amp;amp;nbsp;US) nautical mile&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;(pre-1954&amp;amp;nbsp;U.S.) nautical mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;(pre&amp;amp;#8209;1954&amp;amp;nbsp;US) nmi&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;(pre&amp;amp;#8209;1954&amp;amp;nbsp;U.S.) nmi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1853.24496,&lt;br /&gt;
	default  = &amp;quot;km mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Nautical mile&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;rd&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;rod&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;rd&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 5.0292,&lt;br /&gt;
	default  = &amp;quot;ft m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Rod (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;royal cubit&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;royal cubit&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.524,&lt;br /&gt;
	default  = &amp;quot;mm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;rtkm&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;route kilometre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;route kilometer&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;km&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilometre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;rtmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;route mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1609.344,&lt;br /&gt;
	default  = &amp;quot;km&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mile&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;shaku&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;shaku&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;shaku&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.30303030303030304,&lt;br /&gt;
	default  = &amp;quot;m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Shaku (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sm&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;smoot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;sm&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1.70180,&lt;br /&gt;
	default  = &amp;quot;m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Smoot (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;smi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;statute mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1609.344,&lt;br /&gt;
	default  = &amp;quot;km&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;chain&amp;quot;] = { 80, default = &amp;quot;km&amp;quot; } },&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;solar radius&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;solar radius&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;solar radii&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;&#039;&#039;R&#039;&#039;&amp;lt;sub&amp;gt;☉&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 695700e3,&lt;br /&gt;
	default  = &amp;quot;km&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sun&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;sun&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;sun&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.030303030303030304,&lt;br /&gt;
	default  = &amp;quot;mm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Japanese units of measurement#Length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;thou&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;thou&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;thou&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.0000254,&lt;br /&gt;
	default  = &amp;quot;mm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Thousandth of an inch&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;verst&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;verst&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 1066.8,&lt;br /&gt;
	default  = &amp;quot;km mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;yd&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;yard&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;yd&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.9144,&lt;br /&gt;
	default  = &amp;quot;m&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;ft&amp;quot;] = { 3, default = &amp;quot;m&amp;quot; } },&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;μin&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;microinch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;microinches&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;μin&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.0000000254,&lt;br /&gt;
	default  = &amp;quot;nm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;SI prefix#Non-metric units&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Å&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;ångström&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Å&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 0.0000000001,&lt;br /&gt;
	default  = &amp;quot;in&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Hz&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;hertz&amp;quot;,&lt;br /&gt;
	_name2   = &amp;quot;hertz&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;Hz&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 3.3356409519815204e-9,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Hertz&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;rpm&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;revolution per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;revolutions per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;rpm&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
	scale    = 5.5594015866358675e-11,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;Hz&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Revolutions per minute&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-ft-frac&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;ft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Fracture gradient&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-in-stiff&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;in&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Stiffness&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-m-frac&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Fracture gradient&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-m-stiff&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Stiffness&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;100km&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;km&amp;quot;,&lt;br /&gt;
	multiplier= 100,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;100mi&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	multiplier= 100,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;100miles&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;miles&amp;quot;,&lt;br /&gt;
	multiplier= 100,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;admiralty nmi&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;oldUKnmi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;angstrom&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Å&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;au&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;AU&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;au&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;feet&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;ft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hands&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;hand&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;inch&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;in&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;inches&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;in&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;light-year&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;ly&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;meter&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;meters&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;metre&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;metres&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;micrometre&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;micron&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μm&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;μin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mile&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;miles&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;parsec&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;pc&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;rod&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;rd&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;smoot&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;sm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;uin&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;yard&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;yd&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;yards&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;yd&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;yds&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;yd&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dtex&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;decitex&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;decitex&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;dtex&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;linear density&amp;quot;,&lt;br /&gt;
	scale    = 1e-7,&lt;br /&gt;
	default  = &amp;quot;lb/yd&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Units of textile measurement#Units&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/cm&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram per centimetre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram per centimeter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms per centimetre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms per centimeter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg/cm&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;linear density&amp;quot;,&lt;br /&gt;
	scale    = 100,&lt;br /&gt;
	default  = &amp;quot;lb/yd&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Linear density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/m&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram per metre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram per meter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms per metre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms per meter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg/m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;linear density&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;lb/yd&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Linear density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/ft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per foot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;linear density&amp;quot;,&lt;br /&gt;
	scale    = 1.4881639435695539,&lt;br /&gt;
	default  = &amp;quot;kg/m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Linear density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/yd&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per yard&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per yard&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/yd&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;linear density&amp;quot;,&lt;br /&gt;
	scale    = 0.49605464785651798,&lt;br /&gt;
	default  = &amp;quot;kg/m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Linear density&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;G&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;gauss&amp;quot;,&lt;br /&gt;
	_name2   = &amp;quot;gauss&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;G&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;magnetic field strength&amp;quot;,&lt;br /&gt;
	scale    = 0.0001,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;T&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gauss (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;T&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;tesla&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;T&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;magnetic field strength&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;G&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Tesla (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;A/m&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;ampere per metre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;ampere per meter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;amperes per metre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;amperes per meter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;A/m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;magnetizing field&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;Oe&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kA/m&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kiloampere per metre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kiloampere per meter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kiloamperes per metre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kiloamperes per meter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kA/m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;magnetizing field&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;kOe&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Ampere per metre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MA/m&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megaampere per metre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;megaampere per meter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;megaamperes per metre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;megaamperes per meter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;MA/m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;magnetizing field&amp;quot;,&lt;br /&gt;
	scale    = 1e6,&lt;br /&gt;
	default  = &amp;quot;kOe&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Ampere per metre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Oe&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;oersted&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;Oe&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;magnetizing field&amp;quot;,&lt;br /&gt;
	scale    = 79.5774715,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;kA/m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Oersted&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-Lcwt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;hundredweight&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;hundredweight&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cwt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 50.80234544,&lt;br /&gt;
	default  = &amp;quot;lb&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-Scwt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;hundredweight&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;hundredweight&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cwt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 45.359237,&lt;br /&gt;
	default  = &amp;quot;lb&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-ST&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;short ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ST&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 907.18474,&lt;br /&gt;
	default  = &amp;quot;t&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;carat&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;carat&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 0.0002,&lt;br /&gt;
	default  = &amp;quot;g&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Carat (mass)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;drachm&amp;quot;] = {&lt;br /&gt;
	name1_us = &amp;quot;dram&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;drachm&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 0.001771845195,&lt;br /&gt;
	default  = &amp;quot;g&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Dram (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dram&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;drachm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dwt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pennyweight&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;dwt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 0.00155517384,&lt;br /&gt;
	default  = &amp;quot;oz g&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;DWton&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;deadweight ton&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1016.0469088,&lt;br /&gt;
	default  = &amp;quot;DWtonne&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Deadweight tonnage&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;DWtonne&amp;quot;] = {&lt;br /&gt;
	name1_us = &amp;quot;deadweight metric ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;deadweight tonne&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;~deadweight metric ton&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;DWton&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Deadweight tonnage&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;gram&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;g&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;oz&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gram&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gr&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;grain&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gr&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 0.00006479891,&lt;br /&gt;
	default  = &amp;quot;g&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Grain (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Gt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gigatonne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Gt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1000000000000,&lt;br /&gt;
	default  = &amp;quot;LT ST&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Tonne&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impgalh2o&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial gallon of water&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;imperial gallons of water&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;imp&amp;amp;nbsp;gal H&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;O&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 4.5359236999999499,&lt;br /&gt;
	default  = &amp;quot;lb kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Imperial gallon&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilotonne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1000000,&lt;br /&gt;
	default  = &amp;quot;LT ST&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Tonne&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 0.45359237,&lt;br /&gt;
	exception= &amp;quot;integer_more_precision&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kg&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;oz&amp;quot;] = { 16, default = &amp;quot;kg&amp;quot; } },&lt;br /&gt;
	link     = &amp;quot;Pound (mass)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Lcwt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;long hundredweight&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;long hundredweight&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Lcwt&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 50.80234544,&lt;br /&gt;
	default  = &amp;quot;lb&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;qtr&amp;quot;] = { 4, default = &amp;quot;kg&amp;quot; }, [&amp;quot;st&amp;quot;] = { 8, default = &amp;quot;kg&amp;quot; } },&lt;br /&gt;
	link     = &amp;quot;Hundredweight&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;long cwt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;long hundredweight&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;long hundredweight&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;long&amp;amp;nbsp;cwt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 50.80234544,&lt;br /&gt;
	default  = &amp;quot;lb kg&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;qtr&amp;quot;] = { 4, default = &amp;quot;kg&amp;quot; } },&lt;br /&gt;
	link     = &amp;quot;Hundredweight&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;long qtr&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;long quarter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;long&amp;amp;nbsp;qtr&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 12.70058636,&lt;br /&gt;
	default  = &amp;quot;lb kg&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;LT&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;long ton&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1016.0469088,&lt;br /&gt;
	default  = &amp;quot;t&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;Lcwt&amp;quot;] = { 20, default = &amp;quot;t&amp;quot;, unit = &amp;quot;-Lcwt&amp;quot; } },&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;long ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;LT&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1016.0469088,&lt;br /&gt;
	default  = &amp;quot;t&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;Lcwt&amp;quot;] = { 20, default = &amp;quot;t&amp;quot;, unit = &amp;quot;-Lcwt&amp;quot; } },&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;metric ton&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;metric ton&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;long ton&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Tonne&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metric ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;t&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;LT ST&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Tonne&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;megatonne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1000000000,&lt;br /&gt;
	default  = &amp;quot;LT ST&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Tonne&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oz&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;ounce&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;oz&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 0.028349523125,&lt;br /&gt;
	default  = &amp;quot;g&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ozt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;troy ounce&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ozt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 0.0311034768,&lt;br /&gt;
	default  = &amp;quot;oz g&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pdr&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pounder&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;pdr&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 0.45359237,&lt;br /&gt;
	default  = &amp;quot;kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound (mass)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;qtr&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;quarter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;qtr&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 12.70058636,&lt;br /&gt;
	default  = &amp;quot;lb kg&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;lb&amp;quot;] = { 28, default = &amp;quot;kg&amp;quot; } },&lt;br /&gt;
	link     = &amp;quot;Long quarter&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Scwt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;short hundredweight&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;short hundredweight&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Scwt&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 45.359237,&lt;br /&gt;
	default  = &amp;quot;lb&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Hundredweight&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;short cwt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;short hundredweight&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;short hundredweight&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;short&amp;amp;nbsp;cwt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 45.359237,&lt;br /&gt;
	default  = &amp;quot;lb kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Hundredweight&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;short qtr&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;short quarter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;short&amp;amp;nbsp;qtr&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 11.33980925,&lt;br /&gt;
	default  = &amp;quot;lb kg&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ST&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;short ton&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 907.18474,&lt;br /&gt;
	default  = &amp;quot;t&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;Scwt&amp;quot;] = { 20, default = &amp;quot;t&amp;quot;, unit = &amp;quot;-Scwt&amp;quot; } },&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;shtn&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;short ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;sh&amp;amp;nbsp;tn&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 907.18474,&lt;br /&gt;
	default  = &amp;quot;t&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;shton&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;ton&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 907.18474,&lt;br /&gt;
	default  = &amp;quot;t&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;solar mass&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;solar mass&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;solar masses&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;&#039;&#039;M&#039;&#039;&amp;lt;sub&amp;gt;☉&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1.98855e30,&lt;br /&gt;
	default  = &amp;quot;kg&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;st&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;stone&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;stone&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;st&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 6.35029318,&lt;br /&gt;
	default  = &amp;quot;lb kg&amp;quot;,&lt;br /&gt;
	subdivs  = { [&amp;quot;lb&amp;quot;] = { 14, default = &amp;quot;kg lb&amp;quot; } },&lt;br /&gt;
	link     = &amp;quot;Stone (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;t&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;tonne&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;metric ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;t&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;LT ST&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tonne&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;tonne&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;metric ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;t&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;shton&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;troy pound&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;troy pound&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 0.3732417216,&lt;br /&gt;
	default  = &amp;quot;lb kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Troy weight&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usgalh2o&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US gallon of water&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. gallon of water&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;US gallons of water&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;U.S. gallons of water&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;gal H&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;O&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 3.7776215836051126,&lt;br /&gt;
	default  = &amp;quot;lb kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;United States customary units#Fluid volume&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;viss&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;viss&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;viss&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
	scale    = 1.632932532,&lt;br /&gt;
	default  = &amp;quot;kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Myanmar units of measurement#Mass&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;billion tonne&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e9t&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kilogram&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kg&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kilotonne&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbs&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;lb&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbt&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;troy pound&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lcwt&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Lcwt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;long ton&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;LT&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mcg&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μg&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;million tonne&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e6t&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;scwt&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Scwt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;short ton&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;ST&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;stone&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;st&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;thousand tonne&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e3t&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tonnes&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;t&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/kW&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram per kilowatt&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms per kilowatt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg/kW&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass per unit power&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	default  = &amp;quot;lb/hp&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilowatt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/hp&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per horsepower&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per horsepower&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/hp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;mass per unit power&amp;quot;,&lt;br /&gt;
	scale    = 0.00060827738784176115,&lt;br /&gt;
	default  = &amp;quot;kg/kW&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Horsepower&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/h&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;kg&amp;quot;, &amp;quot;h&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;mass per unit time&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;lb/h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/h&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;lb&amp;quot;, &amp;quot;h&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;mass per unit time&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kg/h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-mol/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-mole per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gram-moles per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g&amp;amp;#8209;mol/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 1.1574074074074073e-5,&lt;br /&gt;
	default  = &amp;quot;μmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-mol/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-mole per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gram-moles per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g&amp;amp;#8209;mol/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.00027777777777777778,&lt;br /&gt;
	default  = &amp;quot;mmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-mol/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-mole per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gram-moles per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g&amp;amp;#8209;mol/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.016666666666666666,&lt;br /&gt;
	default  = &amp;quot;g-mol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g-mol/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-mole per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gram-moles per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g&amp;amp;#8209;mol/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;lb-mol/min&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gmol/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-mole per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gram-moles per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gmol/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 1.1574074074074073e-5,&lt;br /&gt;
	default  = &amp;quot;μmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gmol/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-mole per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gram-moles per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gmol/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.00027777777777777778,&lt;br /&gt;
	default  = &amp;quot;mmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gmol/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-mole per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gram-moles per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gmol/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.016666666666666666,&lt;br /&gt;
	default  = &amp;quot;gmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gmol/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gram-mole per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;gram-moles per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gmol/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;lbmol/min&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kmol/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilomole per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilomoles per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kmol/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.011574074074074073,&lt;br /&gt;
	default  = &amp;quot;mmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kmol/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilomole per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilomoles per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kmol/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.27777777777777779,&lt;br /&gt;
	default  = &amp;quot;mol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kmol/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilomole per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilomoles per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kmol/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 16.666666666666668,&lt;br /&gt;
	default  = &amp;quot;mol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilomole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kmol/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilomole per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilomoles per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kmol/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;lb-mol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb-mol/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-mole per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound-moles per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb&amp;amp;#8209;mol/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.0052499116898148141,&lt;br /&gt;
	default  = &amp;quot;mmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-mole&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb-mol/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-mole per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound-moles per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb&amp;amp;#8209;mol/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.12599788055555555,&lt;br /&gt;
	default  = &amp;quot;mol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-mole&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb-mol/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-mole per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound-moles per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb&amp;amp;#8209;mol/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 7.5598728333333334,&lt;br /&gt;
	default  = &amp;quot;mol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-mole&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb-mol/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-mole per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound-moles per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb&amp;amp;#8209;mol/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 453.59237,&lt;br /&gt;
	default  = &amp;quot;kmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-mole&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbmol/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-mole per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound-moles per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lbmol/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.0052499116898148141,&lt;br /&gt;
	default  = &amp;quot;mmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-mole&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbmol/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-mole per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound-moles per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lbmol/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.12599788055555555,&lt;br /&gt;
	default  = &amp;quot;mol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-mole&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbmol/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-mole per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound-moles per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lbmol/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 7.5598728333333334,&lt;br /&gt;
	default  = &amp;quot;mol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-mole&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbmol/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-mole per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound-moles per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lbmol/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 453.59237,&lt;br /&gt;
	default  = &amp;quot;kmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-mole&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mmol/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millimole per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;millimoles per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mmol/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	default  = &amp;quot;lb-mol/d&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mol/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;mole per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;moles per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mol/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 1.1574074074074073e-5,&lt;br /&gt;
	default  = &amp;quot;μmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mol/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;mole per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;moles per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mol/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.00027777777777777778,&lt;br /&gt;
	default  = &amp;quot;mmol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mol/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;mole per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;moles per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mol/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.016666666666666666,&lt;br /&gt;
	default  = &amp;quot;mol/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mol/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;mole per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;moles per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mol/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;lb-mol/min&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;μmol/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;micromole per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;micromoles per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;μmol/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;molar rate&amp;quot;,&lt;br /&gt;
	scale    = 0.000001,&lt;br /&gt;
	default  = &amp;quot;lb-mol/d&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mole (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;umol/s&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;μmol/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/acre&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;per acre&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;per acre&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/acre&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit area&amp;quot;,&lt;br /&gt;
	scale    = 0.00024710538146716532,&lt;br /&gt;
	default  = &amp;quot;/ha&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Acre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/ha&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;per hectare&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;per hectare&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/ha&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit area&amp;quot;,&lt;br /&gt;
	scale    = 100e-6,&lt;br /&gt;
	default  = &amp;quot;/acre&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Hectare&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/sqcm&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;per square centimetre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;per square centimeter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;per square centimetre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;per square centimeter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/cm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit area&amp;quot;,&lt;br /&gt;
	scale    = 1e4,&lt;br /&gt;
	default  = &amp;quot;/sqin&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Square centimetre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/sqin&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;per square inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;per square inch&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/in&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit area&amp;quot;,&lt;br /&gt;
	scale    = 1550.0031000062002,&lt;br /&gt;
	default  = &amp;quot;/sqcm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Square inch&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/sqkm&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;per square kilometre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;per square kilometer&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;per square kilometre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;per square kilometer&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit area&amp;quot;,&lt;br /&gt;
	scale    = 1e-6,&lt;br /&gt;
	default  = &amp;quot;/sqmi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Square kilometre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/sqmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;per square mile&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;per square mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/sq&amp;amp;nbsp;mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit area&amp;quot;,&lt;br /&gt;
	scale    = 3.8610215854244582e-7,&lt;br /&gt;
	default  = &amp;quot;/sqkm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Square mile&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;PD/acre&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inhabitant per acre&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inhabitants per acre&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/acre&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit area&amp;quot;,&lt;br /&gt;
	scale    = 0.00024710538146716532,&lt;br /&gt;
	default  = &amp;quot;PD/ha&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Acre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;PD/ha&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inhabitant per hectare&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inhabitants per hectare&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/ha&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit area&amp;quot;,&lt;br /&gt;
	scale    = 100e-6,&lt;br /&gt;
	default  = &amp;quot;PD/acre&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Hectare&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;PD/sqkm&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inhabitant per square kilometre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;inhabitant per square kilometer&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inhabitants per square kilometre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;inhabitants per square kilometer&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit area&amp;quot;,&lt;br /&gt;
	scale    = 1e-6,&lt;br /&gt;
	default  = &amp;quot;PD/sqmi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Square kilometre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;PD/sqmi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inhabitant per square mile&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inhabitants per square mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/sq&amp;amp;nbsp;mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit area&amp;quot;,&lt;br /&gt;
	scale    = 3.8610215854244582e-7,&lt;br /&gt;
	default  = &amp;quot;PD/sqkm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Square mile&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/cm2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;/sqcm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/in2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;/sqin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/km2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;/sqkm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pd/acre&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;PD/acre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pd/ha&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;PD/ha&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;PD/km2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;PD/sqkm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pd/km2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;PD/sqkm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;PD/km²&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;PD/sqkm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pd/sqkm&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;PD/sqkm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pd/sqmi&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;PD/sqmi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/l&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;per litre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;per liter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;per litre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;per liter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/l&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit volume&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;/usgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Litre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/L&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;per litre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;per liter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;per litre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;per liter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/L&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit volume&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;/usgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Litre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/USgal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;per gallon&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;per gallon&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;/gal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;per unit volume&amp;quot;,&lt;br /&gt;
	scale    = 264.172052,&lt;br /&gt;
	default  = &amp;quot;/L&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;US gallon&amp;quot;,&lt;br /&gt;
	customary= 2,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;/usgal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;/USgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;bhp&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;brake horsepower&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;brake horsepower&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;bhp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 745.69987158227022,&lt;br /&gt;
	default  = &amp;quot;kW&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Horsepower#Brake horsepower&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Cal/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;large calorie per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;large calories per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Cal/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 0.048425925925925928,&lt;br /&gt;
	default  = &amp;quot;kJ/d&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Cal/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;large calorie per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;large calories per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Cal/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 1.1622222222222223,&lt;br /&gt;
	default  = &amp;quot;kJ/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cal/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;calorie per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;calories per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cal/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 0.0011622222222222223,&lt;br /&gt;
	default  = &amp;quot;W&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;CV&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metric horsepower&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;metric horsepower&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;CV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 735.49875,&lt;br /&gt;
	default  = &amp;quot;kW&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hk&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metric horsepower&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;metric horsepower&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;hk&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 735.49875,&lt;br /&gt;
	default  = &amp;quot;kW&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hp&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;horsepower&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;horsepower&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;hp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 745.69987158227022,&lt;br /&gt;
	default  = &amp;quot;kW&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hp-electric&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;electric horsepower&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;electric horsepower&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;hp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 746,&lt;br /&gt;
	default  = &amp;quot;kW&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Horsepower#Electrical horsepower&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hp-electrical&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;electrical horsepower&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;electrical horsepower&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;hp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 746,&lt;br /&gt;
	default  = &amp;quot;kW&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Horsepower#Electrical horsepower&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hp-metric&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metric horsepower&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;metric horsepower&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;hp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 735.49875,&lt;br /&gt;
	default  = &amp;quot;kW&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ihp&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;indicated horsepower&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;indicated horsepower&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ihp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 745.69987158227022,&lt;br /&gt;
	default  = &amp;quot;kW&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Horsepower#Indicated horsepower&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcal/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilocalorie per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilocalories per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kcal/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 1.1622222222222223,&lt;br /&gt;
	default  = &amp;quot;kW&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Calorie&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kJ/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilojoule per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilojoules per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kJ/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 0.011574074074074073,&lt;br /&gt;
	default  = &amp;quot;Cal/d&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilojoule&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kJ/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilojoule per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilojoules per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kJ/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 0.27777777777777779,&lt;br /&gt;
	default  = &amp;quot;W&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilojoule&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;PS&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metric horsepower&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;metric horsepower&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;PS&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 735.49875,&lt;br /&gt;
	default  = &amp;quot;kW&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;shp&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;shaft horsepower&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;shaft horsepower&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;shp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 745.69987158227022,&lt;br /&gt;
	default  = &amp;quot;kW&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Horsepower#Shaft horsepower&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;W&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;watt&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;W&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;hp&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Watt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BTU/h&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;BTU&amp;quot;, &amp;quot;h&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;W&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Btu/h&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;Btu&amp;quot;, &amp;quot;h&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;power&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;W&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;BHP&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;bhp&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;btu/h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;BTU/h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;HP&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;hp&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Hp&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;hp&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hp-mechanical&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;hp&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;IHP&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;ihp&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;SHP&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;shp&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;whp&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;hp&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hp/lb&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;horsepower per pound&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;horsepower per pound&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;hp/lb&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 1643.986806,&lt;br /&gt;
	default  = &amp;quot;kW/kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Power-to-weight ratio&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hp/LT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;horsepower per long ton&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;horsepower per long ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;hp/LT&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 0.73392268125000004,&lt;br /&gt;
	default  = &amp;quot;kW/t&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Power-to-weight ratio&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hp/ST&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;horsepower per short ton&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;horsepower per short ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;hp/ST&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 0.821993403,&lt;br /&gt;
	default  = &amp;quot;kW/t&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Power-to-weight ratio&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hp/t&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;horsepower per tonne&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;horsepower per tonne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;hp/t&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 0.74569987158227022,&lt;br /&gt;
	default  = &amp;quot;kW/t&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Power-to-weight ratio&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kW/kg&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilowatt per kilogram&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilowatts per kilogram&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kW/kg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;hp/lb&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Power-to-weight ratio&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kW/t&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilowatt per tonne&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilowatts per tonne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kW/t&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;PS/t&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Power-to-weight ratio&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;PS/t&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metric horsepower per tonne&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;metric horsepower per tonne&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;PS/t&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 0.73549875,&lt;br /&gt;
	default  = &amp;quot;kW/t&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Power-to-weight ratio&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;shp/lb&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;shaft horsepower per pound&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;shaft horsepower per pound&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;shp/lb&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;power per unit mass&amp;quot;,&lt;br /&gt;
	scale    = 1643.986806,&lt;br /&gt;
	default  = &amp;quot;kW/kg&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Power-to-weight ratio&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hp/tonne&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;hp/t&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;hp/tonne&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kW/tonne&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kW/tonne&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kW/t&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kW/tonne&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-lb/in2&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per square inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per square inch&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/in&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 6894.7572931683608,&lt;br /&gt;
	default  = &amp;quot;kPa kgf/cm2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;atm&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;standard atmosphere&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;atm&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 101325,&lt;br /&gt;
	default  = &amp;quot;kPa&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Atmosphere (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Ba&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;barye&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Ba&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 0.1,&lt;br /&gt;
	default  = &amp;quot;Pa&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;bar&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;bar&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 100000,&lt;br /&gt;
	default  = &amp;quot;kPa&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Bar (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dbar&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;decibar&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;dbar&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 10000,&lt;br /&gt;
	default  = &amp;quot;kPa&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Bar (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;inHg&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch of mercury&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inches of mercury&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;inHg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 3386.388640341,&lt;br /&gt;
	default  = &amp;quot;kPa&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kBa&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilobarye&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kBa&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 100,&lt;br /&gt;
	default  = &amp;quot;hPa&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barye&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg-f/cm2&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram-force per square centimetre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram-force per square centimeter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms-force per square centimetre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms-force per square centimeter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;/cm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 98066.5,&lt;br /&gt;
	default  = &amp;quot;psi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/cm2&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram per square centimetre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram per square centimeter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms per square centimetre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms per square centimeter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg/cm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 98066.5,&lt;br /&gt;
	default  = &amp;quot;psi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kgf/cm2&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram-force per square centimetre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram-force per square centimeter&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilograms-force per square centimetre&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilograms-force per square centimeter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kgf/cm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 98066.5,&lt;br /&gt;
	default  = &amp;quot;psi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram-force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ksi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilopound per square inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilopounds per square inch&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ksi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 6894757.2931683613,&lt;br /&gt;
	default  = &amp;quot;MPa&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound per square inch&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbf/in2&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-force per square inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds-force per square inch&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lbf/in&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 6894.7572931683608,&lt;br /&gt;
	default  = &amp;quot;kPa kgf/cm2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mb&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millibar&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mb&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 100,&lt;br /&gt;
	default  = &amp;quot;hPa&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Bar (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mbar&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millibar&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mbar&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 100,&lt;br /&gt;
	default  = &amp;quot;hPa&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Bar (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mmHg&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millimetre of mercury&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;millimeter of mercury&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;millimetres of mercury&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;millimeters of mercury&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mmHg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 133.322387415,&lt;br /&gt;
	default  = &amp;quot;kPa&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Pa&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;pascal&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;Pa&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;psi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pascal (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;psf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per square foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per square foot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;psf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 47.880258980335839,&lt;br /&gt;
	default  = &amp;quot;kPa&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound per square inch&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;psi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound per square inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pounds per square inch&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;psi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 6894.7572931683608,&lt;br /&gt;
	default  = &amp;quot;kPa&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Torr&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;torr&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Torr&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	scale    = 133.32236842105263,&lt;br /&gt;
	default  = &amp;quot;kPa&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;N/cm2&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;N&amp;quot;, &amp;quot;cm2&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;psi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;N/m2&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;N&amp;quot;, &amp;quot;m2&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;psi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g/cm2&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;g&amp;quot;, &amp;quot;cm2&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;lb/sqft&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;g/m2&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;g&amp;quot;, &amp;quot;m2&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;lb/sqft&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/ha&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;kg&amp;quot;, &amp;quot;ha&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;lb/acre&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg/m2&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;kg&amp;quot;, &amp;quot;m2&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;lb/sqft&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/1000sqft&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;lb&amp;quot;, &amp;quot;1000sqft&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;g/m2&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/acre&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;lb&amp;quot;, &amp;quot;acre&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kg/ha&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/sqft&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;lb&amp;quot;, &amp;quot;sqft&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kg/m2&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/sqyd&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;lb&amp;quot;, &amp;quot;sqyd&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kg/m2&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;LT/acre&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;LT&amp;quot;, &amp;quot;acre&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;t/ha&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MT/ha&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;MT&amp;quot;, &amp;quot;ha&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;LT/acre ST/acre&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oz/sqft&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;oz&amp;quot;, &amp;quot;sqft&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;g/m2&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oz/sqyd&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;oz&amp;quot;, &amp;quot;sqyd&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;g/m2&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ST/acre&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;ST&amp;quot;, &amp;quot;acre&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;t/ha&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;t/ha&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;t&amp;quot;, &amp;quot;ha&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;LT/acre ST/acre&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tonne/acre&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;tonne&amp;quot;, &amp;quot;acre&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;tonne/ha&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tonne/ha&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;tonne&amp;quot;, &amp;quot;ha&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;tonne/acre&amp;quot;,&lt;br /&gt;
	multiplier= 9.80665,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kgfpsqcm&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kgf/cm2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kgpsqcm&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kg/cm2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kN/m2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kPa&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb/in2&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;lbf/in2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;torr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Torr&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Bq&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;becquerel&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;Bq&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;radioactivity&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;pCi&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Becquerel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Ci&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;curie&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;Ci&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;radioactivity&amp;quot;,&lt;br /&gt;
	scale    = 3.7e10,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;GBq&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Curie (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Rd&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;rutherford&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;Rd&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;radioactivity&amp;quot;,&lt;br /&gt;
	scale    = 1e6,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;MBq&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Rutherford (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cm/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;centimetre per hour&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;centimeter per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;centimetres per hour&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;centimeters per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cm/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 2.7777777777777775e-6,&lt;br /&gt;
	default  = &amp;quot;in/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cm/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;centimetre per second&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;centimeter per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;centimetres per second&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;centimeters per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cm/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 0.01,&lt;br /&gt;
	default  = &amp;quot;in/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cm/year&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;centimetre per year&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;centimeter per year&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;centimetres per year&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;centimeters per year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cm/year&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 3.168873850681143e-10,&lt;br /&gt;
	default  = &amp;quot;in/year&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Orders of magnitude (speed)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;foot/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;foot per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 0.3048,&lt;br /&gt;
	default  = &amp;quot;m/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;feet per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 0.00508,&lt;br /&gt;
	default  = &amp;quot;m/min&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Feet per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;foot per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;feet per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 0.3048,&lt;br /&gt;
	default  = &amp;quot;m/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Feet per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;furlong per fortnight&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;furlongs per fortnight&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;furlong per fortnight&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 0.00016630952380952381,&lt;br /&gt;
	default  = &amp;quot;km/h mph&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;FFF system&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inches per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 7.0555555555555559e-6,&lt;br /&gt;
	default  = &amp;quot;cm/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Inch&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inches per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 0.0254,&lt;br /&gt;
	default  = &amp;quot;cm/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Inch&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in/year&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;inch per year&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;inches per year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in/year&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 8.0489395807301024e-10,&lt;br /&gt;
	default  = &amp;quot;cm/year&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Orders of magnitude (speed)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;isp&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;km/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Specific impulse&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilometre per day&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilometer per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilometres per day&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilometers per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;km/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 1.1574074074074074e-2,&lt;br /&gt;
	default  = &amp;quot;mi/d&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Orders of magnitude (speed)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilometre per hour&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilometer per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilometres per hour&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilometers per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;km/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 0.27777777777777779,&lt;br /&gt;
	default  = &amp;quot;mph&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilometres per hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilometre per second&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilometer per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kilometres per second&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;kilometers per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;km/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;mi/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kn&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;knot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kn&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 0.51444444444444448,&lt;br /&gt;
	default  = &amp;quot;km/h mph&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Knot (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kNs/kg&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;kN&amp;amp;#8209;s/kg&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kN&amp;amp;#8209;s/kg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 1000,&lt;br /&gt;
	default  = &amp;quot;isp&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Specific impulse&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m/min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metre per minute&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;meter per minute&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;metres per minute&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;meters per minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m/min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 0.016666666666666666,&lt;br /&gt;
	default  = &amp;quot;ft/min&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metre per second&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;meter per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;metres per second&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;meters per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;ft/s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mach&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;Mach&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mach&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	builtin  = &amp;quot;mach&amp;quot;,&lt;br /&gt;
	scale    = 0,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;km/h mph&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mach number&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mi/d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;mile per day&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;miles per day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mi/d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 1.8626666666666667e-2,&lt;br /&gt;
	default  = &amp;quot;km/d&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Orders of magnitude (speed)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mi/s&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;mile per second&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;miles per second&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mi/s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 1609.344,&lt;br /&gt;
	default  = &amp;quot;km/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Mile&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mm/h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millimetre per hour&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;millimeter per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;millimetres per hour&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;millimeters per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mm/h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 2.7777777777777781e-7,&lt;br /&gt;
	default  = &amp;quot;in/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mph&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;mile per hour&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;miles per hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mph&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 0.44704,&lt;br /&gt;
	default  = &amp;quot;km/h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Miles per hour&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Ns/kg&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;N&amp;amp;#8209;s/kg&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;N&amp;amp;#8209;s/kg&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;isp&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Specific impulse&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;si tsfc&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;g/(kN⋅s)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;g/(kN⋅s)&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 9.9999628621379242e-7,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;tsfc&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Thrust specific fuel consumption&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tsfc&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;lb/(lbf⋅h)&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb/(lbf⋅h)&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	scale    = 2.832545036049801e-5,&lt;br /&gt;
	invert   = -1,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;si tsfc&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Thrust specific fuel consumption&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cm/y&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cm/year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cm/yr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cm/year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in/y&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;in/year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in/yr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;in/year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;knot&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kn&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;knots&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;kn&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kph&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;km/h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mi/h&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;mph&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mm/s&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;mm&amp;quot;, &amp;quot;s&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;speed&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;in/s&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Metre per second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;C&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;degree Celsius&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;degrees Celsius&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;°C&amp;quot;,&lt;br /&gt;
	usesymbol= 1,&lt;br /&gt;
	utype    = &amp;quot;temperature&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	offset   = -273.15,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	istemperature= true,&lt;br /&gt;
	default  = &amp;quot;F&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Celsius&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;F&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;degree Fahrenheit&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;degrees Fahrenheit&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;°F&amp;quot;,&lt;br /&gt;
	usesymbol= 1,&lt;br /&gt;
	utype    = &amp;quot;temperature&amp;quot;,&lt;br /&gt;
	scale    = 0.55555555555555558,&lt;br /&gt;
	offset   = 32-273.15*(9/5),&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	istemperature= true,&lt;br /&gt;
	default  = &amp;quot;C&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Fahrenheit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;K&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;kelvin&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;K&amp;quot;,&lt;br /&gt;
	usesymbol= 1,&lt;br /&gt;
	utype    = &amp;quot;temperature&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	offset   = 0,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	istemperature= true,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;C F&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kelvin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;keVT&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kiloelectronvolt&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;keV&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;temperature&amp;quot;,&lt;br /&gt;
	scale    = 11.604505e6,&lt;br /&gt;
	offset   = 0,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	default  = &amp;quot;MK&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Electronvolt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;R&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;degree Rankine&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;degrees Rankine&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;°R&amp;quot;,&lt;br /&gt;
	usesymbol= 1,&lt;br /&gt;
	utype    = &amp;quot;temperature&amp;quot;,&lt;br /&gt;
	scale    = 0.55555555555555558,&lt;br /&gt;
	offset   = 0,&lt;br /&gt;
	iscomplex= true,&lt;br /&gt;
	istemperature= true,&lt;br /&gt;
	default  = &amp;quot;K F C&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Rankine scale&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Celsius&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;C&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;°C&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;C&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;°F&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;F&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;°R&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;R&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;C-change&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;degree Celsius change&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;degrees Celsius change&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;°C&amp;quot;,&lt;br /&gt;
	usesymbol= 1,&lt;br /&gt;
	utype    = &amp;quot;temperature change&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;F-change&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Celsius&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;F-change&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;degree Fahrenheit change&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;degrees Fahrenheit change&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;°F&amp;quot;,&lt;br /&gt;
	usesymbol= 1,&lt;br /&gt;
	utype    = &amp;quot;temperature change&amp;quot;,&lt;br /&gt;
	scale    = 0.55555555555555558,&lt;br /&gt;
	default  = &amp;quot;C-change&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Fahrenheit&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;K-change&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kelvin change&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;kelvins change&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;K&amp;quot;,&lt;br /&gt;
	usesymbol= 1,&lt;br /&gt;
	utype    = &amp;quot;temperature change&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;F-change&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kelvin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;°C-change&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;C-change&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;°F-change&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;F-change&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;century&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;century&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;centuries&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ha&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 3155760000,&lt;br /&gt;
	default  = &amp;quot;Gs&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;d&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;day&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;d&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 86400,&lt;br /&gt;
	default  = &amp;quot;ks&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;decade&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;decade&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;daa&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 315576000,&lt;br /&gt;
	default  = &amp;quot;Ms&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dog year&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;dog year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;dog yr&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 220903200,&lt;br /&gt;
	default  = &amp;quot;years&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;List of unusual units of measurement#Dog year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;fortnight&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;fortnight&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 1209600,&lt;br /&gt;
	default  = &amp;quot;week&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;h&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;hour&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;h&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 3600,&lt;br /&gt;
	default  = &amp;quot;ks&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;long billion year&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;billion years&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;billion years&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Ta&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 31557600000000000000,&lt;br /&gt;
	default  = &amp;quot;Es&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Annum&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;millennium&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millennium&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;millennia&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ka&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 31557600000,&lt;br /&gt;
	default  = &amp;quot;Gs&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;milliard year&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;milliard years&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;milliard years&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Ga&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 31557600000000000,&lt;br /&gt;
	default  = &amp;quot;Ps&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Annum&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;million year&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;million years&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;million years&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Ma&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 31557600000000,&lt;br /&gt;
	default  = &amp;quot;Ts&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Annum&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;min&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;minute&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 60,&lt;br /&gt;
	default  = &amp;quot;s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;month&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;month&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 2629800,&lt;br /&gt;
	default  = &amp;quot;Ms&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;months&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;month&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mo&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 2629800,&lt;br /&gt;
	default  = &amp;quot;year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;s&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;second&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;s&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;v &amp;lt; 7200 ! min ! h&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Second&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;short billion year&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;billion years&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;billion years&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Ga&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 31557600000000000,&lt;br /&gt;
	default  = &amp;quot;Ps&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Annum&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;short trillion year&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;trillion years&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;trillion years&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Ta&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 31557600000000000000,&lt;br /&gt;
	default  = &amp;quot;Es&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Annum&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;thousand million year&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;thousand million years&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;thousand million years&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Ga&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 31557600000000000,&lt;br /&gt;
	default  = &amp;quot;Ps&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Annum&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;wk&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;week&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 604800,&lt;br /&gt;
	default  = &amp;quot;Ms&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;year&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;a&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 31557600,&lt;br /&gt;
	default  = &amp;quot;Ms&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Annum&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;years&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;year&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;yr&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;time&amp;quot;,&lt;br /&gt;
	scale    = 31557600,&lt;br /&gt;
	default  = &amp;quot;Ms&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Annum&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;byr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;short billion year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;day&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;d&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;days&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;d&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;dog yr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;dog year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Gyr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;thousand million year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hour&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hours&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;h&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kMyr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;thousand million year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kmyr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;thousand million year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kyr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;millennium&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;long byr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;long billion year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;minute&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;min&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;minutes&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;min&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mth&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;month&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Myr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;million year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;myr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;million year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;sec&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;second&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;seconds&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;s&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tmyr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;thousand million year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tryr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;short trillion year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tyr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;millennium&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;week&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;wk&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;weeks&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;wk&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;yr&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;year&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kg.m&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram metre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram meter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg⋅m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;Nm lbft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram metre (torque)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kgf.m&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram force-metre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram force-meter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kgf⋅m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;Nm lbfft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram metre (torque)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kgm&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilogram metre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilogram meter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kg⋅m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;Nm lbfft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram metre (torque)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kpm&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;kilopond metre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;kilopond meter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kp⋅m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;Nm lbft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram metre (torque)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb-fft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound force-foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound force-feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;ft⋅lb&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 1.3558179483314004,&lt;br /&gt;
	default  = &amp;quot;Nm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-foot (torque)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb.ft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound force-foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound force-feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb⋅ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 1.3558179483314004,&lt;br /&gt;
	default  = &amp;quot;Nm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-foot (torque)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb.in&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound force-inch&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb⋅in&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 0.1129848290276167,&lt;br /&gt;
	default  = &amp;quot;mN.m&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-foot (torque)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbfft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound force-foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound force-feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lbf⋅ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 1.3558179483314004,&lt;br /&gt;
	default  = &amp;quot;Nm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-foot (torque)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;pound-foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;pound-feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;lb⋅ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 1.3558179483314004,&lt;br /&gt;
	default  = &amp;quot;Nm&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pound-foot (torque)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m.kg-f&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metre kilogram-force&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;meter kilogram-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;metre kilograms-force&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;meter kilograms-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m⋅kg&amp;lt;sub&amp;gt;f&amp;lt;/sub&amp;gt;&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;Nm lbfft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram metre (torque)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m.kgf&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;metre kilogram-force&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;meter kilogram-force&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;metre kilograms-force&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;meter kilograms-force&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m⋅kgf&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 9.80665,&lt;br /&gt;
	default  = &amp;quot;Nm lbfft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kilogram metre (torque)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mN.m&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;millinewton-metre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;millinewton-meter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;mN⋅m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	default  = &amp;quot;lb.in&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Newton-metre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Nm&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;newton-metre&amp;quot;,&lt;br /&gt;
	_name1_us= &amp;quot;newton-meter&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;N⋅m&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	alttype  = &amp;quot;energy&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;lbfft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Newton-metre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kN/m&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;kN&amp;quot;, &amp;quot;-m-stiff&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;lbf/in&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbf/in&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;lbf&amp;quot;, &amp;quot;-in-stiff&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;torque&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;kN/m&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb-f.ft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;lb-fft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbf.ft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;lbfft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lbf·ft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;lbfft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lb·ft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;lb.ft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mkg-f&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m.kg-f&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mkgf&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m.kgf&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;N.m&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Nm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;N·m&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;Nm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ton-mile&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;ton-mile&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;transportation&amp;quot;,&lt;br /&gt;
	scale    = 1.4599723182105602,&lt;br /&gt;
	default  = &amp;quot;tkm&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;tkm&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;tonne-kilometre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;tonne-kilometer&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;tkm&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;transportation&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;ton-mile&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-12USoz(mL)serve&amp;quot;] = {&lt;br /&gt;
	name1_us = &amp;quot;12&amp;amp;nbsp;U.S.&amp;amp;nbsp;fl&amp;amp;nbsp;oz (355&amp;amp;nbsp;mL) serving&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;12&amp;amp;nbsp;US&amp;amp;nbsp;fl&amp;amp;nbsp;oz (355&amp;amp;nbsp;mL) serving&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;12&amp;amp;nbsp;U.S.&amp;amp;nbsp;fl&amp;amp;nbsp;oz (355&amp;amp;nbsp;mL) serving&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.00035488235475000004,&lt;br /&gt;
	default  = &amp;quot;mL&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Beverage can#Standard sizes&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-12USoz(ml)serve&amp;quot;] = {&lt;br /&gt;
	name1_us = &amp;quot;12&amp;amp;nbsp;U.S.&amp;amp;nbsp;fl&amp;amp;nbsp;oz (355&amp;amp;nbsp;ml) serving&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;12&amp;amp;nbsp;US&amp;amp;nbsp;fl&amp;amp;nbsp;oz (355&amp;amp;nbsp;ml) serving&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;12&amp;amp;nbsp;U.S.&amp;amp;nbsp;fl&amp;amp;nbsp;oz (355&amp;amp;nbsp;ml) serving&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.00035488235475000004,&lt;br /&gt;
	default  = &amp;quot;ml&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Beverage can#Standard sizes&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;-12USozserve&amp;quot;] = {&lt;br /&gt;
	name1_us = &amp;quot;12&amp;amp;nbsp;U.S.&amp;amp;nbsp;fl&amp;amp;nbsp;oz serving&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;12&amp;amp;nbsp;US&amp;amp;nbsp;fl&amp;amp;nbsp;oz serving&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;12&amp;amp;nbsp;U.S.&amp;amp;nbsp;fl&amp;amp;nbsp;oz serving&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.00035488235475000004,&lt;br /&gt;
	default  = &amp;quot;mL&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Beverage can#Standard sizes&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acre-foot&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;acre-foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;acre-foot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;acre⋅ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 1233.48183754752,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acre-ft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;acre-foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;acre-feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;acre⋅ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 1233.48183754752,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;AUtbsp&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;Australian tablespoon&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;AU&amp;amp;nbsp;tbsp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.000020,&lt;br /&gt;
	default  = &amp;quot;ml&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Bcuft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;billion cubic foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;billion cubic feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;billion cu&amp;amp;nbsp;ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 28316846.592,&lt;br /&gt;
	default  = &amp;quot;Gl&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic foot&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;bdft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;board foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;board feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;bd&amp;amp;nbsp;ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.0023597372167,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;board feet&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;board feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;board foot&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.0023597372167,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;board foot&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;board foot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;board foot&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.0023597372167,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cc&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic centimetre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;cubic centimeter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cc&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.000001,&lt;br /&gt;
	default  = &amp;quot;cuin&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;CID&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic inches&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;in&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.000016387064,&lt;br /&gt;
	default  = &amp;quot;cc&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic inch#Engine displacement&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cord&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;cord&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 3.624556363776,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cord (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cufoot&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic foot&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.028316846592,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuft&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic foot&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic feet&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;ft&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.028316846592,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuin&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic inch&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic inches&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;in&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.000016387064,&lt;br /&gt;
	default  = &amp;quot;cm3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cumi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic mile&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;mi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 4168181825.440579584,&lt;br /&gt;
	default  = &amp;quot;km3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuyd&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic yard&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;cu&amp;amp;nbsp;yd&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.764554857984,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;firkin&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;firkin&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.04091481,&lt;br /&gt;
	default  = &amp;quot;L impgal USgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Firkin (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;foot3&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cufoot&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Goilbbl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;billion barrels&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;billion barrels&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Gbbl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 158987294.928,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! e6 ! e9 ! m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel (unit)#Oil barrel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gr water&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;grains water&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;grains water&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gr H&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt;O&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.00000006479891,&lt;br /&gt;
	default  = &amp;quot;cm3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Grain (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;grt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gross register ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;grt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 2.8316846592,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gross register tonnage&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impbbl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial barrel&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;imp&amp;amp;nbsp;bbl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.16365924,&lt;br /&gt;
	default  = &amp;quot;L impgal USgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impbsh&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial bushel&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;imp&amp;amp;nbsp;bsh&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.03636872,&lt;br /&gt;
	default  = &amp;quot;L impgal USdrygal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impbu&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial bushel&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;imp&amp;amp;nbsp;bu&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.03636872,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impgal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial gallon&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;imp&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.00454609,&lt;br /&gt;
	default  = &amp;quot;L USgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impgi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gill&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.0001420653125,&lt;br /&gt;
	default  = &amp;quot;ml USoz&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gill (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impkenning&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial kenning&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kenning&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.01818436,&lt;br /&gt;
	default  = &amp;quot;L USdrygal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kenning (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impoz&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial fluid ounce&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;imp&amp;amp;nbsp;fl&amp;amp;nbsp;oz&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.0000284130625,&lt;br /&gt;
	default  = &amp;quot;ml USoz&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;imppk&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial peck&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;pk&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.00909218,&lt;br /&gt;
	default  = &amp;quot;L USdrygal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Peck&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;imppt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial pint&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;imp&amp;amp;nbsp;pt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.00056826125,&lt;br /&gt;
	default  = &amp;quot;L&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impqt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;imperial quart&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;imp&amp;amp;nbsp;qt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.0011365225,&lt;br /&gt;
	default  = &amp;quot;ml USoz&amp;quot;,&lt;br /&gt;
	customary= 3,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kilderkin&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;kilderkin&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.08182962,&lt;br /&gt;
	default  = &amp;quot;L impgal USgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;koilbbl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;thousand barrels&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;thousand barrels&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;kbbl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 158.987294928,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! ! e3 ! m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel (unit)#Oil barrel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;litre&amp;quot;,&lt;br /&gt;
	_name1_us= &amp;quot;liter&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;L&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;impgal USgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Litre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;l&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;litre&amp;quot;,&lt;br /&gt;
	_name1_us= &amp;quot;liter&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;l&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	prefixes = 1,&lt;br /&gt;
	default  = &amp;quot;impgal USgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Litre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ll&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;litre&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;liter&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;l&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.001,&lt;br /&gt;
	default  = &amp;quot;impgal USgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m3&amp;quot;] = {&lt;br /&gt;
	_name1   = &amp;quot;cubic metre&amp;quot;,&lt;br /&gt;
	_name1_us= &amp;quot;cubic meter&amp;quot;,&lt;br /&gt;
	_symbol  = &amp;quot;m&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
	prefix_position= 7,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	prefixes = 3,&lt;br /&gt;
	default  = &amp;quot;cuft&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Cubic metre&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mbbl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;thousand barrels&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;thousand barrels&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mbbl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 158.987294928,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! e3 ! ! m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel (unit)#Oil barrel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MMoilbbl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;million barrels&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;million barrels&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;MMbbl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 158987.294928,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! e3 ! e6 ! m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel (unit)#Oil barrel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Moilbbl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;million barrels&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;million barrels&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Mbbl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 158987.294928,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! e3 ! e6 ! m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel (unit)#Oil barrel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MTON&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;measurement ton&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;MTON&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 1.13267386368,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MUSgal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;million US gallons&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;million U.S. gallons&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;million US gallons&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;million U.S. gallons&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;million US&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;million U.S.&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 3785.411784,&lt;br /&gt;
	default  = &amp;quot;Ml&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;US gallon&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;oilbbl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;barrel&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;bbl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.158987294928,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel (unit)#Oil barrel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;stere&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;stere&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 1,&lt;br /&gt;
	default  = &amp;quot;cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Toilbbl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;trillion barrels&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;trillion barrels&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;Tbbl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 158987294928,&lt;br /&gt;
	default  = &amp;quot;v * 1.58987294928 &amp;lt; 10 ! e9 ! e12 ! m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel (unit)#Oil barrel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USbbl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US barrel&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. barrel&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;bbl&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;bbl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.119240471196,&lt;br /&gt;
	default  = &amp;quot;L USgal impgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USbeerbbl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US beer barrel&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. beer barrel&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;bbl&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;bbl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.117347765304,&lt;br /&gt;
	default  = &amp;quot;L USgal impgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USbsh&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US bushel&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. bushel&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;bsh&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;bsh&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.03523907016688,&lt;br /&gt;
	default  = &amp;quot;L USdrygal impgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Bushel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USbu&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US bushel&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. bushel&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;bu&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;bu&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.03523907016688,&lt;br /&gt;
	default  = &amp;quot;L USdrygal impgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Bushel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USdrybbl&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US dry barrel&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. dry barrel&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;dry&amp;amp;nbsp;bbl&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;dry&amp;amp;nbsp;bbl&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.11562819898508,&lt;br /&gt;
	default  = &amp;quot;m3&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Barrel (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USdrygal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US dry gallon&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. dry gallon&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;dry&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;dry&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.00440488377086,&lt;br /&gt;
	default  = &amp;quot;L&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gallon&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USdrypt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US dry pint&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. dry pint&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;dry&amp;amp;nbsp;pt&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;dry&amp;amp;nbsp;pt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.0005506104713575,&lt;br /&gt;
	default  = &amp;quot;ml&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pint&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USdryqt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US dry quart&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. dry quart&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;dry&amp;amp;nbsp;qt&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;dry&amp;amp;nbsp;qt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.001101220942715,&lt;br /&gt;
	default  = &amp;quot;ml&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Quart&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USflgal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US gallon&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. gallon&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US fl gal&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;fl&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.003785411784,&lt;br /&gt;
	default  = &amp;quot;L impgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gallon&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USgal&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US gallon&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. gallon&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;gal&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.003785411784,&lt;br /&gt;
	default  = &amp;quot;L impgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USgi&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;gill&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;gi&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.0001182941183,&lt;br /&gt;
	default  = &amp;quot;ml impoz&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gill (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USkenning&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US kenning&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. kenning&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;kenning&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;kenning&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.01761953508344,&lt;br /&gt;
	default  = &amp;quot;L impgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Kenning (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USmin&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US minim&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. minim&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;min&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;min&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.000000061611519921875,&lt;br /&gt;
	default  = &amp;quot;ml&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Minim (unit)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USoz&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US fluid ounce&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. fluid ounce&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;fl&amp;amp;nbsp;oz&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;fl&amp;amp;nbsp;oz&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.0000295735295625,&lt;br /&gt;
	default  = &amp;quot;ml&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USpk&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US peck&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. peck&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;pk&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;pk&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.00880976754172,&lt;br /&gt;
	default  = &amp;quot;L impgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Peck&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USpt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US pint&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. pint&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;pt&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;pt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.000473176473,&lt;br /&gt;
	default  = &amp;quot;L imppt&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Pint&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USqt&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US quart&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. quart&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;qt&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;qt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.000946352946,&lt;br /&gt;
	default  = &amp;quot;ml&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Quart&amp;quot;,&lt;br /&gt;
	customary= 1,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USquart&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US quart&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. quart&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;qt&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;qt&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.000946352946,&lt;br /&gt;
	default  = &amp;quot;ml impoz&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Quart&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;UStbsp&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;US tablespoon&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;U.S. tablespoon&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US&amp;amp;nbsp;tbsp&amp;quot;,&lt;br /&gt;
	sym_us   = &amp;quot;U.S.&amp;amp;nbsp;tbsp&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 1.4786764781250001e-5,&lt;br /&gt;
	default  = &amp;quot;ml&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;winecase&amp;quot;] = {&lt;br /&gt;
	symbol   = &amp;quot;case&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
	scale    = 0.009,&lt;br /&gt;
	default  = &amp;quot;L&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Case (goods)&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;*U.S.drygal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USdrygal&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	customary= 2,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;*U.S.gal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USgal&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	customary= 2,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;+USdrygal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USdrygal&amp;quot;,&lt;br /&gt;
	customary= 1,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;+usfloz&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USoz&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Fluid ounce&amp;quot;,&lt;br /&gt;
	customary= 1,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;+USgal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USgal&amp;quot;,&lt;br /&gt;
	customary= 1,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;+USoz&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USoz&amp;quot;,&lt;br /&gt;
	customary= 1,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;@impgal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;impgal&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Gallon&amp;quot;,&lt;br /&gt;
	customary= 3,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acre feet&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;acre-ft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acre foot&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;acre-foot&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acre ft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;acre-ft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acre-feet&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;acre-ft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acre.foot&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;acre-foot&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acre.ft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;acre-ft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;acre·ft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;acre-ft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;bushels&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USbsh&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cid&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;CID&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ft3&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gallon&amp;quot;] = {&lt;br /&gt;
	shouldbe = &amp;quot;Use %{USgal%} for US gallons or %{impgal%} for imperial gallons (not %{gallon%})&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;gallons&amp;quot;] = {&lt;br /&gt;
	shouldbe = &amp;quot;Use %{USgal%} for US gallons or %{impgal%} for imperial gallons (not %{gallons%})&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Gcuft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e9cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;impfloz&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;impoz&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Impgal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;impgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;in3&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cuin&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;in&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;hm³&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;hm3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcuft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e3cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kcum&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e3m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;km³&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;km3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;liter&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;L&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;liters&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;L&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;litre&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;L&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;litres&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;L&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mcuft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e6cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mcum&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e6m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Mft3&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e6cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mi3&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cumi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m³&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;m3&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Pcuft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e15cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;pt&amp;quot;] = {&lt;br /&gt;
	shouldbe = &amp;quot;Use %{USpt%} for US pints or %{imppt%} for imperial pints (not %{pt%})&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;qt&amp;quot;] = {&lt;br /&gt;
	shouldbe = &amp;quot;Use %{USqt%} for US quarts or %{impqt%} for imperial quarts (not %{qt%})&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Tcuft&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e12cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;Tft3&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;e12cuft&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.bbl&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USbbl&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	default  = &amp;quot;L U.S.gal impgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.beerbbl&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USbeerbbl&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	default  = &amp;quot;L U.S.gal impgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.bsh&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USbsh&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	default  = &amp;quot;L U.S.drygal impgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.bu&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USbu&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	default  = &amp;quot;L U.S.drygal impgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.drybbl&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USdrybbl&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.drygal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USdrygal&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.drypt&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USdrypt&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.dryqt&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USdryqt&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.flgal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USflgal&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.floz&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USoz&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.gal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USgal&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	link     = &amp;quot;U.S. gallon&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;u.s.gal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USgal&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	link     = &amp;quot;U.S. gallon&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.gi&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USgi&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.kenning&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USkenning&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.oz&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USoz&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.pk&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USpk&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.pt&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USpt&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.qt&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USqt&amp;quot;,&lt;br /&gt;
	sp_us    = true,&lt;br /&gt;
	default  = &amp;quot;L impqt&amp;quot;,&lt;br /&gt;
	customary= 2,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usbbl&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USbbl&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usbeerbbl&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USbeerbbl&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usbsh&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USbsh&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usbu&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USbu&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usdrybbl&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USdrybbl&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usdrygal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USdrygal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usdrypt&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USdrypt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usdryqt&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USdryqt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USfloz&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USoz&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usfloz&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USoz&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USGAL&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usgal&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USgal&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usgi&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USgi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;uskenning&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USkenning&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usoz&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USoz&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;uspk&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USpk&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;uspt&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USpt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;usqt&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;USqt&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;yd3&amp;quot;] = {&lt;br /&gt;
	target   = &amp;quot;cuyd&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuft/sqmi&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;cuft&amp;quot;, &amp;quot;sqmi&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;volume per unit area&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;m3/km2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m3/ha&amp;quot;] = {&lt;br /&gt;
	name1    = &amp;quot;cubic metre per hectare&amp;quot;,&lt;br /&gt;
	name1_us = &amp;quot;cubic meter per hectare&amp;quot;,&lt;br /&gt;
	name2    = &amp;quot;cubic metres per hectare&amp;quot;,&lt;br /&gt;
	name2_us = &amp;quot;cubic meters per hectare&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;m&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;/ha&amp;quot;,&lt;br /&gt;
	utype    = &amp;quot;volume per unit area&amp;quot;,&lt;br /&gt;
	scale    = 0.0001,&lt;br /&gt;
	default  = &amp;quot;USbu/acre&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Hectare&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m3/km2&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;m3&amp;quot;, &amp;quot;km2&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;volume per unit area&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;cuft/sqmi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;U.S.gal/acre&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;U.S.gal&amp;quot;, &amp;quot;acre&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;volume per unit area&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;m3/km2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USbu/acre&amp;quot;] = {&lt;br /&gt;
	name2    = &amp;quot;US bushels per acre&amp;quot;,&lt;br /&gt;
	symbol   = &amp;quot;US bushel per acre&amp;quot;,&lt;br /&gt;
	usename  = 1,&lt;br /&gt;
	utype    = &amp;quot;volume per unit area&amp;quot;,&lt;br /&gt;
	scale    = 8.7077638761350888e-6,&lt;br /&gt;
	default  = &amp;quot;m3/ha&amp;quot;,&lt;br /&gt;
	link     = &amp;quot;Bushel&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;USgal/acre&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;USgal&amp;quot;, &amp;quot;acre&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;volume per unit area&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;m3/km2&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;cuyd/mi&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;cuyd&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;volume per unit length&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;m3/km&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;m3/km&amp;quot;] = {&lt;br /&gt;
	per      = { &amp;quot;m3&amp;quot;, &amp;quot;km&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;volume per unit length&amp;quot;,&lt;br /&gt;
	default  = &amp;quot;cuyd/mi&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mich&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;ch&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	multiple = { 80 },&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;michlk&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;chlk&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	multiple = { 80 },&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;michainlk&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;chainlk&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	multiple = { 80 },&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;miyd&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;yd&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	multiple = { 1760 },&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;miydftin&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;in&amp;quot;, &amp;quot;ft&amp;quot;, &amp;quot;yd&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	multiple = { 12, 3, 1760 },&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mift&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;ft&amp;quot;, &amp;quot;mi&amp;quot; },&lt;br /&gt;
	multiple = { 5280 },&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ydftin&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;in&amp;quot;, &amp;quot;ft&amp;quot;, &amp;quot;yd&amp;quot; },&lt;br /&gt;
	multiple = { 12, 3 },&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ydft&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;ft&amp;quot;, &amp;quot;yd&amp;quot; },&lt;br /&gt;
	multiple = { 3 },&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ftin&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;in&amp;quot;, &amp;quot;ft&amp;quot; },&lt;br /&gt;
	multiple = { 12 },&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;footin&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;in&amp;quot;, &amp;quot;foot&amp;quot; },&lt;br /&gt;
	multiple = { 12 },&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;handin&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;in&amp;quot;, &amp;quot;hand&amp;quot; },&lt;br /&gt;
	multiple = { 4 },&lt;br /&gt;
	utype    = &amp;quot;length&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;lboz&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;oz&amp;quot;, &amp;quot;lb&amp;quot; },&lt;br /&gt;
	multiple = { 16 },&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;stlb&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;lb&amp;quot;, &amp;quot;st&amp;quot; },&lt;br /&gt;
	multiple = { 14 },&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;stlboz&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;oz&amp;quot;, &amp;quot;lb&amp;quot;, &amp;quot;st&amp;quot; },&lt;br /&gt;
	multiple = { 16, 14 },&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;st and lb&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;lb&amp;quot;, &amp;quot;st&amp;quot; },&lt;br /&gt;
	multiple = { 14 },&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GN LTf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;GN&amp;quot;, &amp;quot;-LTf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GN LTf STf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;GN&amp;quot;, &amp;quot;-LTf&amp;quot;, &amp;quot;-STf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GN STf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;GN&amp;quot;, &amp;quot;-STf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;GN STf LTf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;GN&amp;quot;, &amp;quot;-STf&amp;quot;, &amp;quot;-LTf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kN LTf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;kN&amp;quot;, &amp;quot;-LTf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kN LTf STf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;kN&amp;quot;, &amp;quot;-LTf&amp;quot;, &amp;quot;-STf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kN STf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;kN&amp;quot;, &amp;quot;-STf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kN STf LTf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;kN&amp;quot;, &amp;quot;-STf&amp;quot;, &amp;quot;-LTf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;LTf STf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;-LTf&amp;quot;, &amp;quot;-STf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MN LTf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;MN&amp;quot;, &amp;quot;-LTf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MN LTf STf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;MN&amp;quot;, &amp;quot;-LTf&amp;quot;, &amp;quot;-STf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MN STf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;MN&amp;quot;, &amp;quot;-STf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;MN STf LTf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;MN&amp;quot;, &amp;quot;-STf&amp;quot;, &amp;quot;-LTf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;STf LTf&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;-STf&amp;quot;, &amp;quot;-LTf&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;force&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L/100 km mpgimp&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;L/100 km&amp;quot;, &amp;quot;mpgimp&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;l/100 km mpgimp&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;l/100 km&amp;quot;, &amp;quot;mpgimp&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L/100 km mpgUS&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;L/100 km&amp;quot;, &amp;quot;mpgus&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;L/100 km mpgus&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;L/100 km&amp;quot;, &amp;quot;mpgus&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;l/100 km mpgus&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;l/100 km&amp;quot;, &amp;quot;mpgus&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;mpgimp L/100 km&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;mpgimp&amp;quot;, &amp;quot;L/100 km&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;fuel efficiency&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;LT ST t&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;lt&amp;quot;, &amp;quot;-ST&amp;quot;, &amp;quot;t&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;LT t ST&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;lt&amp;quot;, &amp;quot;t&amp;quot;, &amp;quot;-ST&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ST LT t&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;-ST&amp;quot;, &amp;quot;lt&amp;quot;, &amp;quot;t&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ST t LT&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;-ST&amp;quot;, &amp;quot;t&amp;quot;, &amp;quot;lt&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;t LT ST&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;t&amp;quot;, &amp;quot;lt&amp;quot;, &amp;quot;-ST&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;ton&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;LT&amp;quot;, &amp;quot;ST&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;mass&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kPa kg/cm2&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;kPa&amp;quot;, &amp;quot;kgf/cm2&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;kPa lb/in2&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;kPa&amp;quot;, &amp;quot;-lb/in2&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;pressure&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
    [&amp;quot;floz&amp;quot;] = {&lt;br /&gt;
	combination= { &amp;quot;impoz&amp;quot;, &amp;quot;USoz&amp;quot; },&lt;br /&gt;
	utype    = &amp;quot;volume&amp;quot;,&lt;br /&gt;
    },&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
-- Do not change the data in this table because it is created by running --&lt;br /&gt;
-- a script that reads the wikitext from a wiki page (see note above).   --&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
local default_exceptions = {&lt;br /&gt;
	-- Prefixed units with a default different from that of the base unit.&lt;br /&gt;
	-- Each key item is a prefixed symbol (unitcode for engineering notation).&lt;br /&gt;
	[&amp;quot;cm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;sqin&amp;quot;,&lt;br /&gt;
	[&amp;quot;dm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;sqin&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3acre&amp;quot;] = &amp;quot;km2&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3m2&amp;quot;] = &amp;quot;e6sqft&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6acre&amp;quot;] = &amp;quot;km2&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6ha&amp;quot;] = &amp;quot;e6acre&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6km2&amp;quot;] = &amp;quot;e6sqmi&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6m2&amp;quot;] = &amp;quot;e6sqft&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6sqft&amp;quot;] = &amp;quot;v * 9.290304 &amp;lt; 100 ! e3 ! e6 ! m2&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6sqmi&amp;quot;] = &amp;quot;e6km2&amp;quot;,&lt;br /&gt;
	[&amp;quot;hm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;acre&amp;quot;,&lt;br /&gt;
	[&amp;quot;km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;sqmi&amp;quot;,&lt;br /&gt;
	[&amp;quot;mm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;sqin&amp;quot;,&lt;br /&gt;
	[&amp;quot;aJ&amp;quot;] = &amp;quot;eV&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3BTU&amp;quot;] = &amp;quot;MJ&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6BTU&amp;quot;] = &amp;quot;GJ&amp;quot;,&lt;br /&gt;
	[&amp;quot;EJ&amp;quot;] = &amp;quot;kWh&amp;quot;,&lt;br /&gt;
	[&amp;quot;fJ&amp;quot;] = &amp;quot;keV&amp;quot;,&lt;br /&gt;
	[&amp;quot;GJ&amp;quot;] = &amp;quot;kWh&amp;quot;,&lt;br /&gt;
	[&amp;quot;MJ&amp;quot;] = &amp;quot;kWh&amp;quot;,&lt;br /&gt;
	[&amp;quot;PJ&amp;quot;] = &amp;quot;kWh&amp;quot;,&lt;br /&gt;
	[&amp;quot;pJ&amp;quot;] = &amp;quot;MeV&amp;quot;,&lt;br /&gt;
	[&amp;quot;TJ&amp;quot;] = &amp;quot;kWh&amp;quot;,&lt;br /&gt;
	[&amp;quot;YJ&amp;quot;] = &amp;quot;kWh&amp;quot;,&lt;br /&gt;
	[&amp;quot;yJ&amp;quot;] = &amp;quot;μeV&amp;quot;,&lt;br /&gt;
	[&amp;quot;ZJ&amp;quot;] = &amp;quot;kWh&amp;quot;,&lt;br /&gt;
	[&amp;quot;zJ&amp;quot;] = &amp;quot;meV&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12cuft/a&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! e9 ! e12 ! m3/a&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12cuft/d&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! e9 ! e12 ! m3/d&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12m3/a&amp;quot;] = &amp;quot;Tcuft/a&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12m3/d&amp;quot;] = &amp;quot;Tcuft/d&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3cuft/a&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! ! e3 ! m3/a&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3cuft/d&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! ! e3 ! m3/d&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3cuft/s&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! ! e3 ! m3/s&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3m3/a&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! k ! M ! cuft/a&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3m3/d&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! k ! M ! cuft/d&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3m3/s&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! k ! M ! cuft/s&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3USgal/a&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! ! e3 ! m3/a&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6cuft/a&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! e3 ! e6 ! m3/a&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6cuft/d&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! e3 ! e6 ! m3/d&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6cuft/s&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! e3 ! e6 ! m3/s&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6m3/a&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! M ! G ! cuft/a&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6m3/d&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! M ! G ! cuft/d&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6m3/s&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! e6 ! e9 ! cuft/s&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6USgal/a&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! e3 ! e6 ! m3/a&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9cuft/a&amp;quot;] = &amp;quot;m3/a&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9cuft/d&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! e6 ! e9 ! m3/d&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9m3/a&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! G ! T ! cuft/a&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9m3/d&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! G ! T ! cuft/d&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9m3/s&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! e9 ! e12 ! cuft/s&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9USgal/a&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! e6 ! e9 ! m3/a&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9USgal/s&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! e6 ! e9 ! m3/s&amp;quot;,&lt;br /&gt;
	[&amp;quot;nN&amp;quot;] = &amp;quot;gr-f&amp;quot;,&lt;br /&gt;
	[&amp;quot;μN&amp;quot;] = &amp;quot;gr-f&amp;quot;,&lt;br /&gt;
	[&amp;quot;mN&amp;quot;] = &amp;quot;oz-f&amp;quot;,&lt;br /&gt;
	[&amp;quot;am&amp;quot;] = &amp;quot;in&amp;quot;,&lt;br /&gt;
	[&amp;quot;cm&amp;quot;] = &amp;quot;in&amp;quot;,&lt;br /&gt;
	[&amp;quot;dam&amp;quot;] = &amp;quot;ft&amp;quot;,&lt;br /&gt;
	[&amp;quot;dm&amp;quot;] = &amp;quot;in&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12km&amp;quot;] = &amp;quot;e12mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12mi&amp;quot;] = &amp;quot;e12km&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3AU&amp;quot;] = &amp;quot;ly&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3km&amp;quot;] = &amp;quot;e3mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3mi&amp;quot;] = &amp;quot;e3km&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6km&amp;quot;] = &amp;quot;e6mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6mi&amp;quot;] = &amp;quot;e6km&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9km&amp;quot;] = &amp;quot;AU&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9mi&amp;quot;] = &amp;quot;e9km&amp;quot;,&lt;br /&gt;
	[&amp;quot;Em&amp;quot;] = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;fm&amp;quot;] = &amp;quot;in&amp;quot;,&lt;br /&gt;
	[&amp;quot;Gm&amp;quot;] = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;hm&amp;quot;] = &amp;quot;ft&amp;quot;,&lt;br /&gt;
	[&amp;quot;km&amp;quot;] = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;mm&amp;quot;] = &amp;quot;in&amp;quot;,&lt;br /&gt;
	[&amp;quot;Mm&amp;quot;] = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;nm&amp;quot;] = &amp;quot;in&amp;quot;,&lt;br /&gt;
	[&amp;quot;Pm&amp;quot;] = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;pm&amp;quot;] = &amp;quot;in&amp;quot;,&lt;br /&gt;
	[&amp;quot;Tm&amp;quot;] = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;Ym&amp;quot;] = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;ym&amp;quot;] = &amp;quot;in&amp;quot;,&lt;br /&gt;
	[&amp;quot;Zm&amp;quot;] = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;zm&amp;quot;] = &amp;quot;in&amp;quot;,&lt;br /&gt;
	[&amp;quot;μm&amp;quot;] = &amp;quot;in&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12lb&amp;quot;] = &amp;quot;v * 4.5359237 &amp;lt; 10 ! Mt ! Gt&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3lb&amp;quot;] = &amp;quot;v * 4.5359237 &amp;lt; 10 ! kg ! t&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3ozt&amp;quot;] = &amp;quot;v * 0.311034768 &amp;lt; 10 ! kg ! t&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3t&amp;quot;] = &amp;quot;LT ST&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6carat&amp;quot;] = &amp;quot;t&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6lb&amp;quot;] = &amp;quot;v * 4.5359237 &amp;lt; 10 ! t ! kilotonne&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6ozt&amp;quot;] = &amp;quot;lb kg&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6ST&amp;quot;] = &amp;quot;Mt&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6t&amp;quot;] = &amp;quot;LT ST&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9lb&amp;quot;] = &amp;quot;v * 4.5359237 &amp;lt; 10 ! kilotonne ! Mt&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9t&amp;quot;] = &amp;quot;LT ST&amp;quot;,&lt;br /&gt;
	[&amp;quot;Gg&amp;quot;] = &amp;quot;lb&amp;quot;,&lt;br /&gt;
	[&amp;quot;kg&amp;quot;] = &amp;quot;lb&amp;quot;,&lt;br /&gt;
	[&amp;quot;mg&amp;quot;] = &amp;quot;gr&amp;quot;,&lt;br /&gt;
	[&amp;quot;Mg&amp;quot;] = &amp;quot;LT ST&amp;quot;,&lt;br /&gt;
	[&amp;quot;ng&amp;quot;] = &amp;quot;gr&amp;quot;,&lt;br /&gt;
	[&amp;quot;μg&amp;quot;] = &amp;quot;gr&amp;quot;,&lt;br /&gt;
	[&amp;quot;mBq&amp;quot;] = &amp;quot;fCi&amp;quot;,&lt;br /&gt;
	[&amp;quot;kBq&amp;quot;] = &amp;quot;nCi&amp;quot;,&lt;br /&gt;
	[&amp;quot;MBq&amp;quot;] = &amp;quot;μCi&amp;quot;,&lt;br /&gt;
	[&amp;quot;GBq&amp;quot;] = &amp;quot;mCi&amp;quot;,&lt;br /&gt;
	[&amp;quot;TBq&amp;quot;] = &amp;quot;Ci&amp;quot;,&lt;br /&gt;
	[&amp;quot;PBq&amp;quot;] = &amp;quot;kCi&amp;quot;,&lt;br /&gt;
	[&amp;quot;EBq&amp;quot;] = &amp;quot;kCi&amp;quot;,&lt;br /&gt;
	[&amp;quot;fCi&amp;quot;] = &amp;quot;mBq&amp;quot;,&lt;br /&gt;
	[&amp;quot;pCi&amp;quot;] = &amp;quot;Bq&amp;quot;,&lt;br /&gt;
	[&amp;quot;nCi&amp;quot;] = &amp;quot;Bq&amp;quot;,&lt;br /&gt;
	[&amp;quot;μCi&amp;quot;] = &amp;quot;kBq&amp;quot;,&lt;br /&gt;
	[&amp;quot;mCi&amp;quot;] = &amp;quot;MBq&amp;quot;,&lt;br /&gt;
	[&amp;quot;kCi&amp;quot;] = &amp;quot;TBq&amp;quot;,&lt;br /&gt;
	[&amp;quot;MCi&amp;quot;] = &amp;quot;PBq&amp;quot;,&lt;br /&gt;
	[&amp;quot;ns&amp;quot;] = &amp;quot;μs&amp;quot;,&lt;br /&gt;
	[&amp;quot;μs&amp;quot;] = &amp;quot;ms&amp;quot;,&lt;br /&gt;
	[&amp;quot;ms&amp;quot;] = &amp;quot;s&amp;quot;,&lt;br /&gt;
	[&amp;quot;ks&amp;quot;] = &amp;quot;h&amp;quot;,&lt;br /&gt;
	[&amp;quot;Ms&amp;quot;] = &amp;quot;week&amp;quot;,&lt;br /&gt;
	[&amp;quot;Gs&amp;quot;] = &amp;quot;decade&amp;quot;,&lt;br /&gt;
	[&amp;quot;Ts&amp;quot;] = &amp;quot;millennium&amp;quot;,&lt;br /&gt;
	[&amp;quot;Ps&amp;quot;] = &amp;quot;million year&amp;quot;,&lt;br /&gt;
	[&amp;quot;Es&amp;quot;] = &amp;quot;thousand million year&amp;quot;,&lt;br /&gt;
	[&amp;quot;MK&amp;quot;] = &amp;quot;keVT&amp;quot;,&lt;br /&gt;
	[&amp;quot;cL&amp;quot;] = &amp;quot;impoz usoz&amp;quot;,&lt;br /&gt;
	[&amp;quot;cl&amp;quot;] = &amp;quot;impoz usoz&amp;quot;,&lt;br /&gt;
	[&amp;quot;cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;cuin&amp;quot;,&lt;br /&gt;
	[&amp;quot;dL&amp;quot;] = &amp;quot;impoz usoz&amp;quot;,&lt;br /&gt;
	[&amp;quot;dl&amp;quot;] = &amp;quot;impoz usoz&amp;quot;,&lt;br /&gt;
	[&amp;quot;mm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;cuin&amp;quot;,&lt;br /&gt;
	[&amp;quot;dm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;cuin&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12cuft&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! e9 ! e12 ! m3&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12impgal&amp;quot;] = &amp;quot;v * 4.54609 &amp;lt; 1000 ! T ! P ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12m3&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! T ! P ! cuft&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12U.S.gal&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! T ! P ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;e12USgal&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! T ! P ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;e15cuft&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! e12 ! e15 ! m3&amp;quot;,&lt;br /&gt;
	[&amp;quot;e15m3&amp;quot;] = &amp;quot;Pcuft&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3bdft&amp;quot;] = &amp;quot;v * 0.23597372167 &amp;lt; 100 ! e3 ! e6 ! m3&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3cuft&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! ! e3 ! m3&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3impgal&amp;quot;] = &amp;quot;v * 4.54609 &amp;lt; 1000 ! k ! M ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3m3&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! k ! M ! cuft&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3U.S.gal&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! k ! M ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;e3USgal&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! k ! M ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6bdft&amp;quot;] = &amp;quot;v * 0.23597372167 &amp;lt; 100 ! e3 ! e6 ! m3&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6cuft&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! e3 ! e6 ! m3&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6cuyd&amp;quot;] = &amp;quot;v * 7.64554857984 &amp;lt; 10 ! e3 ! e6 ! m3&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6impgal&amp;quot;] = &amp;quot;v * 4.54609 &amp;lt; 1000 ! M ! G ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6L&amp;quot;] = &amp;quot;USgal&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6m3&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! M ! G ! cuft&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6U.S.gal&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! M ! G ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;e6USgal&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! M ! G ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9bdft&amp;quot;] = &amp;quot;v * 0.23597372167 &amp;lt; 100 ! e6 ! e9 ! m3&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9cuft&amp;quot;] = &amp;quot;v * 2.8316846592 &amp;lt; 100 ! e6 ! e9 ! m3&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9impgal&amp;quot;] = &amp;quot;v * 4.54609 &amp;lt; 1000 ! G ! T ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9m3&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! G ! T ! cuft&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9U.S.gal&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! G ! T ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;e9USgal&amp;quot;] = &amp;quot;v * 3.785411784 &amp;lt; 1000 ! G ! T ! l&amp;quot;,&lt;br /&gt;
	[&amp;quot;GL&amp;quot;] = &amp;quot;cuft&amp;quot;,&lt;br /&gt;
	[&amp;quot;Gl&amp;quot;] = &amp;quot;cuft&amp;quot;,&lt;br /&gt;
	[&amp;quot;kL&amp;quot;] = &amp;quot;cuft&amp;quot;,&lt;br /&gt;
	[&amp;quot;kl&amp;quot;] = &amp;quot;cuft&amp;quot;,&lt;br /&gt;
	[&amp;quot;km&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;cumi&amp;quot;,&lt;br /&gt;
	[&amp;quot;mL&amp;quot;] = &amp;quot;impoz usoz&amp;quot;,&lt;br /&gt;
	[&amp;quot;ml&amp;quot;] = &amp;quot;impoz usoz&amp;quot;,&lt;br /&gt;
	[&amp;quot;Ml&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! e3 ! e6 ! cuft&amp;quot;,&lt;br /&gt;
	[&amp;quot;ML&amp;quot;] = &amp;quot;v &amp;lt; 28.316846592 ! e3 ! e6 ! cuft&amp;quot;,&lt;br /&gt;
	[&amp;quot;TL&amp;quot;] = &amp;quot;cumi&amp;quot;,&lt;br /&gt;
	[&amp;quot;Tl&amp;quot;] = &amp;quot;cumi&amp;quot;,&lt;br /&gt;
	[&amp;quot;μL&amp;quot;] = &amp;quot;cuin&amp;quot;,&lt;br /&gt;
	[&amp;quot;μl&amp;quot;] = &amp;quot;cuin&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
-- Do not change the data in this table because it is created by running --&lt;br /&gt;
-- a script that reads the wikitext from a wiki page (see note above).   --&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
local link_exceptions = {&lt;br /&gt;
	-- Prefixed units with a linked article different from that of the base unit.&lt;br /&gt;
	-- Each key item is a prefixed symbol (not unitcode).&lt;br /&gt;
	[&amp;quot;mm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;Square millimetre&amp;quot;,&lt;br /&gt;
	[&amp;quot;cm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;Square centimetre&amp;quot;,&lt;br /&gt;
	[&amp;quot;dm&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;Square decimetre&amp;quot;,&lt;br /&gt;
	[&amp;quot;km&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;Square kilometre&amp;quot;,&lt;br /&gt;
	[&amp;quot;kJ&amp;quot;] = &amp;quot;Kilojoule&amp;quot;,&lt;br /&gt;
	[&amp;quot;MJ&amp;quot;] = &amp;quot;Megajoule&amp;quot;,&lt;br /&gt;
	[&amp;quot;GJ&amp;quot;] = &amp;quot;Gigajoule&amp;quot;,&lt;br /&gt;
	[&amp;quot;TJ&amp;quot;] = &amp;quot;Terajoule&amp;quot;,&lt;br /&gt;
	[&amp;quot;fm&amp;quot;] = &amp;quot;Femtometre&amp;quot;,&lt;br /&gt;
	[&amp;quot;pm&amp;quot;] = &amp;quot;Picometre&amp;quot;,&lt;br /&gt;
	[&amp;quot;nm&amp;quot;] = &amp;quot;Nanometre&amp;quot;,&lt;br /&gt;
	[&amp;quot;μm&amp;quot;] = &amp;quot;Micrometre&amp;quot;,&lt;br /&gt;
	[&amp;quot;mm&amp;quot;] = &amp;quot;Millimetre&amp;quot;,&lt;br /&gt;
	[&amp;quot;cm&amp;quot;] = &amp;quot;Centimetre&amp;quot;,&lt;br /&gt;
	[&amp;quot;dm&amp;quot;] = &amp;quot;Decimetre&amp;quot;,&lt;br /&gt;
	[&amp;quot;dam&amp;quot;] = &amp;quot;Decametre&amp;quot;,&lt;br /&gt;
	[&amp;quot;hm&amp;quot;] = &amp;quot;Hectometre&amp;quot;,&lt;br /&gt;
	[&amp;quot;km&amp;quot;] = &amp;quot;Kilometre&amp;quot;,&lt;br /&gt;
	[&amp;quot;Mm&amp;quot;] = &amp;quot;Megametre&amp;quot;,&lt;br /&gt;
	[&amp;quot;Gm&amp;quot;] = &amp;quot;Gigametre&amp;quot;,&lt;br /&gt;
	[&amp;quot;Tm&amp;quot;] = &amp;quot;Terametre&amp;quot;,&lt;br /&gt;
	[&amp;quot;Pm&amp;quot;] = &amp;quot;Petametre&amp;quot;,&lt;br /&gt;
	[&amp;quot;Em&amp;quot;] = &amp;quot;Exametre&amp;quot;,&lt;br /&gt;
	[&amp;quot;Zm&amp;quot;] = &amp;quot;Zettametre&amp;quot;,&lt;br /&gt;
	[&amp;quot;Ym&amp;quot;] = &amp;quot;Yottametre&amp;quot;,&lt;br /&gt;
	[&amp;quot;μg&amp;quot;] = &amp;quot;Microgram&amp;quot;,&lt;br /&gt;
	[&amp;quot;mg&amp;quot;] = &amp;quot;Milligram&amp;quot;,&lt;br /&gt;
	[&amp;quot;kg&amp;quot;] = &amp;quot;Kilogram&amp;quot;,&lt;br /&gt;
	[&amp;quot;Mg&amp;quot;] = &amp;quot;Tonne&amp;quot;,&lt;br /&gt;
	[&amp;quot;yW&amp;quot;] = &amp;quot;Yoctowatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;zW&amp;quot;] = &amp;quot;Zeptowatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;aW&amp;quot;] = &amp;quot;Attowatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;fW&amp;quot;] = &amp;quot;Femtowatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;pW&amp;quot;] = &amp;quot;Picowatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;nW&amp;quot;] = &amp;quot;Nanowatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;μW&amp;quot;] = &amp;quot;Microwatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;mW&amp;quot;] = &amp;quot;Milliwatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;kW&amp;quot;] = &amp;quot;Kilowatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;MW&amp;quot;] = &amp;quot;Megawatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;GW&amp;quot;] = &amp;quot;Gigawatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;TW&amp;quot;] = &amp;quot;Terawatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;PW&amp;quot;] = &amp;quot;Petawatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;EW&amp;quot;] = &amp;quot;Exawatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;ZW&amp;quot;] = &amp;quot;Zettawatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;YW&amp;quot;] = &amp;quot;Yottawatt&amp;quot;,&lt;br /&gt;
	[&amp;quot;as&amp;quot;] = &amp;quot;Attosecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;fs&amp;quot;] = &amp;quot;Femtosecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;ps&amp;quot;] = &amp;quot;Picosecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;ns&amp;quot;] = &amp;quot;Nanosecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;μs&amp;quot;] = &amp;quot;Microsecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;ms&amp;quot;] = &amp;quot;Millisecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;ks&amp;quot;] = &amp;quot;Kilosecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;Ms&amp;quot;] = &amp;quot;Megasecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;Gs&amp;quot;] = &amp;quot;Gigasecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;Ts&amp;quot;] = &amp;quot;Terasecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;Ps&amp;quot;] = &amp;quot;Petasecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;Es&amp;quot;] = &amp;quot;Exasecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;Zs&amp;quot;] = &amp;quot;Zettasecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;Ys&amp;quot;] = &amp;quot;Yottasecond&amp;quot;,&lt;br /&gt;
	[&amp;quot;mm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;Cubic millimetre&amp;quot;,&lt;br /&gt;
	[&amp;quot;cm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;Cubic centimetre&amp;quot;,&lt;br /&gt;
	[&amp;quot;dm&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;Cubic decimetre&amp;quot;,&lt;br /&gt;
	[&amp;quot;dam&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;Cubic decametre&amp;quot;,&lt;br /&gt;
	[&amp;quot;km&amp;lt;sup&amp;gt;3&amp;lt;/sup&amp;gt;&amp;quot;] = &amp;quot;Cubic kilometre&amp;quot;,&lt;br /&gt;
	[&amp;quot;μL&amp;quot;] = &amp;quot;Microlitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;μl&amp;quot;] = &amp;quot;Microlitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;mL&amp;quot;] = &amp;quot;Millilitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;ml&amp;quot;] = &amp;quot;Millilitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;cL&amp;quot;] = &amp;quot;Centilitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;cl&amp;quot;] = &amp;quot;Centilitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;dL&amp;quot;] = &amp;quot;Decilitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;dl&amp;quot;] = &amp;quot;Decilitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;daL&amp;quot;] = &amp;quot;Decalitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;dal&amp;quot;] = &amp;quot;Decalitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;hL&amp;quot;] = &amp;quot;Hectolitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;hl&amp;quot;] = &amp;quot;Hectolitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;kL&amp;quot;] = &amp;quot;Kilolitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;kl&amp;quot;] = &amp;quot;Kilolitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;ML&amp;quot;] = &amp;quot;Megalitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;Ml&amp;quot;] = &amp;quot;Megalitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;GL&amp;quot;] = &amp;quot;Gigalitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;Gl&amp;quot;] = &amp;quot;Gigalitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;TL&amp;quot;] = &amp;quot;Teralitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;Tl&amp;quot;] = &amp;quot;Teralitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;PL&amp;quot;] = &amp;quot;Petalitre&amp;quot;,&lt;br /&gt;
	[&amp;quot;Pl&amp;quot;] = &amp;quot;Petalitre&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
-- Do not change the data in this table because it is created by running --&lt;br /&gt;
-- a script that reads the wikitext from a wiki page (see note above).   --&lt;br /&gt;
---------------------------------------------------------------------------&lt;br /&gt;
local per_unit_fixups = {&lt;br /&gt;
	-- Automatically created per units of form &amp;quot;x/y&amp;quot; may have their unit type&lt;br /&gt;
	-- changed, for example, &amp;quot;length/time&amp;quot; is changed to &amp;quot;speed&amp;quot;.&lt;br /&gt;
	-- Other adjustments can also be specified.&lt;br /&gt;
	[&amp;quot;/area&amp;quot;] = &amp;quot;per unit area&amp;quot;,&lt;br /&gt;
	[&amp;quot;/volume&amp;quot;] = &amp;quot;per unit volume&amp;quot;,&lt;br /&gt;
	[&amp;quot;area/area&amp;quot;] = &amp;quot;area per unit area&amp;quot;,&lt;br /&gt;
	[&amp;quot;energy/length&amp;quot;] = &amp;quot;energy per unit length&amp;quot;,&lt;br /&gt;
	[&amp;quot;energy/mass&amp;quot;] = &amp;quot;energy per unit mass&amp;quot;,&lt;br /&gt;
	[&amp;quot;energy/time&amp;quot;] = { utype = &amp;quot;power&amp;quot;, link = &amp;quot;Power (physics)&amp;quot; },&lt;br /&gt;
	[&amp;quot;energy/volume&amp;quot;] = &amp;quot;energy per unit volume&amp;quot;,&lt;br /&gt;
	[&amp;quot;force/area&amp;quot;] = { utype = &amp;quot;pressure&amp;quot;, link = &amp;quot;Pressure&amp;quot; },&lt;br /&gt;
	[&amp;quot;length/length&amp;quot;] = { utype = &amp;quot;gradient&amp;quot;, link = &amp;quot;Grade (slope)&amp;quot; },&lt;br /&gt;
	[&amp;quot;length/time&amp;quot;] = { utype = &amp;quot;speed&amp;quot;, link = &amp;quot;Speed&amp;quot; },&lt;br /&gt;
	[&amp;quot;length/time/time&amp;quot;] = { utype = &amp;quot;acceleration&amp;quot;, link = &amp;quot;Acceleration&amp;quot; },&lt;br /&gt;
	[&amp;quot;mass/area&amp;quot;] = { utype = &amp;quot;pressure&amp;quot;, multiplier = 9.80665 },&lt;br /&gt;
	[&amp;quot;mass/length&amp;quot;] = &amp;quot;linear density&amp;quot;,&lt;br /&gt;
	[&amp;quot;mass/mass&amp;quot;] = &amp;quot;concentration&amp;quot;,&lt;br /&gt;
	[&amp;quot;mass/power&amp;quot;] = &amp;quot;mass per unit power&amp;quot;,&lt;br /&gt;
	[&amp;quot;mass/time&amp;quot;] = &amp;quot;mass per unit time&amp;quot;,&lt;br /&gt;
	[&amp;quot;mass/volume&amp;quot;] = { utype = &amp;quot;density&amp;quot;, link = &amp;quot;Density&amp;quot; },&lt;br /&gt;
	[&amp;quot;power/mass&amp;quot;] = &amp;quot;power per unit mass&amp;quot;,&lt;br /&gt;
	[&amp;quot;power/volume&amp;quot;] = { link = &amp;quot;Power density&amp;quot; },&lt;br /&gt;
	[&amp;quot;pressure/length&amp;quot;] = &amp;quot;fracture gradient&amp;quot;,&lt;br /&gt;
	[&amp;quot;speed/time&amp;quot;] = { utype = &amp;quot;acceleration&amp;quot;, link = &amp;quot;Acceleration&amp;quot; },&lt;br /&gt;
	[&amp;quot;volume/area&amp;quot;] = &amp;quot;volume per unit area&amp;quot;,&lt;br /&gt;
	[&amp;quot;volume/length&amp;quot;] = &amp;quot;volume per unit length&amp;quot;,&lt;br /&gt;
	[&amp;quot;volume/time&amp;quot;] = &amp;quot;flow&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	all_units = all_units,&lt;br /&gt;
	default_exceptions = default_exceptions,&lt;br /&gt;
	link_exceptions = link_exceptions,&lt;br /&gt;
	per_unit_fixups = per_unit_fixups,&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Module:Convert&amp;diff=33</id>
		<title>Module:Convert</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Module:Convert&amp;diff=33"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Convert a value from one unit of measurement to another.&lt;br /&gt;
-- Example: {{convert|123|lb|kg}} --&amp;gt; 123 pounds (56 kg)&lt;br /&gt;
-- See [[:en:Template:Convert/Transwiki guide]] if copying to another wiki.&lt;br /&gt;
&lt;br /&gt;
local MINUS = &#039;−&#039;  -- Unicode U+2212 MINUS SIGN (UTF-8: e2 88 92)&lt;br /&gt;
local abs = math.abs&lt;br /&gt;
local floor = math.floor&lt;br /&gt;
local format = string.format&lt;br /&gt;
local log10 = math.log10&lt;br /&gt;
local ustring = mw.ustring&lt;br /&gt;
local ulen = ustring.len&lt;br /&gt;
local usub = ustring.sub&lt;br /&gt;
&lt;br /&gt;
-- Configuration options to keep magic values in one location.&lt;br /&gt;
-- Conversion data and message text are defined in separate modules.&lt;br /&gt;
local config, maxsigfig&lt;br /&gt;
local numdot  -- must be &#039;.&#039; or &#039;,&#039; or a character which works in a regex&lt;br /&gt;
local numsep, numsep_remove, numsep_remove2&lt;br /&gt;
local data_code, all_units&lt;br /&gt;
local text_code&lt;br /&gt;
local varname        -- can be a code to use variable names that depend on value&lt;br /&gt;
local from_en_table  -- to translate an output string of en digits to local language&lt;br /&gt;
local to_en_table    -- to translate an input string of digits in local language to en&lt;br /&gt;
-- Use translation_table in convert/text to change the following.&lt;br /&gt;
local en_default           -- true uses lang=en unless convert has lang=local or local digits&lt;br /&gt;
local group_method = 3     -- code for how many digits are in a group&lt;br /&gt;
local per_word = &#039;per&#039;     -- for units like &amp;quot;liters per kilometer&amp;quot;&lt;br /&gt;
local plural_suffix = &#039;s&#039;  -- only other useful value is probably &#039;&#039; to disable plural unit names&lt;br /&gt;
local omitsep              -- true to omit separator before local symbol/name&lt;br /&gt;
&lt;br /&gt;
-- All units should be defined in the data module. However, to cater for quick changes&lt;br /&gt;
-- and experiments, any unknown unit is looked up in an extra data module, if it exists.&lt;br /&gt;
-- That module would be transcluded in only a small number of pages, so there should be&lt;br /&gt;
-- little server overhead from making changes, and changes should propagate quickly.&lt;br /&gt;
local extra_module  -- name of module with extra units&lt;br /&gt;
local extra_units   -- nil or table of extra units from extra_module&lt;br /&gt;
&lt;br /&gt;
-- Some options in the invoking template can set variables used later in the module.&lt;br /&gt;
local currency_text  -- for a user-defined currency symbol: {{convert|12|$/ha|$=€}} (euro replaces dollar)&lt;br /&gt;
&lt;br /&gt;
local function from_en(text)&lt;br /&gt;
	-- Input is a string representing a number in en digits with &#039;.&#039; decimal mark,&lt;br /&gt;
	-- without digit grouping (which is done just after calling this).&lt;br /&gt;
	-- Return the translation of the string with numdot and digits in local language.&lt;br /&gt;
	if numdot ~= &#039;.&#039; then&lt;br /&gt;
		text = text:gsub(&#039;%.&#039;, numdot)&lt;br /&gt;
	end&lt;br /&gt;
	if from_en_table then&lt;br /&gt;
		text = text:gsub(&#039;%d&#039;, from_en_table)&lt;br /&gt;
	end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function to_en(text)&lt;br /&gt;
	-- Input is a string representing a number in the local language with&lt;br /&gt;
	-- an optional numdot decimal mark and numsep digit grouping.&lt;br /&gt;
	-- Return the translation of the string with &#039;.&#039; mark and en digits,&lt;br /&gt;
	-- and no separators (they have to be removed here to handle cases like&lt;br /&gt;
	-- numsep = &#039;.&#039; and numdot = &#039;,&#039; with input &amp;quot;1.234.567,8&amp;quot;).&lt;br /&gt;
	if to_en_table then&lt;br /&gt;
		text = ustring.gsub(text, &#039;%d&#039;, to_en_table)&lt;br /&gt;
	end&lt;br /&gt;
	if numsep_remove then&lt;br /&gt;
		text = text:gsub(numsep_remove, &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if numsep_remove2 then&lt;br /&gt;
		text = text:gsub(numsep_remove2, &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if numdot ~= &#039;.&#039; then&lt;br /&gt;
		text = text:gsub(numdot, &#039;.&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function decimal_mark(text)&lt;br /&gt;
	-- Return &#039;,&#039; if text probably is using comma for decimal mark, or has no decimal mark.&lt;br /&gt;
	-- Return &#039;.&#039; if text probably is using dot for decimal mark.&lt;br /&gt;
	-- Otherwise return nothing (decimal mark not known).&lt;br /&gt;
	if not text:find(&#039;[.,]&#039;) then return &#039;,&#039; end&lt;br /&gt;
	text = text:gsub(&#039;^%-&#039;, &#039;&#039;):gsub(&#039;%+%d+/%d+$&#039;, &#039;&#039;):gsub(&#039;[Ee]%-?%d+$&#039;, &#039;&#039;)&lt;br /&gt;
	local decimal =&lt;br /&gt;
		text:match(&#039;^0?([.,])%d+$&#039;) or&lt;br /&gt;
		text:match(&#039;%d([.,])%d?%d?$&#039;) or&lt;br /&gt;
		text:match(&#039;%d([.,])%d%d%d%d+$&#039;)&lt;br /&gt;
	if decimal then return decimal end&lt;br /&gt;
	if text:match(&#039;%.%d+%.&#039;) then return &#039;,&#039; end&lt;br /&gt;
	if text:match(&#039;%,%d+,&#039;) then return &#039;.&#039; end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local add_warning, with_separator  -- forward declarations&lt;br /&gt;
local function to_en_with_check(text, parms)&lt;br /&gt;
	-- Version of to_en() for a wiki using numdot = &#039;,&#039; and numsep = &#039;.&#039; to check&lt;br /&gt;
	-- text (an input number as a string) which might have been copied from enwiki.&lt;br /&gt;
	-- For example, in &#039;1.234&#039; the &#039;.&#039; could be a decimal mark or a group separator.&lt;br /&gt;
	-- From viwiki.&lt;br /&gt;
	if to_en_table then&lt;br /&gt;
		text = ustring.gsub(text, &#039;%d&#039;, to_en_table)&lt;br /&gt;
	end&lt;br /&gt;
	if decimal_mark(text) == &#039;.&#039; then&lt;br /&gt;
		local original = text&lt;br /&gt;
		text = text:gsub(&#039;,&#039;, &#039;&#039;)  -- for example, interpret &amp;quot;1,234.5&amp;quot; as an enwiki value&lt;br /&gt;
		if parms then&lt;br /&gt;
			add_warning(parms, 0, &#039;cvt_enwiki_num&#039;, original, with_separator({}, text))&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if numsep_remove then&lt;br /&gt;
			text = text:gsub(numsep_remove, &#039;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if numsep_remove2 then&lt;br /&gt;
			text = text:gsub(numsep_remove2, &#039;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if numdot ~= &#039;.&#039; then&lt;br /&gt;
			text = text:gsub(numdot, &#039;.&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function omit_separator(id)&lt;br /&gt;
	-- Return true if there should be no separator before id (a unit symbol or name).&lt;br /&gt;
	-- For zhwiki, there should be no separator if id uses local characters.&lt;br /&gt;
	-- The following kludge should be a sufficient test.&lt;br /&gt;
	if omitsep then&lt;br /&gt;
		if id:sub(1, 2) == &#039;-{&#039; then  -- for &amp;quot;-{...}-&amp;quot; content language variant&lt;br /&gt;
			return true&lt;br /&gt;
		end&lt;br /&gt;
		if id:byte() &amp;gt; 127 then&lt;br /&gt;
			local first = usub(id, 1, 1)&lt;br /&gt;
			if first ~= &#039;Å&#039; and first ~= &#039;°&#039; and first ~= &#039;µ&#039; then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return id:sub(1, 1) == &#039;/&#039;  -- no separator before units like &amp;quot;/ha&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local spell_module  -- name of module that can spell numbers&lt;br /&gt;
local speller       -- function from that module to handle spelling (set if needed)&lt;br /&gt;
local wikidata_module, wikidata_data_module  -- names of Wikidata modules&lt;br /&gt;
local wikidata_code, wikidata_data  -- exported tables from those modules (set if needed)&lt;br /&gt;
&lt;br /&gt;
local function set_config(args)&lt;br /&gt;
	-- Set configuration options from template #invoke or defaults.&lt;br /&gt;
	config = args&lt;br /&gt;
	maxsigfig = config.maxsigfig or 14  -- maximum number of significant figures&lt;br /&gt;
	local data_module, text_module&lt;br /&gt;
	local sandbox = config.sandbox and (&#039;/&#039; .. config.sandbox) or &#039;&#039;&lt;br /&gt;
	data_module = &amp;quot;Module:Convert/data&amp;quot; .. sandbox&lt;br /&gt;
	text_module = &amp;quot;Module:Convert/text&amp;quot; .. sandbox&lt;br /&gt;
	extra_module = &amp;quot;Module:Convert/extra&amp;quot; .. sandbox&lt;br /&gt;
	wikidata_module = &amp;quot;Module:Convert/wikidata&amp;quot; .. sandbox&lt;br /&gt;
	wikidata_data_module = &amp;quot;Module:Convert/wikidata/data&amp;quot; .. sandbox&lt;br /&gt;
	spell_module = &amp;quot;Module:ConvertNumeric&amp;quot;&lt;br /&gt;
	data_code = mw.loadData(data_module)&lt;br /&gt;
	text_code = mw.loadData(text_module)&lt;br /&gt;
	all_units = data_code.all_units&lt;br /&gt;
	local translation = text_code.translation_table&lt;br /&gt;
	if translation then&lt;br /&gt;
		numdot = translation.numdot&lt;br /&gt;
		numsep = translation.numsep&lt;br /&gt;
		if numdot == &#039;,&#039; and numsep == &#039;.&#039; then&lt;br /&gt;
			if text_code.all_messages.cvt_enwiki_num then&lt;br /&gt;
				to_en = to_en_with_check&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if translation.group then&lt;br /&gt;
			group_method = translation.group&lt;br /&gt;
		end&lt;br /&gt;
		if translation.per_word then&lt;br /&gt;
			per_word = translation.per_word&lt;br /&gt;
		end&lt;br /&gt;
		if translation.plural_suffix then&lt;br /&gt;
			plural_suffix = translation.plural_suffix&lt;br /&gt;
		end&lt;br /&gt;
		varname = translation.varname&lt;br /&gt;
		from_en_table = translation.from_en&lt;br /&gt;
		local use_workaround = true&lt;br /&gt;
		if use_workaround then&lt;br /&gt;
			-- 2013-07-05 workaround bug by making a copy of the required table.&lt;br /&gt;
			-- mw.ustring.gsub fails with a table (to_en_table) as the replacement,&lt;br /&gt;
			-- if the table is accessed via mw.loadData.&lt;br /&gt;
			local source = translation.to_en&lt;br /&gt;
			if source then&lt;br /&gt;
				to_en_table = {}&lt;br /&gt;
				for k, v in pairs(source) do&lt;br /&gt;
					to_en_table[k] = v&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			to_en_table = translation.to_en&lt;br /&gt;
		end&lt;br /&gt;
		if translation.lang == &#039;en default&#039; then&lt;br /&gt;
			en_default = true  -- for hiwiki&lt;br /&gt;
		end&lt;br /&gt;
		omitsep = translation.omitsep  -- for zhwiki&lt;br /&gt;
	end&lt;br /&gt;
	numdot = config.numdot or numdot or &#039;.&#039;  -- decimal mark before fractional digits&lt;br /&gt;
	numsep = config.numsep or numsep or &#039;,&#039;  -- group separator for numbers&lt;br /&gt;
	-- numsep should be &#039;,&#039; or &#039;.&#039; or &#039;&#039; or &#039;&amp;amp;nbsp;&#039; or a Unicode character.&lt;br /&gt;
	-- numsep_remove must work in a regex to identify separators to be removed.&lt;br /&gt;
	if numsep ~= &#039;&#039; then&lt;br /&gt;
		numsep_remove = (numsep == &#039;.&#039;) and &#039;%.&#039; or numsep&lt;br /&gt;
	end&lt;br /&gt;
	if numsep ~= &#039;,&#039; and numdot ~= &#039;,&#039; then&lt;br /&gt;
		numsep_remove2 = &#039;,&#039;  -- so numbers copied from enwiki will work&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function collection()&lt;br /&gt;
	-- Return a table to hold items.&lt;br /&gt;
	return {&lt;br /&gt;
		n = 0,&lt;br /&gt;
		add = function (self, item)&lt;br /&gt;
			self.n = self.n + 1&lt;br /&gt;
			self[self.n] = item&lt;br /&gt;
		end,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function divide(numerator, denominator)&lt;br /&gt;
	-- Return integers quotient, remainder resulting from dividing the two&lt;br /&gt;
	-- given numbers, which should be unsigned integers.&lt;br /&gt;
	local quotient, remainder = floor(numerator / denominator), numerator % denominator&lt;br /&gt;
	if not (0 &amp;lt;= remainder and remainder &amp;lt; denominator) then&lt;br /&gt;
		-- Floating point limits may need this, as in {{convert|160.02|Ym|ydftin}}.&lt;br /&gt;
		remainder = 0&lt;br /&gt;
	end&lt;br /&gt;
	return quotient, remainder&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function split(text, delimiter)&lt;br /&gt;
	-- Return a numbered table with fields from splitting text.&lt;br /&gt;
	-- The delimiter is used in a regex without escaping (for example, &#039;.&#039; would fail).&lt;br /&gt;
	-- Each field has any leading/trailing whitespace removed.&lt;br /&gt;
	local t = {}&lt;br /&gt;
	text = text .. delimiter  -- to get last item&lt;br /&gt;
	for item in text:gmatch(&#039;%s*(.-)%s*&#039; .. delimiter) do&lt;br /&gt;
		table.insert(t, item)&lt;br /&gt;
	end&lt;br /&gt;
	return t&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function strip(text)&lt;br /&gt;
	-- If text is a string, return its content with no leading/trailing&lt;br /&gt;
	-- whitespace. Otherwise return nil (a nil argument gives a nil result).&lt;br /&gt;
	if type(text) == &#039;string&#039; then&lt;br /&gt;
		return text:match(&amp;quot;^%s*(.-)%s*$&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function table_len(t)&lt;br /&gt;
	-- Return length (&amp;lt;100) of a numbered table to replace #t which is&lt;br /&gt;
	-- documented to not work if t is accessed via mw.loadData().&lt;br /&gt;
	for i = 1, 100 do&lt;br /&gt;
		if t[i] == nil then&lt;br /&gt;
			return i - 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wanted_category(catkey, catsort, want_warning)&lt;br /&gt;
	-- Return message category if it is wanted in current namespace,&lt;br /&gt;
	-- otherwise return &#039;&#039;.&lt;br /&gt;
	local cat&lt;br /&gt;
	local title = mw.title.getCurrentTitle()&lt;br /&gt;
	if title then&lt;br /&gt;
		local nsdefault = &#039;0&#039;  -- default namespace: &#039;0&#039; = article; &#039;0,10&#039; = article and template&lt;br /&gt;
		local namespace = title.namespace&lt;br /&gt;
		for _, v in ipairs(split(config.nscat or nsdefault, &#039;,&#039;)) do&lt;br /&gt;
			if namespace == tonumber(v) then&lt;br /&gt;
				cat = text_code.all_categories[want_warning and &#039;warning&#039; or catkey]&lt;br /&gt;
				if catsort and catsort ~= &#039;&#039; and cat:sub(-2) == &#039;]]&#039; then&lt;br /&gt;
					cat = cat:sub(1, -3) .. &#039;|&#039; .. mw.text.nowiki(usub(catsort, 1, 20)) .. &#039;]]&#039;&lt;br /&gt;
				end&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return cat or &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function message(parms, mcode, is_warning)&lt;br /&gt;
	-- Return wikitext for an error message, including category if specified&lt;br /&gt;
	-- for the message type.&lt;br /&gt;
	-- mcode = numbered table specifying the message:&lt;br /&gt;
	--    mcode[1] = &#039;cvt_xxx&#039; (string used as a key to get message info)&lt;br /&gt;
	--    mcode[2] = &#039;parm1&#039; (string to replace &#039;$1&#039; if any in message)&lt;br /&gt;
	--    mcode[3] = &#039;parm2&#039; (string to replace &#039;$2&#039; if any in message)&lt;br /&gt;
	--    mcode[4] = &#039;parm3&#039; (string to replace &#039;$3&#039; if any in message)&lt;br /&gt;
	local msg&lt;br /&gt;
	if type(mcode) == &#039;table&#039; then&lt;br /&gt;
		if mcode[1] == &#039;cvt_no_output&#039; then&lt;br /&gt;
			-- Some errors should cause convert to output an empty string,&lt;br /&gt;
			-- for example, for an optional field in an infobox.&lt;br /&gt;
			return &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		msg = text_code.all_messages[mcode[1]]&lt;br /&gt;
	end&lt;br /&gt;
	parms.have_problem = true&lt;br /&gt;
	local function subparm(fmt, ...)&lt;br /&gt;
		local rep = {}&lt;br /&gt;
		for i, v in ipairs({...}) do&lt;br /&gt;
			rep[&#039;$&#039; .. i] = v&lt;br /&gt;
		end&lt;br /&gt;
		return (fmt:gsub(&#039;$%d+&#039;, rep))&lt;br /&gt;
	end&lt;br /&gt;
	if msg then&lt;br /&gt;
		local parts = {}&lt;br /&gt;
		local regex, replace = msg.regex, msg.replace&lt;br /&gt;
		for i = 1, 3 do&lt;br /&gt;
			local limit = 40&lt;br /&gt;
			local s = mcode[i + 1]&lt;br /&gt;
			if s then&lt;br /&gt;
				if regex and replace then&lt;br /&gt;
					s = s:gsub(regex, replace)&lt;br /&gt;
					limit = nil  -- allow long &amp;quot;should be&amp;quot; messages&lt;br /&gt;
				end&lt;br /&gt;
				-- Escape user input so it does not break the message.&lt;br /&gt;
				-- To avoid tags (like {{convert|1&amp;lt;math&amp;gt;23&amp;lt;/math&amp;gt;|m}}) breaking&lt;br /&gt;
				-- the mouseover title, any strip marker starting with char(127) is&lt;br /&gt;
				-- replaced with &#039;...&#039; (text not needing i18n).&lt;br /&gt;
				local append&lt;br /&gt;
				local pos = s:find(string.char(127), 1, true)&lt;br /&gt;
				if pos then&lt;br /&gt;
					append = &#039;...&#039;&lt;br /&gt;
					s = s:sub(1, pos - 1)&lt;br /&gt;
				end&lt;br /&gt;
				if limit and ulen(s) &amp;gt; limit then&lt;br /&gt;
					s = usub(s, 1, limit)&lt;br /&gt;
					append = &#039;...&#039;&lt;br /&gt;
				end&lt;br /&gt;
				s = mw.text.nowiki(s) .. (append or &#039;&#039;)&lt;br /&gt;
			else&lt;br /&gt;
				s = &#039;?&#039;&lt;br /&gt;
			end&lt;br /&gt;
			parts[&#039;$&#039; .. i] = s&lt;br /&gt;
		end&lt;br /&gt;
		local function ispreview()&lt;br /&gt;
			-- Return true if a prominent message should be shown.&lt;br /&gt;
			if parms.test == &#039;preview&#039; or parms.test == &#039;nopreview&#039; then&lt;br /&gt;
				-- For testing, can preview a real message or simulate a preview&lt;br /&gt;
				-- when running automated tests.&lt;br /&gt;
				return parms.test == &#039;preview&#039;&lt;br /&gt;
			end&lt;br /&gt;
			local success, revid = pcall(function ()&lt;br /&gt;
				return (parms.frame):preprocess(&#039;{{REVISIONID}}&#039;) end)&lt;br /&gt;
			return success and (revid == &#039;&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		local want_warning = is_warning and&lt;br /&gt;
			not config.warnings and  -- show unobtrusive warnings if config.warnings not configured&lt;br /&gt;
			not msg.nowarn           -- but use msg settings, not standard warning, if specified&lt;br /&gt;
		local title = string.gsub(msg[1] or &#039;Missing message&#039;, &#039;$%d+&#039;, parts)&lt;br /&gt;
		local text = want_warning and &#039;*&#039; or msg[2] or &#039;Missing message&#039;&lt;br /&gt;
		local cat = wanted_category(msg[3], mcode[2], want_warning)&lt;br /&gt;
		local anchor = msg[4] or &#039;&#039;&lt;br /&gt;
		local fmtkey = ispreview() and &#039;cvt_format_preview&#039; or&lt;br /&gt;
			(want_warning and &#039;cvt_format2&#039; or msg.format or &#039;cvt_format&#039;)&lt;br /&gt;
		local fmt = text_code.all_messages[fmtkey] or &#039;convert: bug&#039;&lt;br /&gt;
		return subparm(fmt, title:gsub(&#039;&amp;quot;&#039;, &#039;&amp;amp;quot;&#039;), text, cat, anchor)&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;Convert internal error: unknown message&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function add_warning(parms, level, key, text1, text2)  -- for forward declaration above&lt;br /&gt;
	-- If enabled, add a warning that will be displayed after the convert result.&lt;br /&gt;
	-- A higher level is more verbose: more kinds of warnings are displayed.&lt;br /&gt;
	-- To reduce output noise, only the first warning is displayed.&lt;br /&gt;
	if level &amp;lt;= (tonumber(config.warnings) or 1) then&lt;br /&gt;
		if parms.warnings == nil then&lt;br /&gt;
			parms.warnings = message(parms, { key, text1, text2 }, true)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function spell_number(parms, inout, number, numerator, denominator)&lt;br /&gt;
	-- Return result of spelling (number, numerator, denominator), or&lt;br /&gt;
	-- return nil if spelling is not available or not supported for given text.&lt;br /&gt;
	-- Examples (each value must be a string or nil):&lt;br /&gt;
	--   number  numerator  denominator  output&lt;br /&gt;
	--   ------  ---------  -----------  -------------------&lt;br /&gt;
	--   &amp;quot;1.23&amp;quot;    nil        nil        one point two three&lt;br /&gt;
	--    &amp;quot;1&amp;quot;      &amp;quot;2&amp;quot;        &amp;quot;3&amp;quot;        one and two thirds&lt;br /&gt;
	--    nil      &amp;quot;2&amp;quot;        &amp;quot;3&amp;quot;        two thirds&lt;br /&gt;
	if not speller then&lt;br /&gt;
		local function get_speller(module)&lt;br /&gt;
			return require(module).spell_number&lt;br /&gt;
		end&lt;br /&gt;
		local success&lt;br /&gt;
		success, speller = pcall(get_speller, spell_module)&lt;br /&gt;
		if not success or type(speller) ~= &#039;function&#039; then&lt;br /&gt;
			add_warning(parms, 1, &#039;cvt_no_spell&#039;, &#039;spell&#039;)&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local case&lt;br /&gt;
	if parms.spell_upper == inout then&lt;br /&gt;
		case = true&lt;br /&gt;
		parms.spell_upper = nil  -- only uppercase first word in a multiple unit&lt;br /&gt;
	end&lt;br /&gt;
	local sp = not parms.opt_sp_us&lt;br /&gt;
	local adj = parms.opt_adjectival&lt;br /&gt;
	return speller(number, numerator, denominator, case, sp, adj)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
-- BEGIN: Code required only for built-in units.&lt;br /&gt;
-- LATER: If need much more code, move to another module to simplify this module.&lt;br /&gt;
local function speed_of_sound(altitude)&lt;br /&gt;
	-- This is for the Mach built-in unit of speed.&lt;br /&gt;
	-- Return speed of sound in metres per second at given altitude in feet.&lt;br /&gt;
	-- If no altitude given, use default (zero altitude = sea level).&lt;br /&gt;
	-- Table gives speed of sound in miles per hour at various altitudes:&lt;br /&gt;
	--   altitude = -17,499 to 402,499 feet&lt;br /&gt;
	-- mach_table[a + 4] = s where&lt;br /&gt;
	--   a = (altitude / 5000) rounded to nearest integer (-3 to 80)&lt;br /&gt;
	--   s = speed of sound (mph) at that altitude&lt;br /&gt;
	-- LATER: Should calculate result from an interpolation between the next&lt;br /&gt;
	-- lower and higher altitudes in table, rather than rounding to nearest.&lt;br /&gt;
	-- From: http://www.aerospaceweb.org/question/atmosphere/q0112.shtml&lt;br /&gt;
	local mach_table = {                                                       -- a =&lt;br /&gt;
		799.5, 787.0, 774.2, 761.207051,                                       -- -3 to  0&lt;br /&gt;
		748.0, 734.6, 721.0, 707.0, 692.8, 678.3, 663.5, 660.1, 660.1, 660.1,  --  1 to 10&lt;br /&gt;
		660.1, 660.1, 660.1, 662.0, 664.3, 666.5, 668.9, 671.1, 673.4, 675.6,  -- 11 to 20&lt;br /&gt;
		677.9, 683.7, 689.9, 696.0, 702.1, 708.1, 714.0, 719.9, 725.8, 731.6,  -- 21 to 30&lt;br /&gt;
		737.3, 737.7, 737.7, 736.2, 730.5, 724.6, 718.8, 712.9, 707.0, 701.0,  -- 31 to 40&lt;br /&gt;
		695.0, 688.9, 682.8, 676.6, 670.4, 664.1, 657.8, 652.9, 648.3, 643.7,  -- 41 to 50&lt;br /&gt;
		639.1, 634.4, 629.6, 624.8, 620.0, 615.2, 613.2, 613.2, 613.2, 613.5,  -- 51 to 60&lt;br /&gt;
		614.4, 615.3, 616.7, 619.8, 623.4, 629.7, 635.0, 641.1, 650.6, 660.0,  -- 61 to 70&lt;br /&gt;
		672.5, 674.3, 676.1, 677.9, 679.7, 681.5, 683.3, 685.1, 686.8, 688.6,  -- 71 to 80&lt;br /&gt;
	}&lt;br /&gt;
	altitude = altitude or 0&lt;br /&gt;
	local a = (altitude &amp;lt; 0) and -altitude or altitude&lt;br /&gt;
	a = floor(a / 5000 + 0.5)&lt;br /&gt;
	if altitude &amp;lt; 0 then&lt;br /&gt;
		a = -a&lt;br /&gt;
	end&lt;br /&gt;
	if a &amp;lt; -3 then&lt;br /&gt;
		a = -3&lt;br /&gt;
	elseif a &amp;gt; 80 then&lt;br /&gt;
		a = 80&lt;br /&gt;
	end&lt;br /&gt;
	return mach_table[a + 4] * 0.44704  -- mph converted to m/s&lt;br /&gt;
end&lt;br /&gt;
-- END: Code required only for built-in units.&lt;br /&gt;
------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function add_style(parms, class)&lt;br /&gt;
	-- Add selected template style to parms if not already present.&lt;br /&gt;
	parms.templatestyles = parms.templatestyles or {}&lt;br /&gt;
	if not parms.templatestyles[class] then&lt;br /&gt;
		parms.templatestyles[class] = parms.frame:extensionTag({&lt;br /&gt;
			name = &#039;templatestyles&#039;, args = { src = text_code.titles[class] }&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_styles(parms)&lt;br /&gt;
	-- Return string of required template styles, empty if none.&lt;br /&gt;
	if parms.templatestyles then&lt;br /&gt;
		local t = {}&lt;br /&gt;
		for _, v in pairs(parms.templatestyles) do&lt;br /&gt;
			table.insert(t, v)&lt;br /&gt;
		end&lt;br /&gt;
		return table.concat(t)&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_range(word)&lt;br /&gt;
	-- Return a range (string or table) corresponding to word (like &amp;quot;to&amp;quot;),&lt;br /&gt;
	-- or return nil if not a range word.&lt;br /&gt;
	local ranges = text_code.ranges&lt;br /&gt;
	return ranges.types[word] or ranges.types[ranges.aliases[word]]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function check_mismatch(unit1, unit2)&lt;br /&gt;
	-- If unit1 cannot be converted to unit2, return an error message table.&lt;br /&gt;
	-- This allows conversion between units of the same type, and between&lt;br /&gt;
	-- Nm (normally torque) and ftlb (energy), as in gun-related articles.&lt;br /&gt;
	-- This works because Nm is the base unit (scale = 1) for both the&lt;br /&gt;
	-- primary type (torque), and the alternate type (energy, where Nm = J).&lt;br /&gt;
	-- A match occurs if the primary types are the same, or if unit1 matches&lt;br /&gt;
	-- the alternate type of unit2, and vice versa. That provides a whitelist&lt;br /&gt;
	-- of which conversions are permitted between normally incompatible types.&lt;br /&gt;
	if unit1.utype == unit2.utype or&lt;br /&gt;
		(unit1.utype == unit2.alttype and unit1.alttype == unit2.utype) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	return { &#039;cvt_mismatch&#039;, unit1.utype, unit2.utype }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function override_from(out_table, in_table, fields)&lt;br /&gt;
	-- Copy the specified fields from in_table to out_table, but do not&lt;br /&gt;
	-- copy nil fields (keep any corresponding field in out_table).&lt;br /&gt;
	for _, field in ipairs(fields) do&lt;br /&gt;
		if in_table[field] then&lt;br /&gt;
			out_table[field] = in_table[field]&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function shallow_copy(t)&lt;br /&gt;
	-- Return a shallow copy of table t.&lt;br /&gt;
	-- Do not need the features and overhead of the Scribunto mw.clone().&lt;br /&gt;
	local result = {}&lt;br /&gt;
	for k, v in pairs(t) do&lt;br /&gt;
		result[k] = v&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local unit_mt = {&lt;br /&gt;
	-- Metatable to get missing values for a unit that does not accept SI prefixes.&lt;br /&gt;
	-- Warning: The boolean value &#039;false&#039; is returned for any missing field&lt;br /&gt;
	-- so __index is not called twice for the same field in a given unit.&lt;br /&gt;
	__index = function (self, key)&lt;br /&gt;
		local value&lt;br /&gt;
		if key == &#039;name1&#039; or key == &#039;sym_us&#039; then&lt;br /&gt;
			value = self.symbol&lt;br /&gt;
		elseif key == &#039;name2&#039; then&lt;br /&gt;
			value = self.name1 .. plural_suffix&lt;br /&gt;
		elseif key == &#039;name1_us&#039; then&lt;br /&gt;
			value = self.name1&lt;br /&gt;
			if not rawget(self, &#039;name2_us&#039;) then&lt;br /&gt;
				-- If name1_us is &#039;foot&#039;, do not make name2_us by appending plural_suffix.&lt;br /&gt;
				self.name2_us = self.name2&lt;br /&gt;
			end&lt;br /&gt;
		elseif key == &#039;name2_us&#039; then&lt;br /&gt;
			local raw1_us = rawget(self, &#039;name1_us&#039;)&lt;br /&gt;
			if raw1_us then&lt;br /&gt;
				value = raw1_us .. plural_suffix&lt;br /&gt;
			else&lt;br /&gt;
				value = self.name2&lt;br /&gt;
			end&lt;br /&gt;
		elseif key == &#039;link&#039; then&lt;br /&gt;
			value = self.name1&lt;br /&gt;
		else&lt;br /&gt;
			value = false&lt;br /&gt;
		end&lt;br /&gt;
		rawset(self, key, value)&lt;br /&gt;
		return value&lt;br /&gt;
	end&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function prefixed_name(unit, name, index)&lt;br /&gt;
	-- Return unit name with SI prefix inserted at correct position.&lt;br /&gt;
	-- index = 1 (name1), 2 (name2), 3 (name1_us), 4 (name2_us).&lt;br /&gt;
	-- The position is a byte (not character) index, so use Lua&#039;s sub().&lt;br /&gt;
	local pos = rawget(unit, &#039;prefix_position&#039;)&lt;br /&gt;
	if type(pos) == &#039;string&#039; then&lt;br /&gt;
		pos = tonumber(split(pos, &#039;,&#039;)[index])&lt;br /&gt;
	end&lt;br /&gt;
	if pos then&lt;br /&gt;
		return name:sub(1, pos - 1) .. unit.si_name .. name:sub(pos)&lt;br /&gt;
	end&lt;br /&gt;
	return unit.si_name .. name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local unit_prefixed_mt = {&lt;br /&gt;
	-- Metatable to get missing values for a unit that accepts SI prefixes.&lt;br /&gt;
	-- Before use, fields si_name, si_prefix must be defined.&lt;br /&gt;
	-- The unit must define _symbol, _name1 and&lt;br /&gt;
	-- may define _sym_us, _name1_us, _name2_us&lt;br /&gt;
	-- (_sym_us, _name2_us may be defined for a language using sp=us&lt;br /&gt;
	-- to refer to a variant unrelated to U.S. units).&lt;br /&gt;
	__index = function (self, key)&lt;br /&gt;
		local value&lt;br /&gt;
		if key == &#039;symbol&#039; then&lt;br /&gt;
			value = self.si_prefix .. self._symbol&lt;br /&gt;
			if value == &#039;l&#039; then value = &#039;L&#039; end&lt;br /&gt;
		elseif key == &#039;sym_us&#039; then&lt;br /&gt;
			value = rawget(self, &#039;_sym_us&#039;)&lt;br /&gt;
			if value then&lt;br /&gt;
				value = self.si_prefix .. value&lt;br /&gt;
			else&lt;br /&gt;
				value = self.symbol&lt;br /&gt;
			end&lt;br /&gt;
		elseif key == &#039;name1&#039; then&lt;br /&gt;
			value = prefixed_name(self, self._name1, 1)&lt;br /&gt;
		elseif key == &#039;name2&#039; then&lt;br /&gt;
			value = rawget(self, &#039;_name2&#039;)&lt;br /&gt;
			if value then&lt;br /&gt;
				value = prefixed_name(self, value, 2)&lt;br /&gt;
			else&lt;br /&gt;
				value = self.name1 .. plural_suffix&lt;br /&gt;
			end&lt;br /&gt;
		elseif key == &#039;name1_us&#039; then&lt;br /&gt;
			value = rawget(self, &#039;_name1_us&#039;)&lt;br /&gt;
			if value then&lt;br /&gt;
				value = prefixed_name(self, value, 3)&lt;br /&gt;
			else&lt;br /&gt;
				value = self.name1&lt;br /&gt;
			end&lt;br /&gt;
		elseif key == &#039;name2_us&#039; then&lt;br /&gt;
			value = rawget(self, &#039;_name2_us&#039;)&lt;br /&gt;
			if value then&lt;br /&gt;
				value = prefixed_name(self, value, 4)&lt;br /&gt;
			elseif rawget(self, &#039;_name1_us&#039;) then&lt;br /&gt;
				value = self.name1_us .. plural_suffix&lt;br /&gt;
			else&lt;br /&gt;
				value = self.name2&lt;br /&gt;
			end&lt;br /&gt;
		elseif key == &#039;link&#039; then&lt;br /&gt;
			value = self.name1&lt;br /&gt;
		else&lt;br /&gt;
			value = false&lt;br /&gt;
		end&lt;br /&gt;
		rawset(self, key, value)&lt;br /&gt;
		return value&lt;br /&gt;
	end&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local unit_per_mt = {&lt;br /&gt;
	-- Metatable to get values for a per unit of form &amp;quot;x/y&amp;quot;.&lt;br /&gt;
	-- This is never called to determine a unit name or link because per units&lt;br /&gt;
	-- are handled as a special case.&lt;br /&gt;
	-- Similarly, the default output is handled elsewhere, and for a symbol&lt;br /&gt;
	-- this is only called from get_default() for default_exceptions.&lt;br /&gt;
	__index = function (self, key)&lt;br /&gt;
		local value&lt;br /&gt;
		if key == &#039;symbol&#039; then&lt;br /&gt;
			local per = self.per&lt;br /&gt;
			local unit1, unit2 = per[1], per[2]&lt;br /&gt;
			if unit1 then&lt;br /&gt;
				value = unit1[key] .. &#039;/&#039; .. unit2[key]&lt;br /&gt;
			else&lt;br /&gt;
				value = &#039;/&#039; .. unit2[key]&lt;br /&gt;
			end&lt;br /&gt;
		elseif key == &#039;sym_us&#039; then&lt;br /&gt;
			value = self.symbol&lt;br /&gt;
		elseif key == &#039;scale&#039; then&lt;br /&gt;
			local per = self.per&lt;br /&gt;
			local unit1, unit2 = per[1], per[2]&lt;br /&gt;
			value = (unit1 and unit1.scale or 1) * self.scalemultiplier / unit2.scale&lt;br /&gt;
		else&lt;br /&gt;
			value = false&lt;br /&gt;
		end&lt;br /&gt;
		rawset(self, key, value)&lt;br /&gt;
		return value&lt;br /&gt;
	end&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function make_per(unitcode, unit_table, ulookup)&lt;br /&gt;
	-- Return true, t where t is a per unit with unit codes expanded to unit tables,&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	local result = {&lt;br /&gt;
		unitcode = unitcode,&lt;br /&gt;
		utype = unit_table.utype,&lt;br /&gt;
		per = {}&lt;br /&gt;
	}&lt;br /&gt;
	override_from(result, unit_table, { &#039;invert&#039;, &#039;iscomplex&#039;, &#039;default&#039;, &#039;link&#039;, &#039;symbol&#039;, &#039;symlink&#039; })&lt;br /&gt;
	result.symbol_raw = (result.symbol or false)  -- to distinguish between a defined exception and a metatable calculation&lt;br /&gt;
	local prefix&lt;br /&gt;
	for i, v in ipairs(unit_table.per) do&lt;br /&gt;
		if i == 1 and v == &#039;&#039; then&lt;br /&gt;
			-- First unit symbol can be empty; that gives a nil first unit table.&lt;br /&gt;
		elseif i == 1 and text_code.currency[v] then&lt;br /&gt;
			prefix = currency_text or v&lt;br /&gt;
		else&lt;br /&gt;
			local success, t = ulookup(v)&lt;br /&gt;
			if not success then return false, t end&lt;br /&gt;
			result.per[i] = t&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local multiplier = unit_table.multiplier&lt;br /&gt;
	if not result.utype then&lt;br /&gt;
		-- Creating an automatic per unit.&lt;br /&gt;
		local unit1 = result.per[1]&lt;br /&gt;
		local utype = (unit1 and unit1.utype or prefix or &#039;&#039;) .. &#039;/&#039; .. result.per[2].utype&lt;br /&gt;
		local t = data_code.per_unit_fixups[utype]&lt;br /&gt;
		if t then&lt;br /&gt;
			if type(t) == &#039;table&#039; then&lt;br /&gt;
				utype = t.utype or utype&lt;br /&gt;
				result.link = result.link or t.link&lt;br /&gt;
				multiplier = multiplier or t.multiplier&lt;br /&gt;
			else&lt;br /&gt;
				utype = t&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		result.utype = utype&lt;br /&gt;
	end&lt;br /&gt;
	result.scalemultiplier = multiplier or 1&lt;br /&gt;
	result.vprefix = prefix or false  -- set to non-nil to avoid calling __index&lt;br /&gt;
	return true, setmetatable(result, unit_per_mt)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function lookup(parms, unitcode, what, utable, fails, depth)&lt;br /&gt;
	-- Return true, t where t is a copy of the unit&#039;s converter table,&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	-- Parameter &#039;what&#039; determines whether combination units are accepted:&lt;br /&gt;
	--   &#039;no_combination&#039;  : single unit only&lt;br /&gt;
	--   &#039;any_combination&#039; : single unit or combination or output multiple&lt;br /&gt;
	--   &#039;only_multiple&#039;   : single unit or output multiple only&lt;br /&gt;
	-- Parameter unitcode is a symbol (like &#039;g&#039;), with an optional SI prefix (like &#039;kg&#039;).&lt;br /&gt;
	-- If, for example, &#039;kg&#039; is in this table, that entry is used;&lt;br /&gt;
	-- otherwise the prefix (&#039;k&#039;) is applied to the base unit (&#039;g&#039;).&lt;br /&gt;
	-- If unitcode is a known combination code (and if allowed by what),&lt;br /&gt;
	-- a table of output multiple unit tables is included in the result.&lt;br /&gt;
	-- For compatibility with the old template, an underscore in a unitcode is&lt;br /&gt;
	-- replaced with a space so usage like {{convert|350|board_feet}} works.&lt;br /&gt;
	-- Wikignomes may also put two spaces or &amp;quot;&amp;amp;nbsp;&amp;quot; in combinations, so&lt;br /&gt;
	-- replace underscore, &amp;quot;&amp;amp;nbsp;&amp;quot;, and multiple spaces with a single space.&lt;br /&gt;
	utable = utable or parms.unittable or all_units&lt;br /&gt;
	fails = fails or {}&lt;br /&gt;
	depth = depth and depth + 1 or 1&lt;br /&gt;
	if depth &amp;gt; 9 then&lt;br /&gt;
		-- There are ways to mistakenly define units which result in infinite&lt;br /&gt;
		-- recursion when lookup() is called. That gives a long delay and very&lt;br /&gt;
		-- confusing error messages, so the depth parameter is used as a guard.&lt;br /&gt;
		return false, { &#039;cvt_lookup&#039;, unitcode }&lt;br /&gt;
	end&lt;br /&gt;
	if unitcode == nil or unitcode == &#039;&#039; then&lt;br /&gt;
		return false, { &#039;cvt_no_unit&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	unitcode = unitcode:gsub(&#039;_&#039;, &#039; &#039;):gsub(&#039;&amp;amp;nbsp;&#039;, &#039; &#039;):gsub(&#039;  +&#039;, &#039; &#039;)&lt;br /&gt;
	local function call_make_per(t)&lt;br /&gt;
		return make_per(unitcode, t,&lt;br /&gt;
			function (ucode) return lookup(parms, ucode, &#039;no_combination&#039;, utable, fails, depth) end&lt;br /&gt;
		)&lt;br /&gt;
	end&lt;br /&gt;
	local t = utable[unitcode]&lt;br /&gt;
	if t then&lt;br /&gt;
		if t.shouldbe then&lt;br /&gt;
			return false, { &#039;cvt_should_be&#039;, t.shouldbe }&lt;br /&gt;
		end&lt;br /&gt;
		if t.sp_us then&lt;br /&gt;
			parms.opt_sp_us = true&lt;br /&gt;
		end&lt;br /&gt;
		local target = t.target  -- nil, or unitcode is an alias for this target&lt;br /&gt;
		if target then&lt;br /&gt;
			local success, result = lookup(parms, target, what, utable, fails, depth)&lt;br /&gt;
			if not success then return false, result end&lt;br /&gt;
			override_from(result, t, { &#039;customary&#039;, &#039;default&#039;, &#039;link&#039;, &#039;symbol&#039;, &#039;symlink&#039;, &#039;usename&#039; })&lt;br /&gt;
			local multiplier = t.multiplier&lt;br /&gt;
			if multiplier then&lt;br /&gt;
				result.multiplier = tostring(multiplier)&lt;br /&gt;
				result.scale = result.scale * multiplier&lt;br /&gt;
			end&lt;br /&gt;
			return true, result&lt;br /&gt;
		end&lt;br /&gt;
		if t.per then&lt;br /&gt;
			return call_make_per(t)&lt;br /&gt;
		end&lt;br /&gt;
		local combo = t.combination  -- nil or a table of unitcodes&lt;br /&gt;
		if combo then&lt;br /&gt;
			local multiple = t.multiple&lt;br /&gt;
			if what == &#039;no_combination&#039; or (what == &#039;only_multiple&#039; and not multiple) then&lt;br /&gt;
				return false, { &#039;cvt_bad_unit&#039;, unitcode }&lt;br /&gt;
			end&lt;br /&gt;
			-- Recursively create a combination table containing the&lt;br /&gt;
			-- converter table of each unitcode.&lt;br /&gt;
			local result = { utype = t.utype, multiple = multiple, combination = {} }&lt;br /&gt;
			local cvt = result.combination&lt;br /&gt;
			for i, v in ipairs(combo) do&lt;br /&gt;
				local success, t = lookup(parms, v, multiple and &#039;no_combination&#039; or &#039;only_multiple&#039;, utable, fails, depth)&lt;br /&gt;
				if not success then return false, t end&lt;br /&gt;
				cvt[i] = t&lt;br /&gt;
			end&lt;br /&gt;
			return true, result&lt;br /&gt;
		end&lt;br /&gt;
		local result = shallow_copy(t)&lt;br /&gt;
		result.unitcode = unitcode&lt;br /&gt;
		if result.prefixes then&lt;br /&gt;
			result.si_name = &#039;&#039;&lt;br /&gt;
			result.si_prefix = &#039;&#039;&lt;br /&gt;
			return true, setmetatable(result, unit_prefixed_mt)&lt;br /&gt;
		end&lt;br /&gt;
		return true, setmetatable(result, unit_mt)&lt;br /&gt;
	end&lt;br /&gt;
	local SIprefixes = text_code.SIprefixes&lt;br /&gt;
	for plen = SIprefixes[1] or 2, 1, -1 do&lt;br /&gt;
		-- Look for an SI prefix; should never occur with an alias.&lt;br /&gt;
		-- Check for longer prefix first (&#039;dam&#039; is decametre).&lt;br /&gt;
		-- SIprefixes[1] = prefix maximum #characters (as seen by mw.ustring.sub).&lt;br /&gt;
		local prefix = usub(unitcode, 1, plen)&lt;br /&gt;
		local si = SIprefixes[prefix]&lt;br /&gt;
		if si then&lt;br /&gt;
			local t = utable[usub(unitcode, plen+1)]&lt;br /&gt;
			if t and t.prefixes then&lt;br /&gt;
				local result = shallow_copy(t)&lt;br /&gt;
				result.unitcode = unitcode&lt;br /&gt;
				result.si_name = parms.opt_sp_us and si.name_us or si.name&lt;br /&gt;
				result.si_prefix = si.prefix or prefix&lt;br /&gt;
				result.scale = t.scale * 10 ^ (si.exponent * t.prefixes)&lt;br /&gt;
				return true, setmetatable(result, unit_prefixed_mt)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Accept user-defined combinations like &amp;quot;acre+m2+ha&amp;quot; or &amp;quot;acre m2 ha&amp;quot; for output.&lt;br /&gt;
	-- If &#039;+&#039; is used, each unit code can include a space, and any error is fatal.&lt;br /&gt;
	-- If &#039; &#039; is used and if each space-separated word is a unit code, it is a combo,&lt;br /&gt;
	-- but errors are not fatal so the unit code can be looked up as an extra unit.&lt;br /&gt;
	local err_is_fatal&lt;br /&gt;
	local combo = collection()&lt;br /&gt;
	if unitcode:find(&#039;+&#039;, 1, true) then&lt;br /&gt;
		err_is_fatal = true&lt;br /&gt;
		for item in (unitcode .. &#039;+&#039;):gmatch(&#039;%s*(.-)%s*%+&#039;) do&lt;br /&gt;
			if item ~= &#039;&#039; then&lt;br /&gt;
				combo:add(item)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif unitcode:find(&#039;%s&#039;) then&lt;br /&gt;
		for item in unitcode:gmatch(&#039;%S+&#039;) do&lt;br /&gt;
			combo:add(item)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if combo.n &amp;gt; 1 then&lt;br /&gt;
		local function lookup_combo()&lt;br /&gt;
			if what == &#039;no_combination&#039; or what == &#039;only_multiple&#039; then&lt;br /&gt;
				return false, { &#039;cvt_bad_unit&#039;, unitcode }&lt;br /&gt;
			end&lt;br /&gt;
			local result = { combination = {} }&lt;br /&gt;
			local cvt = result.combination&lt;br /&gt;
			for i, v in ipairs(combo) do&lt;br /&gt;
				local success, t = lookup(parms, v, &#039;only_multiple&#039;, utable, fails, depth)&lt;br /&gt;
				if not success then return false, t end&lt;br /&gt;
				if i == 1 then&lt;br /&gt;
					result.utype = t.utype&lt;br /&gt;
				else&lt;br /&gt;
					local mismatch = check_mismatch(result, t)&lt;br /&gt;
					if mismatch then&lt;br /&gt;
						return false, mismatch&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				cvt[i] = t&lt;br /&gt;
			end&lt;br /&gt;
			return true, result&lt;br /&gt;
		end&lt;br /&gt;
		local success, result = lookup_combo()&lt;br /&gt;
		if success or err_is_fatal then&lt;br /&gt;
			return success, result&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Accept any unit with an engineering notation prefix like &amp;quot;e6cuft&amp;quot;&lt;br /&gt;
	-- (million cubic feet), but not chained prefixes like &amp;quot;e3e6cuft&amp;quot;,&lt;br /&gt;
	-- and not if the unit is a combination or multiple,&lt;br /&gt;
	-- and not if the unit has an offset or is a built-in.&lt;br /&gt;
	-- Only en digits are accepted.&lt;br /&gt;
	local e, exponent, baseunit = unitcode:match(&#039;^([Ee])(%d+)(.*)&#039;)&lt;br /&gt;
	if exponent then&lt;br /&gt;
		local engscale = text_code.eng_scales[exponent]&lt;br /&gt;
		if engscale then&lt;br /&gt;
			local success, result = lookup(parms, baseunit, &#039;no_combination&#039;, utable, fails, depth)&lt;br /&gt;
			if success and not (result.offset or result.builtin or result.engscale) then&lt;br /&gt;
				if e == &#039;E&#039; then&lt;br /&gt;
					result.this_number_word = true&lt;br /&gt;
					unitcode = &#039;e&#039; .. unitcode:sub(2)&lt;br /&gt;
				end&lt;br /&gt;
				result.unitcode = unitcode  -- &#039;e6cuft&#039; not &#039;cuft&#039;&lt;br /&gt;
				result.defkey = unitcode  -- key to lookup default exception&lt;br /&gt;
				result.engscale = engscale&lt;br /&gt;
				result.scale = result.scale * 10 ^ tonumber(exponent)&lt;br /&gt;
				return true, result&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Look for x/y; split on right-most slash to get scale correct (x/y/z is x/y per z).&lt;br /&gt;
	local top, bottom = unitcode:match(&#039;^(.-)/([^/]+)$&#039;)&lt;br /&gt;
	if top and not unitcode:find(&#039;e%d&#039;) then&lt;br /&gt;
		-- If valid, create an automatic per unit for an &amp;quot;x/y&amp;quot; unit code.&lt;br /&gt;
		-- The unitcode must not include extraneous spaces.&lt;br /&gt;
		-- Engineering notation (apart from at start and which has been stripped before here),&lt;br /&gt;
		-- is not supported so do not make a per unit if find text like &#039;e3&#039; in unitcode.&lt;br /&gt;
		local success, result = call_make_per({ per = {top, bottom} })&lt;br /&gt;
		if success then&lt;br /&gt;
			return true, result&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not parms.opt_ignore_error and not get_range(unitcode) then&lt;br /&gt;
		-- Want the &amp;quot;what links here&amp;quot; list for the extra_module to show only cases&lt;br /&gt;
		-- where an extra unit is used, so do not require it if invoked from {{val}}&lt;br /&gt;
		-- or if looking up a range word which cannot be a unit.&lt;br /&gt;
		if not extra_units then&lt;br /&gt;
			local success, extra = pcall(function () return require(extra_module).extra_units end)&lt;br /&gt;
			if success and type(extra) == &#039;table&#039; then&lt;br /&gt;
				extra_units = extra&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if extra_units then&lt;br /&gt;
			-- A unit in one data table might refer to a unit in the other table, so&lt;br /&gt;
			-- switch between them, relying on fails or depth to terminate loops.&lt;br /&gt;
			if not fails[unitcode] then&lt;br /&gt;
				fails[unitcode] = true&lt;br /&gt;
				local other = (utable == all_units) and extra_units or all_units&lt;br /&gt;
				local success, result = lookup(parms, unitcode, what, other, fails, depth)&lt;br /&gt;
				if success then&lt;br /&gt;
					return true, result&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if to_en_table then&lt;br /&gt;
		-- At fawiki it is common to translate all digits so a unit like &amp;quot;km2&amp;quot; becomes &amp;quot;km۲&amp;quot;.&lt;br /&gt;
		local en_code = ustring.gsub(unitcode, &#039;%d&#039;, to_en_table)&lt;br /&gt;
		if en_code ~= unitcode then&lt;br /&gt;
			return lookup(parms, en_code, what, utable, fails, depth)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false, { &#039;cvt_unknown&#039;, unitcode }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function valid_number(num)&lt;br /&gt;
	-- Return true if num is a valid number.&lt;br /&gt;
	-- In Scribunto (different from some standard Lua), when expressed as a string,&lt;br /&gt;
	-- overflow or other problems are indicated with text like &amp;quot;inf&amp;quot; or &amp;quot;nan&amp;quot;&lt;br /&gt;
	-- which are regarded as invalid here (each contains &amp;quot;n&amp;quot;).&lt;br /&gt;
	if type(num) == &#039;number&#039; and tostring(num):find(&#039;n&#039;, 1, true) == nil then&lt;br /&gt;
		return true&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hyphenated(name, parts)&lt;br /&gt;
	-- Return a hyphenated form of given name (for adjectival usage).&lt;br /&gt;
	-- The name may be linked and the target of the link must not be changed.&lt;br /&gt;
	-- Hypothetical examples:&lt;br /&gt;
	--   [[long ton|ton]]         →  [[long ton|ton]]          (no change)&lt;br /&gt;
	--   [[tonne|long ton]]       →  [[tonne|long-ton]]&lt;br /&gt;
	--   [[metric ton|long ton]]  →  [[metric ton|long-ton]]&lt;br /&gt;
	--   [[long ton]]             →  [[long ton|long-ton]]&lt;br /&gt;
	-- Input can also have multiple links in a single name like:&lt;br /&gt;
	--   [[United States customary units|U.S.]] [[US gallon|gallon]]&lt;br /&gt;
	--   [[mile]]s per [[United States customary units|U.S.]] [[quart]]&lt;br /&gt;
	--   [[long ton]]s per [[short ton]]&lt;br /&gt;
	-- Assume that links cannot be nested (never like &amp;quot;[[abc[[def]]ghi]]&amp;quot;).&lt;br /&gt;
	-- This uses a simple and efficient procedure that works for most cases.&lt;br /&gt;
	-- Some units (if used) would require more, and can later think about&lt;br /&gt;
	-- adding a method to handle exceptions.&lt;br /&gt;
	-- The procedure is to replace each space with a hyphen, but&lt;br /&gt;
	-- not a space after &#039;)&#039; [for &amp;quot;(pre-1954&amp;amp;nbsp;US) nautical mile&amp;quot;], and&lt;br /&gt;
	-- not spaces immediately before &#039;(&#039; or in &#039;(...)&#039; [for cases like&lt;br /&gt;
	-- &amp;quot;British thermal unit (ISO)&amp;quot; and &amp;quot;Calorie (International Steam Table)&amp;quot;].&lt;br /&gt;
	if name:find(&#039; &#039;, 1, true) then&lt;br /&gt;
		if parts then&lt;br /&gt;
			local pos&lt;br /&gt;
			if name:sub(1, 1) == &#039;(&#039; then&lt;br /&gt;
				pos = name:find(&#039;)&#039;, 1, true)&lt;br /&gt;
				if pos then&lt;br /&gt;
					return name:sub(1, pos+1) .. name:sub(pos+2):gsub(&#039; &#039;, &#039;-&#039;)&lt;br /&gt;
				end&lt;br /&gt;
			elseif name:sub(-1) == &#039;)&#039; then&lt;br /&gt;
				pos = name:find(&#039;(&#039;, 1, true)&lt;br /&gt;
				if pos then&lt;br /&gt;
					return name:sub(1, pos-2):gsub(&#039; &#039;, &#039;-&#039;) .. name:sub(pos-1)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return name:gsub(&#039; &#039;, &#039;-&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		parts = collection()&lt;br /&gt;
		for before, item, after in name:gmatch(&#039;([^[]*)(%[%[[^[]*%]%])([^[]*)&#039;) do&lt;br /&gt;
			if item:find(&#039; &#039;, 1, true) then&lt;br /&gt;
				local prefix&lt;br /&gt;
				local plen = item:find(&#039;|&#039;, 1, true)&lt;br /&gt;
				if plen then&lt;br /&gt;
					prefix = item:sub(1, plen)&lt;br /&gt;
					item = item:sub(plen + 1, -3)&lt;br /&gt;
				else&lt;br /&gt;
					prefix = item:sub(1, -3) .. &#039;|&#039;&lt;br /&gt;
					item = item:sub(3, -3)&lt;br /&gt;
				end&lt;br /&gt;
				item = prefix .. hyphenated(item, parts) .. &#039;]]&#039;&lt;br /&gt;
			end&lt;br /&gt;
			parts:add(before:gsub(&#039; &#039;, &#039;-&#039;) .. item .. after:gsub(&#039; &#039;, &#039;-&#039;))&lt;br /&gt;
		end&lt;br /&gt;
		if parts.n == 0 then&lt;br /&gt;
			-- No link like &amp;quot;[[...]]&amp;quot; was found in the original name.&lt;br /&gt;
			parts:add(hyphenated(name, parts))&lt;br /&gt;
		end&lt;br /&gt;
		return table.concat(parts)&lt;br /&gt;
	end&lt;br /&gt;
	return name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function hyphenated_maybe(parms, want_name, sep, id, inout)&lt;br /&gt;
	-- Return s, f where&lt;br /&gt;
	--   s = id, possibly modified&lt;br /&gt;
	--   f = true if hyphenated&lt;br /&gt;
	-- Possible modifications: hyphenate; prepend &#039;-&#039;; append mid text.&lt;br /&gt;
	if id == nil or id == &#039;&#039; then&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local mid = (inout == (parms.opt_flip and &#039;out&#039; or &#039;in&#039;)) and parms.mid or &#039;&#039;&lt;br /&gt;
	if want_name then&lt;br /&gt;
		if parms.opt_adjectival then&lt;br /&gt;
			return &#039;-&#039; .. hyphenated(id) .. mid, true&lt;br /&gt;
		end&lt;br /&gt;
		if parms.opt_add_s and id:sub(-1) ~= &#039;s&#039; then&lt;br /&gt;
			id = id .. &#039;s&#039;  -- for nowiki&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return sep .. id .. mid&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function use_minus(text)&lt;br /&gt;
	-- Return text with Unicode minus instead of &#039;-&#039;, if present.&lt;br /&gt;
	if text:sub(1, 1) == &#039;-&#039; then&lt;br /&gt;
		return MINUS .. text:sub(2)&lt;br /&gt;
	end&lt;br /&gt;
	return text&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function digit_groups(parms, text, method)&lt;br /&gt;
	-- Return a numbered table of groups of digits (left-to-right, in local language).&lt;br /&gt;
	-- Parameter method is a number or nil:&lt;br /&gt;
	--   3 for 3-digit grouping (default), or&lt;br /&gt;
	--   2 for 3-then-2 grouping (only for digits before decimal mark).&lt;br /&gt;
	local len_right&lt;br /&gt;
	local len_left = text:find(&#039;.&#039;, 1, true)&lt;br /&gt;
	if len_left then&lt;br /&gt;
		len_right = #text - len_left&lt;br /&gt;
		len_left = len_left - 1&lt;br /&gt;
	else&lt;br /&gt;
		len_left = #text&lt;br /&gt;
	end&lt;br /&gt;
	local twos = method == 2 and len_left &amp;gt; 5&lt;br /&gt;
	local groups = collection()&lt;br /&gt;
	local run = len_left&lt;br /&gt;
	local n&lt;br /&gt;
	if run &amp;lt; 4 or (run == 4 and parms.opt_comma5) then&lt;br /&gt;
		if parms.opt_gaps then&lt;br /&gt;
			n = run&lt;br /&gt;
		else&lt;br /&gt;
			n = #text&lt;br /&gt;
		end&lt;br /&gt;
	elseif twos then&lt;br /&gt;
		n = run % 2 == 0 and 1 or 2&lt;br /&gt;
	else&lt;br /&gt;
		n = run % 3 == 0 and 3 or run % 3&lt;br /&gt;
	end&lt;br /&gt;
	while run &amp;gt; 0 do&lt;br /&gt;
		groups:add(n)&lt;br /&gt;
		run = run - n&lt;br /&gt;
		n = (twos and run &amp;gt; 3) and 2 or 3&lt;br /&gt;
	end&lt;br /&gt;
	if len_right then&lt;br /&gt;
		if groups.n == 0 then&lt;br /&gt;
			groups:add(0)&lt;br /&gt;
		end&lt;br /&gt;
		if parms.opt_gaps and len_right &amp;gt; 3 then&lt;br /&gt;
			local want4 = not parms.opt_gaps3  -- true gives no gap before trailing single digit&lt;br /&gt;
			local isfirst = true&lt;br /&gt;
			run = len_right&lt;br /&gt;
			while run &amp;gt; 0 do&lt;br /&gt;
				n = (want4 and run == 4) and 4 or (run &amp;gt; 3 and 3 or run)&lt;br /&gt;
				if isfirst then&lt;br /&gt;
					isfirst = false&lt;br /&gt;
					groups[groups.n] = groups[groups.n] + 1 + n&lt;br /&gt;
				else&lt;br /&gt;
					groups:add(n)&lt;br /&gt;
				end&lt;br /&gt;
				run = run - n&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			groups[groups.n] = groups[groups.n] + 1 + len_right&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local pos = 1&lt;br /&gt;
	for i, length in ipairs(groups) do&lt;br /&gt;
		groups[i] = from_en(text:sub(pos, pos + length - 1))&lt;br /&gt;
		pos = pos + length&lt;br /&gt;
	end&lt;br /&gt;
	return groups&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function with_separator(parms, text)  -- for forward declaration above&lt;br /&gt;
	-- Input text is a number in en digits with optional &#039;.&#039; decimal mark.&lt;br /&gt;
	-- Return an equivalent, formatted for display:&lt;br /&gt;
	--   with a custom decimal mark instead of &#039;.&#039;, if wanted&lt;br /&gt;
	--   with thousand separators inserted, if wanted&lt;br /&gt;
	--   digits in local language&lt;br /&gt;
	-- The given text is like &#039;123&#039; or &#039;123.&#039; or &#039;12345.6789&#039;.&lt;br /&gt;
	-- The text has no sign (caller inserts that later, if necessary).&lt;br /&gt;
	-- When using gaps, they are inserted before and after the decimal mark.&lt;br /&gt;
	-- Separators are inserted only before the decimal mark.&lt;br /&gt;
	-- A trailing dot (as in &#039;123.&#039;) is removed because their use appears to&lt;br /&gt;
	-- be accidental, and such a number should be shown as &#039;123&#039; or &#039;123.0&#039;.&lt;br /&gt;
	-- It is useful for convert to suppress the dot so, for example, &#039;4000.&#039;&lt;br /&gt;
	-- is a simple way of indicating that all the digits are significant.&lt;br /&gt;
	if text:sub(-1) == &#039;.&#039; then&lt;br /&gt;
		text = text:sub(1, -2)&lt;br /&gt;
	end&lt;br /&gt;
	if #text &amp;lt; 4 or parms.opt_nocomma or numsep == &#039;&#039; then&lt;br /&gt;
		return from_en(text)&lt;br /&gt;
	end&lt;br /&gt;
	local groups = digit_groups(parms, text, group_method)&lt;br /&gt;
	if parms.opt_gaps then&lt;br /&gt;
		if groups.n &amp;lt;= 1 then&lt;br /&gt;
			return groups[1] or &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		local nowrap = &#039;&amp;lt;span style=&amp;quot;white-space: nowrap&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		local gap = &#039;&amp;lt;span style=&amp;quot;margin-left: 0.25em&amp;quot;&amp;gt;&#039;&lt;br /&gt;
		local close = &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		return nowrap .. groups[1] .. gap .. table.concat(groups, close .. gap, 2, groups.n) .. close .. close&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat(groups, numsep)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- An input value like 1.23e12 is displayed using scientific notation (1.23×10¹²).&lt;br /&gt;
-- That also makes the output use scientific notation, except for small values.&lt;br /&gt;
-- In addition, very small or very large output values use scientific notation.&lt;br /&gt;
-- Use format(fmtpower, significand, &#039;10&#039;, exponent) where each argument is a string.&lt;br /&gt;
local fmtpower = &#039;%s&amp;lt;span style=&amp;quot;margin:0 .15em 0 .25em&amp;quot;&amp;gt;×&amp;lt;/span&amp;gt;%s&amp;lt;sup&amp;gt;%s&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
&lt;br /&gt;
local function with_exponent(parms, show, exponent)&lt;br /&gt;
	-- Return wikitext to display the implied value in scientific notation.&lt;br /&gt;
	-- Input uses en digits; output uses digits in local language.&lt;br /&gt;
	return format(fmtpower, with_separator(parms, show), from_en(&#039;10&#039;), use_minus(from_en(tostring(exponent))))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_sigfig(value, sigfig)&lt;br /&gt;
	-- Return show, exponent that are equivalent to the result of&lt;br /&gt;
	-- converting the number &#039;value&#039; (where value &amp;gt;= 0) to a string,&lt;br /&gt;
	-- rounded to &#039;sigfig&#039; significant figures.&lt;br /&gt;
	-- The returned items are:&lt;br /&gt;
	--   show: a string of digits; no sign and no dot;&lt;br /&gt;
	--         there is an implied dot before show.&lt;br /&gt;
	--   exponent: a number (an integer) to shift the implied dot.&lt;br /&gt;
	-- Resulting value = tonumber(&#039;.&#039; .. show) * 10^exponent.&lt;br /&gt;
	-- Examples:&lt;br /&gt;
	--   make_sigfig(23.456, 3) returns &#039;235&#039;, 2 (.235 * 10^2).&lt;br /&gt;
	--   make_sigfig(0.0023456, 3) returns &#039;235&#039;, -2 (.235 * 10^-2).&lt;br /&gt;
	--   make_sigfig(0, 3) returns &#039;000&#039;, 1 (.000 * 10^1).&lt;br /&gt;
	if sigfig &amp;lt;= 0 then&lt;br /&gt;
		sigfig = 1&lt;br /&gt;
	elseif sigfig &amp;gt; maxsigfig then&lt;br /&gt;
		sigfig = maxsigfig&lt;br /&gt;
	end&lt;br /&gt;
	if value == 0 then&lt;br /&gt;
		return string.rep(&#039;0&#039;, sigfig), 1&lt;br /&gt;
	end&lt;br /&gt;
	local exp, fracpart = math.modf(log10(value))&lt;br /&gt;
	if fracpart &amp;gt;= 0 then&lt;br /&gt;
		fracpart = fracpart - 1&lt;br /&gt;
		exp = exp + 1&lt;br /&gt;
	end&lt;br /&gt;
	local digits = format(&#039;%.0f&#039;, 10^(fracpart + sigfig))&lt;br /&gt;
	if #digits &amp;gt; sigfig then&lt;br /&gt;
		-- Overflow (for sigfig=3: like 0.9999 rounding to &amp;quot;1000&amp;quot;; need &amp;quot;100&amp;quot;).&lt;br /&gt;
		digits = digits:sub(1, sigfig)&lt;br /&gt;
		exp = exp + 1&lt;br /&gt;
	end&lt;br /&gt;
	assert(#digits == sigfig, &#039;Bug: rounded number has wrong length&#039;)&lt;br /&gt;
	return digits, exp&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Fraction output format.&lt;br /&gt;
local fracfmt = {&lt;br /&gt;
	{ -- Like {{frac}} (fraction slash).&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;frac&amp;quot;&amp;gt;{SIGN}&amp;lt;span class=&amp;quot;num&amp;quot;&amp;gt;{NUM}&amp;lt;/span&amp;gt;&amp;amp;frasl;&amp;lt;span class=&amp;quot;den&amp;quot;&amp;gt;{DEN}&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&#039;,  -- 1/2&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;frac&amp;quot;&amp;gt;{SIGN}{WHOLE}&amp;lt;span class=&amp;quot;sr-only&amp;quot;&amp;gt;+&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;num&amp;quot;&amp;gt;{NUM}&amp;lt;/span&amp;gt;&amp;amp;frasl;&amp;lt;span class=&amp;quot;den&amp;quot;&amp;gt;{DEN}&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&#039;,  -- 1+2/3&lt;br /&gt;
		style = &#039;frac&#039;,&lt;br /&gt;
	},&lt;br /&gt;
	{ -- Like {{sfrac}} (stacked fraction, that is, horizontal bar).&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;sfrac tion&amp;quot;&amp;gt;{SIGN}&amp;lt;span class=&amp;quot;num&amp;quot;&amp;gt;{NUM}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;sr-only&amp;quot;&amp;gt;/&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;den&amp;quot;&amp;gt;{DEN}&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&#039;,  -- 1//2&lt;br /&gt;
		&#039;&amp;lt;span class=&amp;quot;sfrac&amp;quot;&amp;gt;{SIGN}{WHOLE}&amp;lt;span class=&amp;quot;sr-only&amp;quot;&amp;gt;+&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;tion&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;num&amp;quot;&amp;gt;{NUM}&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;sr-only&amp;quot;&amp;gt;/&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;den&amp;quot;&amp;gt;{DEN}&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&#039;,  -- 1+2//3&lt;br /&gt;
		style = &#039;sfrac&#039;,&lt;br /&gt;
	},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
local function format_fraction(parms, inout, negative, wholestr, numstr, denstr, do_spell, style)&lt;br /&gt;
	-- Return wikitext for a fraction, possibly spelled.&lt;br /&gt;
	-- Inputs use en digits and have no sign; output uses digits in local language.&lt;br /&gt;
	local wikitext&lt;br /&gt;
	if not style then&lt;br /&gt;
		style = parms.opt_fraction_horizontal and 2 or 1&lt;br /&gt;
	end&lt;br /&gt;
	if wholestr == &#039;&#039; then&lt;br /&gt;
		wholestr = nil&lt;br /&gt;
	end&lt;br /&gt;
	local substitute = {&lt;br /&gt;
		SIGN = negative and MINUS or &#039;&#039;,&lt;br /&gt;
		WHOLE = wholestr and with_separator(parms, wholestr),&lt;br /&gt;
		NUM = from_en(numstr),&lt;br /&gt;
		DEN = from_en(denstr),&lt;br /&gt;
	}&lt;br /&gt;
	wikitext = fracfmt[style][wholestr and 2 or 1]:gsub(&#039;{(%u+)}&#039;, substitute)&lt;br /&gt;
	if do_spell then&lt;br /&gt;
		if negative then&lt;br /&gt;
			if wholestr then&lt;br /&gt;
				wholestr = &#039;-&#039; .. wholestr&lt;br /&gt;
			else&lt;br /&gt;
				numstr = &#039;-&#039; .. numstr&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local s = spell_number(parms, inout, wholestr, numstr, denstr)&lt;br /&gt;
		if s then&lt;br /&gt;
			return s&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	add_style(parms, fracfmt[style].style)&lt;br /&gt;
	return wikitext&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function format_number(parms, show, exponent, isnegative)&lt;br /&gt;
	-- Parameter show is a string or a table containing strings.&lt;br /&gt;
	-- Each string is a formatted number in en digits and optional &#039;.&#039; decimal mark.&lt;br /&gt;
	-- A table represents a fraction: integer, numerator, denominator;&lt;br /&gt;
	-- if a table is given, exponent must be nil.&lt;br /&gt;
	-- Return t where t is a table with fields:&lt;br /&gt;
	--   show = wikitext formatted to display implied value&lt;br /&gt;
	--          (digits in local language)&lt;br /&gt;
	--   is_scientific = true if show uses scientific notation&lt;br /&gt;
	--   clean = unformatted show (possibly adjusted and with inserted &#039;.&#039;)&lt;br /&gt;
	--          (en digits)&lt;br /&gt;
	--   sign = &#039;&#039; or MINUS&lt;br /&gt;
	--   exponent = exponent (possibly adjusted)&lt;br /&gt;
	-- The clean and exponent fields can be used to calculate the&lt;br /&gt;
	-- rounded absolute value, if needed.&lt;br /&gt;
	--&lt;br /&gt;
	-- The value implied by the arguments is found from:&lt;br /&gt;
	--   exponent is nil; and&lt;br /&gt;
	--   show is a string of digits (no sign), with an optional dot;&lt;br /&gt;
	--   show = &#039;123.4&#039; is value 123.4, &#039;1234&#039; is value 1234.0;&lt;br /&gt;
	-- or:&lt;br /&gt;
	--   exponent is an integer indicating where dot should be;&lt;br /&gt;
	--   show is a string of digits (no sign and no dot);&lt;br /&gt;
	--   there is an implied dot before show;&lt;br /&gt;
	--   show does not start with &#039;0&#039;;&lt;br /&gt;
	--   show = &#039;1234&#039;, exponent = 3 is value 0.1234*10^3 = 123.4.&lt;br /&gt;
	--&lt;br /&gt;
	-- The formatted result:&lt;br /&gt;
	-- * Is for an output value and is spelled if wanted and possible.&lt;br /&gt;
	-- * Includes a Unicode minus if isnegative and not spelled.&lt;br /&gt;
	-- * Uses a custom decimal mark, if wanted.&lt;br /&gt;
	-- * Has digits grouped where necessary, if wanted.&lt;br /&gt;
	-- * Uses scientific notation if requested, or for very small or large values&lt;br /&gt;
	--   (which forces result to not be spelled).&lt;br /&gt;
	-- * Has no more than maxsigfig significant digits&lt;br /&gt;
	--   (same as old template and {{#expr}}).&lt;br /&gt;
	local xhi, xlo  -- these control when scientific notation (exponent) is used&lt;br /&gt;
	if parms.opt_scientific then&lt;br /&gt;
		xhi, xlo = 4, 2  -- default for output if input uses e-notation&lt;br /&gt;
	elseif parms.opt_scientific_always then&lt;br /&gt;
		xhi, xlo = 0, 0  -- always use scientific notation (experimental)&lt;br /&gt;
	else&lt;br /&gt;
		xhi, xlo = 10, 4  -- default&lt;br /&gt;
	end&lt;br /&gt;
	local sign = isnegative and MINUS or &#039;&#039;&lt;br /&gt;
	local maxlen = maxsigfig&lt;br /&gt;
	local tfrac&lt;br /&gt;
	if type(show) == &#039;table&#039; then&lt;br /&gt;
		tfrac = show&lt;br /&gt;
		show = tfrac.wholestr&lt;br /&gt;
		assert(exponent == nil, &#039;Bug: exponent given with fraction&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	if not tfrac and not exponent then&lt;br /&gt;
		local integer, dot, decimals = show:match(&#039;^(%d*)(%.?)(.*)&#039;)&lt;br /&gt;
		if integer == &#039;0&#039; or integer == &#039;&#039; then&lt;br /&gt;
			local zeros, figs = decimals:match(&#039;^(0*)([^0]?.*)&#039;)&lt;br /&gt;
			if #figs == 0 then&lt;br /&gt;
				if #zeros &amp;gt; maxlen then&lt;br /&gt;
					show = &#039;0.&#039; .. zeros:sub(1, maxlen)&lt;br /&gt;
				end&lt;br /&gt;
			elseif #zeros &amp;gt;= xlo then&lt;br /&gt;
				show = figs&lt;br /&gt;
				exponent = -#zeros&lt;br /&gt;
			elseif #figs &amp;gt; maxlen then&lt;br /&gt;
				show = &#039;0.&#039; .. zeros .. figs:sub(1, maxlen)&lt;br /&gt;
			end&lt;br /&gt;
		elseif #integer &amp;gt;= xhi then&lt;br /&gt;
			show = integer .. decimals&lt;br /&gt;
			exponent = #integer&lt;br /&gt;
		else&lt;br /&gt;
			maxlen = maxlen + #dot&lt;br /&gt;
			if #show &amp;gt; maxlen then&lt;br /&gt;
				show = show:sub(1, maxlen)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if exponent then&lt;br /&gt;
		local function zeros(n)&lt;br /&gt;
			return string.rep(&#039;0&#039;, n)&lt;br /&gt;
		end&lt;br /&gt;
		if #show &amp;gt; maxlen then&lt;br /&gt;
			show = show:sub(1, maxlen)&lt;br /&gt;
		end&lt;br /&gt;
		if exponent &amp;gt; xhi or exponent &amp;lt;= -xlo or (exponent == xhi and show ~= &#039;1&#039; .. zeros(xhi - 1)) then&lt;br /&gt;
			-- When xhi, xlo = 10, 4 (the default), scientific notation is used if the&lt;br /&gt;
			-- rounded value satisfies: value &amp;gt;= 1e9 or value &amp;lt; 1e-4 (1e9 = 0.1e10),&lt;br /&gt;
			-- except if show is &#039;1000000000&#039; (1e9), for example:&lt;br /&gt;
			-- {{convert|1000000000|m|m|sigfig=10}} → 1,000,000,000 metres (1,000,000,000 m)&lt;br /&gt;
			local significand&lt;br /&gt;
			if #show &amp;gt; 1 then&lt;br /&gt;
				significand = show:sub(1, 1) .. &#039;.&#039; .. show:sub(2)&lt;br /&gt;
			else&lt;br /&gt;
				significand = show&lt;br /&gt;
			end&lt;br /&gt;
			return {&lt;br /&gt;
				clean = &#039;.&#039; .. show,&lt;br /&gt;
				exponent = exponent,&lt;br /&gt;
				sign = sign,&lt;br /&gt;
				show = sign .. with_exponent(parms, significand, exponent-1),&lt;br /&gt;
				is_scientific = true,&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
		if exponent &amp;gt;= #show then&lt;br /&gt;
			show = show .. zeros(exponent - #show)  -- result has no dot&lt;br /&gt;
		elseif exponent &amp;lt;= 0 then&lt;br /&gt;
			show = &#039;0.&#039; .. zeros(-exponent) .. show&lt;br /&gt;
		else&lt;br /&gt;
			show = show:sub(1, exponent) .. &#039;.&#039; .. show:sub(exponent+1)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local formatted_show&lt;br /&gt;
	if tfrac then&lt;br /&gt;
		show = tostring(tfrac.value)  -- to set clean in returned table&lt;br /&gt;
		formatted_show = format_fraction(parms, &#039;out&#039;, isnegative, tfrac.wholestr, tfrac.numstr, tfrac.denstr, parms.opt_spell_out)&lt;br /&gt;
	else&lt;br /&gt;
		if isnegative and show:match(&#039;^0.?0*$&#039;) then&lt;br /&gt;
			sign = &#039;&#039;  -- don&#039;t show minus if result is negative but rounds to zero&lt;br /&gt;
		end&lt;br /&gt;
		formatted_show = sign .. with_separator(parms, show)&lt;br /&gt;
		if parms.opt_spell_out then&lt;br /&gt;
			formatted_show = spell_number(parms, &#039;out&#039;, sign .. show) or formatted_show&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return {&lt;br /&gt;
		clean = show,&lt;br /&gt;
		sign = sign,&lt;br /&gt;
		show = formatted_show,&lt;br /&gt;
		is_scientific = false,  -- to avoid calling __index&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function extract_fraction(parms, text, negative)&lt;br /&gt;
	-- If text represents a fraction, return&lt;br /&gt;
	--   value, altvalue, show, denominator&lt;br /&gt;
	-- where&lt;br /&gt;
	--   value is a number (value of the fraction in argument text)&lt;br /&gt;
	--   altvalue is an alternate interpretation of any fraction for the hands&lt;br /&gt;
	--        unit where &amp;quot;12.1+3/4&amp;quot; means 12 hands 1.75 inches&lt;br /&gt;
	--   show is a string (formatted text for display of an input value,&lt;br /&gt;
	--        and is spelled if wanted and possible)&lt;br /&gt;
	--   denominator is value of the denominator in the fraction&lt;br /&gt;
	-- Otherwise, return nil.&lt;br /&gt;
	-- Input uses en digits and &#039;.&#039; decimal mark (input has been translated).&lt;br /&gt;
	-- Output uses digits in local language and local decimal mark, if any.&lt;br /&gt;
	------------------------------------------------------------------------&lt;br /&gt;
	-- Originally this function accepted x+y/z where x, y, z were any valid&lt;br /&gt;
	-- numbers, possibly with a sign. For example &#039;1.23e+2+1.2/2.4&#039; = 123.5,&lt;br /&gt;
	-- and &#039;2-3/8&#039; = 1.625. However, such usages were found to be errors or&lt;br /&gt;
	-- misunderstandings, so since August 2014 the following restrictions apply:&lt;br /&gt;
	--   x (if present) is an integer or has a single digit after decimal mark&lt;br /&gt;
	--   y and z are unsigned integers&lt;br /&gt;
	--   e-notation is not accepted&lt;br /&gt;
	-- The overall number can start with &#039;+&#039; or &#039;-&#039; (so &#039;12+3/4&#039; and &#039;+12+3/4&#039;&lt;br /&gt;
	-- and &#039;-12-3/4&#039; are valid).&lt;br /&gt;
	-- Any leading negative sign is removed by the caller, so only inputs&lt;br /&gt;
	-- like the following are accepted here (may have whitespace):&lt;br /&gt;
	--   negative = false       false        true (there was a leading &#039;-&#039;)&lt;br /&gt;
	--   text     = &#039;2/3&#039;       &#039;+2/3&#039;       &#039;2/3&#039;&lt;br /&gt;
	--   text     = &#039;1+2/3&#039;     &#039;+1+2/3&#039;     &#039;1-2/3&#039;&lt;br /&gt;
	--   text     = &#039;12.3+1/2&#039;  &#039;+12.3+1/2&#039;  &#039;12.3-1/2&#039;&lt;br /&gt;
	-- Values like &#039;12.3+1/2&#039; are accepted, but are intended only for use&lt;br /&gt;
	-- with the hands unit (not worth adding code to enforce that).&lt;br /&gt;
	------------------------------------------------------------------------&lt;br /&gt;
	local leading_plus, prefix, numstr, slashes, denstr =&lt;br /&gt;
		text:match(&#039;^%s*(%+?)%s*(.-)%s*(%d+)%s*(/+)%s*(%d+)%s*$&#039;)&lt;br /&gt;
	if not leading_plus then&lt;br /&gt;
		-- Accept a single U+2044 fraction slash because that may be pasted.&lt;br /&gt;
		leading_plus, prefix, numstr, denstr =&lt;br /&gt;
			text:match(&#039;^%s*(%+?)%s*(.-)%s*(%d+)%s*⁄%s*(%d+)%s*$&#039;)&lt;br /&gt;
		slashes = &#039;/&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local numerator = tonumber(numstr)&lt;br /&gt;
	local denominator = tonumber(denstr)&lt;br /&gt;
	if numerator == nil or denominator == nil or (negative and leading_plus ~= &#039;&#039;) then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	local whole, wholestr&lt;br /&gt;
	if prefix == &#039;&#039; then&lt;br /&gt;
		wholestr = &#039;&#039;&lt;br /&gt;
		whole = 0&lt;br /&gt;
	else&lt;br /&gt;
		-- Any prefix must be like &#039;12+&#039; or &#039;12-&#039; (whole number and fraction sign);&lt;br /&gt;
		-- &#039;12.3+&#039; and &#039;12.3-&#039; are also accepted (single digit after decimal point)&lt;br /&gt;
		-- because &#039;12.3+1/2 hands&#039; is valid (12 hands 3½ inches).&lt;br /&gt;
		local num1, num2, frac_sign = prefix:match(&#039;^(%d+)(%.?%d?)%s*([+%-])$&#039;)&lt;br /&gt;
		if num1 == nil then return nil end&lt;br /&gt;
		if num2 == &#039;&#039; then  -- num2 must be &#039;&#039; or like &#039;.1&#039; but not &#039;.&#039; or &#039;.12&#039;&lt;br /&gt;
			wholestr = num1&lt;br /&gt;
		else&lt;br /&gt;
			if #num2 ~= 2 then return nil end&lt;br /&gt;
			wholestr = num1 .. num2&lt;br /&gt;
		end&lt;br /&gt;
		if frac_sign ~= (negative and &#039;-&#039; or &#039;+&#039;) then return nil end&lt;br /&gt;
		whole = tonumber(wholestr)&lt;br /&gt;
		if whole == nil then return nil end&lt;br /&gt;
	end&lt;br /&gt;
	local value = whole + numerator / denominator&lt;br /&gt;
	if not valid_number(value) then return nil end&lt;br /&gt;
	local altvalue = whole + numerator / (denominator * 10)&lt;br /&gt;
	local style = #slashes  -- kludge: 1 or 2 slashes can be used to select style&lt;br /&gt;
	if style &amp;gt; 2 then style = 2 end&lt;br /&gt;
	local wikitext = format_fraction(parms, &#039;in&#039;, negative, leading_plus .. wholestr, numstr, denstr, parms.opt_spell_in, style)&lt;br /&gt;
	return value, altvalue, wikitext, denominator&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function extract_number(parms, text, another, no_fraction)&lt;br /&gt;
	-- Return true, info if can extract a number from text,&lt;br /&gt;
	-- where info is a table with the result,&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	-- Input can use en digits or digits in local language and can&lt;br /&gt;
	-- have references at the end. Accepting references is intended&lt;br /&gt;
	-- for use in infoboxes with a field for a value passed to convert.&lt;br /&gt;
	-- Parameter another = true if the expected value is not the first.&lt;br /&gt;
	-- Before processing, the input text is cleaned:&lt;br /&gt;
	-- * Any thousand separators (valid or not) are removed.&lt;br /&gt;
	-- * Any sign is replaced with &#039;-&#039; (if negative) or &#039;&#039; (otherwise).&lt;br /&gt;
	--   That replaces Unicode minus with &#039;-&#039;.&lt;br /&gt;
	-- If successful, the returned info table contains named fields:&lt;br /&gt;
	--   value    = a valid number&lt;br /&gt;
	--   altvalue = a valid number, usually same as value but different&lt;br /&gt;
	--              if fraction used (for hands unit)&lt;br /&gt;
	--   singular = true if value is 1 or -1 (to use singular form of units)&lt;br /&gt;
	--   clean    = cleaned text with any separators and sign removed&lt;br /&gt;
	--              (en digits and &#039;.&#039; decimal mark)&lt;br /&gt;
	--   show     = text formatted for output, possibly with ref strip markers&lt;br /&gt;
	--              (digits in local language and custom decimal mark)&lt;br /&gt;
	-- The resulting show:&lt;br /&gt;
	-- * Is for an input value and is spelled if wanted and possible.&lt;br /&gt;
	-- * Has a rounded value, if wanted.&lt;br /&gt;
	-- * Has digits grouped where necessary, if wanted.&lt;br /&gt;
	-- * If negative, a Unicode minus is used; otherwise the sign is&lt;br /&gt;
	--   &#039;+&#039; (if the input text used &#039;+&#039;), or is &#039;&#039; (if no sign in input).&lt;br /&gt;
	text = strip(text or &#039;&#039;)&lt;br /&gt;
	local reference&lt;br /&gt;
	local pos = text:find(&#039;\127&#039;, 1, true)&lt;br /&gt;
	if pos then&lt;br /&gt;
		local before = text:sub(1, pos - 1)&lt;br /&gt;
		local remainder = text:sub(pos)&lt;br /&gt;
		local refs = {}&lt;br /&gt;
		while #remainder &amp;gt; 0 do&lt;br /&gt;
			local ref, spaces&lt;br /&gt;
			ref, spaces, remainder = remainder:match(&#039;^(\127[^\127]*UNIQ[^\127]*%-ref[^\127]*\127)(%s*)(.*)&#039;)&lt;br /&gt;
			if ref then&lt;br /&gt;
				table.insert(refs, ref)&lt;br /&gt;
			else&lt;br /&gt;
				refs = {}&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if #refs &amp;gt; 0 then&lt;br /&gt;
			text = strip(before)&lt;br /&gt;
			reference = table.concat(refs)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local clean = to_en(text, parms)&lt;br /&gt;
	if clean == &#039;&#039; then&lt;br /&gt;
		return false, { another and &#039;cvt_no_num2&#039; or &#039;cvt_no_num&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local isnegative, propersign = false, &#039;&#039;  -- most common case&lt;br /&gt;
	local singular, show, denominator&lt;br /&gt;
	local value = tonumber(clean)&lt;br /&gt;
	local altvalue&lt;br /&gt;
	if value then&lt;br /&gt;
		local sign = clean:sub(1, 1)&lt;br /&gt;
		if sign == &#039;+&#039; or sign == &#039;-&#039; then&lt;br /&gt;
			propersign = (sign == &#039;+&#039;) and &#039;+&#039; or MINUS&lt;br /&gt;
			clean = clean:sub(2)&lt;br /&gt;
		end&lt;br /&gt;
		if value &amp;lt; 0 then&lt;br /&gt;
			isnegative = true&lt;br /&gt;
			value = -value&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		local valstr&lt;br /&gt;
		for _, prefix in ipairs({ &#039;-&#039;, MINUS, &#039;&amp;amp;minus;&#039; }) do&lt;br /&gt;
			-- Including &#039;-&#039; sets isnegative in case input is a fraction like &#039;-2-3/4&#039;.&lt;br /&gt;
			local plen = #prefix&lt;br /&gt;
			if clean:sub(1, plen) == prefix then&lt;br /&gt;
				valstr = clean:sub(plen + 1)&lt;br /&gt;
				if valstr:match(&#039;^%s&#039;) then  -- &amp;quot;- 1&amp;quot; is invalid but &amp;quot;-1 - 1/2&amp;quot; is ok&lt;br /&gt;
					return false, { &#039;cvt_bad_num&#039;, text }&lt;br /&gt;
				end&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if valstr then&lt;br /&gt;
			isnegative = true&lt;br /&gt;
			propersign = MINUS&lt;br /&gt;
			clean = valstr&lt;br /&gt;
			value = tonumber(clean)&lt;br /&gt;
		end&lt;br /&gt;
		if value == nil then&lt;br /&gt;
			if not no_fraction then&lt;br /&gt;
				value, altvalue, show, denominator = extract_fraction(parms, clean, isnegative)&lt;br /&gt;
			end&lt;br /&gt;
			if value == nil then&lt;br /&gt;
				return false, { &#039;cvt_bad_num&#039;, text }&lt;br /&gt;
			end&lt;br /&gt;
			if value &amp;lt;= 1 then&lt;br /&gt;
				singular = true  -- for example, &amp;quot;½ mile&amp;quot; or &amp;quot;one half mile&amp;quot; (singular unit)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not valid_number(value) then  -- for example, &amp;quot;1e310&amp;quot; may overflow&lt;br /&gt;
		return false, { &#039;cvt_invalid_num&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	if show == nil then&lt;br /&gt;
		-- clean is a non-empty string with no spaces, and does not represent a fraction,&lt;br /&gt;
		-- and value = tonumber(clean) is a number &amp;gt;= 0.&lt;br /&gt;
		-- If the input uses e-notation, show will be displayed using a power of ten, but&lt;br /&gt;
		-- we use the number as given so it might not be normalized scientific notation.&lt;br /&gt;
		-- The input value is spelled if specified so any e-notation is ignored;&lt;br /&gt;
		-- that allows input like 2e6 to be spelled as &amp;quot;two million&amp;quot; which works&lt;br /&gt;
		-- because the spell module converts &#039;2e6&#039; to &#039;2000000&#039; before spelling.&lt;br /&gt;
		local function rounded(value, default, exponent)&lt;br /&gt;
			local precision = parms.opt_ri&lt;br /&gt;
			if precision then&lt;br /&gt;
				local fmt = &#039;%.&#039; .. format(&#039;%d&#039;, precision) .. &#039;f&#039;&lt;br /&gt;
				local result = fmt:format(tonumber(value) + 2e-14)  -- fudge for some common cases of bad rounding&lt;br /&gt;
				if not exponent then&lt;br /&gt;
					singular = (tonumber(result) == 1)&lt;br /&gt;
				end&lt;br /&gt;
				return result&lt;br /&gt;
			end&lt;br /&gt;
			return default&lt;br /&gt;
		end&lt;br /&gt;
		singular = (value == 1)&lt;br /&gt;
		local scientific&lt;br /&gt;
		local significand, exponent = clean:match(&#039;^([%d.]+)[Ee]([+%-]?%d+)&#039;)&lt;br /&gt;
		if significand then&lt;br /&gt;
			show = with_exponent(parms, rounded(significand, significand, exponent), exponent)&lt;br /&gt;
			scientific = true&lt;br /&gt;
		else&lt;br /&gt;
			show = with_separator(parms, rounded(value, clean))&lt;br /&gt;
		end&lt;br /&gt;
		show = propersign .. show&lt;br /&gt;
		if parms.opt_spell_in then&lt;br /&gt;
			show = spell_number(parms, &#039;in&#039;, propersign .. rounded(value, clean)) or show&lt;br /&gt;
			scientific = false&lt;br /&gt;
		end&lt;br /&gt;
		if scientific then&lt;br /&gt;
			parms.opt_scientific = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if isnegative and (value ~= 0) then&lt;br /&gt;
		value = -value&lt;br /&gt;
		altvalue = -(altvalue or value)&lt;br /&gt;
	end&lt;br /&gt;
	return true, {&lt;br /&gt;
		value = value,&lt;br /&gt;
		altvalue = altvalue or value,&lt;br /&gt;
		singular = singular,&lt;br /&gt;
		clean = clean,&lt;br /&gt;
		show = show .. (reference or &#039;&#039;),&lt;br /&gt;
		denominator = denominator,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_number(text)&lt;br /&gt;
	-- Return v, f where:&lt;br /&gt;
	--   v = nil (text is not a number)&lt;br /&gt;
	-- or&lt;br /&gt;
	--   v = value of text (text is a number)&lt;br /&gt;
	--   f = true if value is an integer&lt;br /&gt;
	-- Input can use en digits or digits in local language or separators,&lt;br /&gt;
	-- but no Unicode minus, and no fraction.&lt;br /&gt;
	if text then&lt;br /&gt;
		local number = tonumber(to_en(text))&lt;br /&gt;
		if number then&lt;br /&gt;
			local _, fracpart = math.modf(number)&lt;br /&gt;
			return number, (fracpart == 0)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function gcd(a, b)&lt;br /&gt;
	-- Return the greatest common denominator for the given values,&lt;br /&gt;
	-- which are known to be positive integers.&lt;br /&gt;
	if a &amp;gt; b then&lt;br /&gt;
		a, b = b, a&lt;br /&gt;
	end&lt;br /&gt;
	if a &amp;lt;= 0 then&lt;br /&gt;
		return b&lt;br /&gt;
	end&lt;br /&gt;
	local r = b % a&lt;br /&gt;
	if r &amp;lt;= 0 then&lt;br /&gt;
		return a&lt;br /&gt;
	end&lt;br /&gt;
	if r == 1 then&lt;br /&gt;
		return 1&lt;br /&gt;
	end&lt;br /&gt;
	return gcd(r, a)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function fraction_table(value, denominator)&lt;br /&gt;
	-- Return value as a string or a table:&lt;br /&gt;
	-- * If result is a string, there is no fraction, and the result&lt;br /&gt;
	--   is value formatted as a string of en digits.&lt;br /&gt;
	-- * If result is a table, it represents a fraction with named fields:&lt;br /&gt;
	--   wholestr, numstr, denstr (strings of en digits for integer, numerator, denominator).&lt;br /&gt;
	-- The result is rounded to the nearest multiple of (1/denominator).&lt;br /&gt;
	-- If the multiple is zero, no fraction is included.&lt;br /&gt;
	-- No fraction is included if value is very large as the fraction would&lt;br /&gt;
	-- be unhelpful, particularly if scientific notation is required.&lt;br /&gt;
	-- Input value is a non-negative number.&lt;br /&gt;
	-- Input denominator is a positive integer for the desired fraction.&lt;br /&gt;
	if value &amp;lt;= 0 then&lt;br /&gt;
		return &#039;0&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if denominator &amp;lt;= 0 or value &amp;gt; 1e8 then&lt;br /&gt;
		return format(&#039;%.2f&#039;, value)&lt;br /&gt;
	end&lt;br /&gt;
	local integer, decimals = math.modf(value)&lt;br /&gt;
	local numerator = floor((decimals * denominator) +&lt;br /&gt;
		0.5 + 2e-14)  -- add fudge for some common cases of bad rounding&lt;br /&gt;
	if numerator &amp;gt;= denominator then&lt;br /&gt;
		integer = integer + 1&lt;br /&gt;
		numerator = 0&lt;br /&gt;
	end&lt;br /&gt;
	local wholestr = tostring(integer)&lt;br /&gt;
	if numerator &amp;gt; 0 then&lt;br /&gt;
		local div = gcd(numerator, denominator)&lt;br /&gt;
		if div &amp;gt; 1 then&lt;br /&gt;
			numerator = numerator / div&lt;br /&gt;
			denominator = denominator / div&lt;br /&gt;
		end&lt;br /&gt;
		return {&lt;br /&gt;
			wholestr = (integer &amp;gt; 0) and wholestr or &#039;&#039;,&lt;br /&gt;
			numstr = tostring(numerator),&lt;br /&gt;
			denstr = tostring(denominator),&lt;br /&gt;
			value = value,&lt;br /&gt;
		}&lt;br /&gt;
	end&lt;br /&gt;
	return wholestr&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function preunits(count, preunit1, preunit2)&lt;br /&gt;
	-- If count is 1:&lt;br /&gt;
	--     ignore preunit2&lt;br /&gt;
	--     return p1&lt;br /&gt;
	-- else:&lt;br /&gt;
	--     preunit1 is used for preunit2 if the latter is empty&lt;br /&gt;
	--     return p1, p2&lt;br /&gt;
	-- where:&lt;br /&gt;
	--     p1 is text to insert before the input unit&lt;br /&gt;
	--     p2 is text to insert before the output unit&lt;br /&gt;
	--     p1 or p2 may be nil to mean &amp;quot;no preunit&amp;quot;&lt;br /&gt;
	-- Using &#039;+&#039; gives output like &amp;quot;5+ feet&amp;quot; (no space before, but space after).&lt;br /&gt;
	local function withspace(text, wantboth)&lt;br /&gt;
		-- Return text with space before and, if wantboth, after.&lt;br /&gt;
		-- However, no space is added if there is a space or &#039;&amp;amp;nbsp;&#039; or &#039;-&#039;&lt;br /&gt;
		-- at that position (&#039;-&#039; is for adjectival text).&lt;br /&gt;
		-- There is also no space if text starts with &#039;&amp;amp;&#039;&lt;br /&gt;
		-- (e.g. &#039;&amp;amp;deg;&#039; would display a degree symbol with no preceding space).&lt;br /&gt;
		local char = text:sub(1, 1)&lt;br /&gt;
		if char == &#039;&amp;amp;&#039; then&lt;br /&gt;
			return text  -- an html entity can be used to specify the exact display&lt;br /&gt;
		end&lt;br /&gt;
		if not (char == &#039; &#039; or char == &#039;-&#039; or char == &#039;+&#039;) then&lt;br /&gt;
			text = &#039; &#039; .. text&lt;br /&gt;
		end&lt;br /&gt;
		if wantboth then&lt;br /&gt;
			char = text:sub(-1, -1)&lt;br /&gt;
			if not (char == &#039; &#039; or char == &#039;-&#039; or text:sub(-6, -1) == &#039;&amp;amp;nbsp;&#039;) then&lt;br /&gt;
				text = text .. &#039; &#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return text&lt;br /&gt;
	end&lt;br /&gt;
	local PLUS = &#039;+ &#039;&lt;br /&gt;
	preunit1 = preunit1 or &#039;&#039;&lt;br /&gt;
	local trim1 = strip(preunit1)&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		if trim1 == &#039;&#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		if trim1 == &#039;+&#039; then&lt;br /&gt;
			return PLUS&lt;br /&gt;
		end&lt;br /&gt;
		return withspace(preunit1, true)&lt;br /&gt;
	end&lt;br /&gt;
	preunit1 = withspace(preunit1)&lt;br /&gt;
	preunit2 = preunit2 or &#039;&#039;&lt;br /&gt;
	local trim2 = strip(preunit2)&lt;br /&gt;
	if trim1 == &#039;+&#039; then&lt;br /&gt;
		if trim2 == &#039;&#039; or trim2 == &#039;+&#039; then&lt;br /&gt;
			return PLUS, PLUS&lt;br /&gt;
		end&lt;br /&gt;
		preunit1 = PLUS&lt;br /&gt;
	end&lt;br /&gt;
	if trim2 == &#039;&#039; then&lt;br /&gt;
		if trim1 == &#039;&#039; then&lt;br /&gt;
			return nil, nil&lt;br /&gt;
		end&lt;br /&gt;
		preunit2 = preunit1&lt;br /&gt;
	elseif trim2 == &#039;+&#039; then&lt;br /&gt;
		preunit2 = PLUS&lt;br /&gt;
	elseif trim2 == &#039;&amp;amp;#32;&#039; then  -- trick to make preunit2 empty&lt;br /&gt;
		preunit2 = nil&lt;br /&gt;
	else&lt;br /&gt;
		preunit2 = withspace(preunit2)&lt;br /&gt;
	end&lt;br /&gt;
	return preunit1, preunit2&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function range_text(range, want_name, parms, before, after, inout, options)&lt;br /&gt;
	-- Return before .. rtext .. after&lt;br /&gt;
	-- where rtext is the text that separates two values in a range.&lt;br /&gt;
	local rtext, adj_text, exception&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	if type(range) == &#039;table&#039; then&lt;br /&gt;
		-- Table must specify range text for (&#039;off&#039; and &#039;on&#039;) or (&#039;input&#039; and &#039;output&#039;),&lt;br /&gt;
		-- and may specify range text for &#039;adj=on&#039;,&lt;br /&gt;
		-- and may specify exception = true.&lt;br /&gt;
		rtext = range[want_name and &#039;off&#039; or &#039;on&#039;] or&lt;br /&gt;
				range[((inout == &#039;in&#039;) == (parms.opt_flip == true)) and &#039;output&#039; or &#039;input&#039;]&lt;br /&gt;
		adj_text = range[&#039;adj&#039;]&lt;br /&gt;
		exception = range[&#039;exception&#039;]&lt;br /&gt;
	else&lt;br /&gt;
		rtext = range&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_adjectival then&lt;br /&gt;
		if want_name or (exception and parms.abbr_org == &#039;on&#039;) then&lt;br /&gt;
			rtext = adj_text or rtext:gsub(&#039; &#039;, &#039;-&#039;):gsub(&#039;&amp;amp;nbsp;&#039;, &#039;-&#039;)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if rtext == &#039;–&#039; and (options.spaced or after:sub(1, #MINUS) == MINUS) then&lt;br /&gt;
		rtext = &#039;&amp;amp;nbsp;– &#039;&lt;br /&gt;
	end&lt;br /&gt;
	return before .. rtext .. after&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_composite(parms, iparm, in_unit_table)&lt;br /&gt;
	-- Look for a composite input unit. For example, {{convert|1|yd|2|ft|3|in}}&lt;br /&gt;
	-- would result in a call to this function with&lt;br /&gt;
	--   iparm = 3 (parms[iparm] = &amp;quot;2&amp;quot;, just after the first unit)&lt;br /&gt;
	--   in_unit_table = (unit table for &amp;quot;yd&amp;quot;; contains value 1 for number of yards)&lt;br /&gt;
	-- Return true, iparm, unit where&lt;br /&gt;
	--   iparm = index just after the composite units (7 in above example)&lt;br /&gt;
	--   unit = composite unit table holding all input units,&lt;br /&gt;
	-- or return true if no composite unit is present in parms,&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	local default, subinfo&lt;br /&gt;
	local composite_units, count = { in_unit_table }, 1&lt;br /&gt;
	local fixups = {}&lt;br /&gt;
	local total = in_unit_table.valinfo[1].value&lt;br /&gt;
	local subunit = in_unit_table&lt;br /&gt;
	while subunit.subdivs do  -- subdivs is nil or a table of allowed subdivisions&lt;br /&gt;
		local subcode = strip(parms[iparm+1])&lt;br /&gt;
		local subdiv = subunit.subdivs[subcode] or subunit.subdivs[(all_units[subcode] or {}).target]&lt;br /&gt;
		if not subdiv then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		local success&lt;br /&gt;
		success, subunit = lookup(parms, subcode, &#039;no_combination&#039;)&lt;br /&gt;
		if not success then return false, subunit end  -- should never occur&lt;br /&gt;
		success, subinfo = extract_number(parms, parms[iparm])&lt;br /&gt;
		if not success then return false, subinfo end&lt;br /&gt;
		iparm = iparm + 2&lt;br /&gt;
		subunit.inout = &#039;in&#039;&lt;br /&gt;
		subunit.valinfo = { subinfo }&lt;br /&gt;
		-- Recalculate total as a number of subdivisions.&lt;br /&gt;
		-- subdiv[1] = number of subdivisions per previous unit (integer &amp;gt; 1).&lt;br /&gt;
		total = total * subdiv[1] + subinfo.value&lt;br /&gt;
		if not default then  -- set by the first subdiv with a default defined&lt;br /&gt;
			default = subdiv.default&lt;br /&gt;
		end&lt;br /&gt;
		count = count + 1&lt;br /&gt;
		composite_units[count] = subunit&lt;br /&gt;
		if subdiv.unit or subdiv.name then&lt;br /&gt;
			fixups[count] = { unit = subdiv.unit, name = subdiv.name, valinfo = subunit.valinfo }&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if count == 1 then&lt;br /&gt;
		return true  -- no error and no composite unit&lt;br /&gt;
	end&lt;br /&gt;
	for i, fixup in pairs(fixups) do&lt;br /&gt;
		local unit = fixup.unit&lt;br /&gt;
		local name = fixup.name&lt;br /&gt;
		if not unit or (count &amp;gt; 2 and name) then&lt;br /&gt;
			composite_units[i].fixed_name = name&lt;br /&gt;
		else&lt;br /&gt;
			local success, alternate = lookup(parms, unit, &#039;no_combination&#039;)&lt;br /&gt;
			if not success then return false, alternate end  -- should never occur&lt;br /&gt;
			alternate.inout = &#039;in&#039;&lt;br /&gt;
			alternate.valinfo = fixup.valinfo&lt;br /&gt;
			composite_units[i] = alternate&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true, iparm, {&lt;br /&gt;
		utype = in_unit_table.utype,&lt;br /&gt;
		scale = subunit.scale,  -- scale of last (least significant) unit&lt;br /&gt;
		valinfo = { { value = total, clean = subinfo.clean, denominator = subinfo.denominator } },&lt;br /&gt;
		composite = composite_units,&lt;br /&gt;
		default = default or in_unit_table.default&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function translate_parms(parms, kv_pairs)&lt;br /&gt;
	-- Update fields in parms by translating each key:value in kv_pairs to terms&lt;br /&gt;
	-- used by this module (may involve translating from local language to English).&lt;br /&gt;
	-- Also, checks are performed which may display warnings, if enabled.&lt;br /&gt;
	-- Return true if successful or return false, t where t is an error message table.&lt;br /&gt;
	currency_text = nil  -- local testing can hold module in memory; must clear globals&lt;br /&gt;
	if kv_pairs.adj and kv_pairs.sing then&lt;br /&gt;
		-- For enwiki (before translation), warn if attempt to use adj and sing&lt;br /&gt;
		-- as the latter is a deprecated alias for the former.&lt;br /&gt;
		if kv_pairs.adj ~= kv_pairs.sing and kv_pairs.sing ~= &#039;&#039; then&lt;br /&gt;
			add_warning(parms, 1, &#039;cvt_unknown_option&#039;, &#039;sing=&#039; .. kv_pairs.sing)&lt;br /&gt;
		end&lt;br /&gt;
		kv_pairs.sing = nil&lt;br /&gt;
	end&lt;br /&gt;
	kv_pairs.comma = kv_pairs.comma or config.comma  -- for plwiki who want default comma=5&lt;br /&gt;
	for loc_name, loc_value in pairs(kv_pairs) do&lt;br /&gt;
		local en_name = text_code.en_option_name[loc_name]&lt;br /&gt;
		if en_name then&lt;br /&gt;
			local en_value = text_code.en_option_value[en_name]&lt;br /&gt;
			if en_value == &#039;INTEGER&#039; then  -- altitude_ft, altitude_m, frac, sigfig&lt;br /&gt;
				en_value = nil&lt;br /&gt;
				if loc_value == &#039;&#039; then&lt;br /&gt;
					add_warning(parms, 2, &#039;cvt_empty_option&#039;, loc_name)&lt;br /&gt;
				else&lt;br /&gt;
					local minimum&lt;br /&gt;
					local number, is_integer = get_number(loc_value)&lt;br /&gt;
					if en_name == &#039;sigfig&#039; then&lt;br /&gt;
						minimum = 1&lt;br /&gt;
					elseif en_name == &#039;frac&#039; then&lt;br /&gt;
						minimum = 2&lt;br /&gt;
						if number and number &amp;lt; 0 then&lt;br /&gt;
							parms.opt_fraction_horizontal = true&lt;br /&gt;
							number = -number&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						minimum = -1e6&lt;br /&gt;
					end&lt;br /&gt;
					if number and is_integer and number &amp;gt;= minimum then&lt;br /&gt;
						en_value = number&lt;br /&gt;
					else&lt;br /&gt;
						local m&lt;br /&gt;
						if en_name == &#039;frac&#039; then&lt;br /&gt;
							m = &#039;cvt_bad_frac&#039;&lt;br /&gt;
						elseif en_name == &#039;sigfig&#039; then&lt;br /&gt;
							m = &#039;cvt_bad_sigfig&#039;&lt;br /&gt;
						else&lt;br /&gt;
							m = &#039;cvt_bad_altitude&#039;&lt;br /&gt;
						end&lt;br /&gt;
						add_warning(parms, 1, m, loc_name .. &#039;=&#039; .. loc_value)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			elseif en_value == &#039;TEXT&#039; then  -- $, input, qid, qual, stylein, styleout, tracking&lt;br /&gt;
				en_value = loc_value ~= &#039;&#039; and loc_value or nil  -- accept non-empty user text with no validation&lt;br /&gt;
				if not en_value and (en_name == &#039;$&#039; or en_name == &#039;qid&#039; or en_name == &#039;qual&#039;) then&lt;br /&gt;
					add_warning(parms, 2, &#039;cvt_empty_option&#039;, loc_name)&lt;br /&gt;
				elseif en_name == &#039;$&#039; then&lt;br /&gt;
					-- Value should be a single character like &amp;quot;€&amp;quot; for the euro currency symbol, but anything is accepted.&lt;br /&gt;
					currency_text = (loc_value == &#039;euro&#039;) and &#039;€&#039; or loc_value&lt;br /&gt;
				elseif en_name == &#039;input&#039; then&lt;br /&gt;
					-- May have something like {{convert|input=}} (empty input) if source is an infobox&lt;br /&gt;
					-- with optional fields. In that case, want to output nothing rather than an error.&lt;br /&gt;
					parms.input_text = loc_value  -- keep input because parms.input is nil if loc_value == &#039;&#039;&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				en_value = en_value[loc_value]&lt;br /&gt;
				if en_value and en_value:sub(-1) == &#039;?&#039; then&lt;br /&gt;
					en_value = en_value:sub(1, -2)&lt;br /&gt;
					add_warning(parms, -1, &#039;cvt_deprecated&#039;, loc_name .. &#039;=&#039; .. loc_value)&lt;br /&gt;
				end&lt;br /&gt;
				if en_value == nil then&lt;br /&gt;
					if loc_value == &#039;&#039; then&lt;br /&gt;
						add_warning(parms, 2, &#039;cvt_empty_option&#039;, loc_name)&lt;br /&gt;
					else&lt;br /&gt;
						add_warning(parms, 1, &#039;cvt_unknown_option&#039;, loc_name .. &#039;=&#039; .. loc_value)&lt;br /&gt;
					end&lt;br /&gt;
				elseif en_value == &#039;&#039; then&lt;br /&gt;
					en_value = nil  -- an ignored option like adj=off&lt;br /&gt;
				elseif type(en_value) == &#039;string&#039; and en_value:sub(1, 4) == &#039;opt_&#039; then&lt;br /&gt;
					for _, v in ipairs(split(en_value, &#039;,&#039;)) do&lt;br /&gt;
						local lhs, rhs = v:match(&#039;^(.-)=(.+)$&#039;)&lt;br /&gt;
						if rhs then&lt;br /&gt;
							parms[lhs] = tonumber(rhs) or rhs&lt;br /&gt;
						else&lt;br /&gt;
							parms[v] = true&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					en_value = nil&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			parms[en_name] = en_value&lt;br /&gt;
		else&lt;br /&gt;
			add_warning(parms, 1, &#039;cvt_unknown_option&#039;, loc_name .. &#039;=&#039; .. loc_value)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local abbr_entered = parms.abbr&lt;br /&gt;
	local cfg_abbr = config.abbr&lt;br /&gt;
	if cfg_abbr then&lt;br /&gt;
		-- Don&#039;t warn if invalid because every convert would show that warning.&lt;br /&gt;
		if cfg_abbr == &#039;on always&#039; then&lt;br /&gt;
			parms.abbr = &#039;on&#039;&lt;br /&gt;
		elseif cfg_abbr == &#039;off always&#039; then&lt;br /&gt;
			parms.abbr = &#039;off&#039;&lt;br /&gt;
		elseif parms.abbr == nil then&lt;br /&gt;
			if cfg_abbr == &#039;on default&#039; then&lt;br /&gt;
				parms.abbr = &#039;on&#039;&lt;br /&gt;
			elseif cfg_abbr == &#039;off default&#039; then&lt;br /&gt;
				parms.abbr = &#039;off&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if parms.abbr then&lt;br /&gt;
		if parms.abbr == &#039;unit&#039; then&lt;br /&gt;
			parms.abbr = &#039;on&#039;&lt;br /&gt;
			parms.number_word = true&lt;br /&gt;
		end&lt;br /&gt;
		parms.abbr_org = parms.abbr  -- original abbr, before any flip&lt;br /&gt;
	elseif parms.opt_hand_hh then&lt;br /&gt;
		parms.abbr_org = &#039;on&#039;&lt;br /&gt;
		parms.abbr = &#039;on&#039;&lt;br /&gt;
	else&lt;br /&gt;
		parms.abbr = &#039;out&#039;  -- default is to abbreviate output only (use symbol, not name)&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_order_out then&lt;br /&gt;
		-- Disable options that do not work in a useful way with order=out.&lt;br /&gt;
		parms.opt_flip = nil  -- override adj=flip&lt;br /&gt;
		parms.opt_spell_in = nil&lt;br /&gt;
		parms.opt_spell_out = nil&lt;br /&gt;
		parms.opt_spell_upper = nil&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_spell_out and not abbr_entered then&lt;br /&gt;
		parms.abbr = &#039;off&#039;  -- should show unit name when spelling the output value&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_flip then&lt;br /&gt;
		local function swap_in_out(option)&lt;br /&gt;
			local value = parms[option]&lt;br /&gt;
			if value == &#039;in&#039; then&lt;br /&gt;
				parms[option] = &#039;out&#039;&lt;br /&gt;
			elseif value == &#039;out&#039; then&lt;br /&gt;
				parms[option] = &#039;in&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		swap_in_out(&#039;abbr&#039;)&lt;br /&gt;
		swap_in_out(&#039;lk&#039;)&lt;br /&gt;
		if parms.opt_spell_in and not parms.opt_spell_out then&lt;br /&gt;
			-- For simplicity, and because it does not appear to be needed,&lt;br /&gt;
			-- user cannot set an option to spell the output only.&lt;br /&gt;
			parms.opt_spell_in = nil&lt;br /&gt;
			parms.opt_spell_out = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_spell_upper then&lt;br /&gt;
		parms.spell_upper = parms.opt_flip and &#039;out&#039; or &#039;in&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_table or parms.opt_tablecen then&lt;br /&gt;
		if abbr_entered == nil and parms.lk == nil then&lt;br /&gt;
			parms.opt_values = true&lt;br /&gt;
		end&lt;br /&gt;
		parms.table_align = parms.opt_table and &#039;right&#039; or &#039;center&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if parms.table_align or parms.opt_sortable_on then&lt;br /&gt;
		parms.need_table_or_sort = true&lt;br /&gt;
	end&lt;br /&gt;
	local disp_joins = text_code.disp_joins&lt;br /&gt;
	local default_joins = disp_joins[&#039;b&#039;]&lt;br /&gt;
	parms.join_between = default_joins[3] or &#039;; &#039;&lt;br /&gt;
	local disp = parms.disp&lt;br /&gt;
	if disp == nil then  -- special case for the most common setting&lt;br /&gt;
		parms.joins = default_joins&lt;br /&gt;
	elseif disp == &#039;x&#039; then&lt;br /&gt;
		-- Later, parms.joins is set from the input parameters.&lt;br /&gt;
	else&lt;br /&gt;
		-- Old template does this.&lt;br /&gt;
		local abbr = parms.abbr&lt;br /&gt;
		if disp == &#039;slash&#039; then&lt;br /&gt;
			if abbr_entered == nil then&lt;br /&gt;
				disp = &#039;slash-nbsp&#039;&lt;br /&gt;
			elseif abbr == &#039;in&#039; or abbr == &#039;out&#039; then&lt;br /&gt;
				disp = &#039;slash-sp&#039;&lt;br /&gt;
			else&lt;br /&gt;
				disp = &#039;slash-nosp&#039;&lt;br /&gt;
			end&lt;br /&gt;
		elseif disp == &#039;sqbr&#039; then&lt;br /&gt;
			if abbr == &#039;on&#039; then&lt;br /&gt;
				disp = &#039;sqbr-nbsp&#039;&lt;br /&gt;
			else&lt;br /&gt;
				disp = &#039;sqbr-sp&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		parms.joins = disp_joins[disp] or default_joins&lt;br /&gt;
		parms.join_between = parms.joins[3] or parms.join_between&lt;br /&gt;
		parms.wantname = parms.joins.wantname&lt;br /&gt;
	end&lt;br /&gt;
	if (en_default and not parms.opt_lang_local and (parms[1] or &#039;&#039;):find(&#039;%d&#039;)) or parms.opt_lang_en then&lt;br /&gt;
		from_en_table = nil&lt;br /&gt;
	end&lt;br /&gt;
	if en_default and from_en_table then&lt;br /&gt;
		-- For hiwiki: localized symbol/name is defined with the US symbol/name field,&lt;br /&gt;
		-- and is used if output uses localized numbers.&lt;br /&gt;
		parms.opt_sp_us = true&lt;br /&gt;
	end&lt;br /&gt;
	return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_values(parms)&lt;br /&gt;
	-- If successful, update parms and return true, v, i where&lt;br /&gt;
	--   v = table of input values&lt;br /&gt;
	--   i = index to next entry in parms after those processed here&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	local valinfo = collection()  -- numbered table of input values&lt;br /&gt;
	local range = collection()  -- numbered table of range items (having, for example, 2 range items requires 3 input values)&lt;br /&gt;
	local had_nocomma  -- true if removed &amp;quot;nocomma&amp;quot; kludge from second parameter (like &amp;quot;tonocomma&amp;quot;)&lt;br /&gt;
	local parm2 = strip(parms[2])&lt;br /&gt;
	if parm2 and parm2:sub(-7, -1) == &#039;nocomma&#039; then&lt;br /&gt;
		parms[2] = strip(parm2:sub(1, -8))&lt;br /&gt;
		parms.opt_nocomma = true&lt;br /&gt;
		had_nocomma = true&lt;br /&gt;
	end&lt;br /&gt;
	local function extractor(i)&lt;br /&gt;
		-- If the parameter is not a value, try unpacking it as a range (&amp;quot;1-23&amp;quot; for &amp;quot;1 to 23&amp;quot;).&lt;br /&gt;
		-- However, &amp;quot;-1-2/3&amp;quot; is a negative fraction (-1⅔), so it must be extracted first.&lt;br /&gt;
		-- Do not unpack a parameter if it is like &amp;quot;3-1/2&amp;quot; which is sometimes incorrectly&lt;br /&gt;
		-- used instead of &amp;quot;3+1/2&amp;quot; (and which should not be interpreted as &amp;quot;3 to ½&amp;quot;).&lt;br /&gt;
		-- Unpacked items are inserted into the parms table.&lt;br /&gt;
		-- The tail recursion allows combinations like &amp;quot;1x2 to 3x4&amp;quot;.&lt;br /&gt;
		local valstr = strip(parms[i])  -- trim so any &#039;-&#039; as a negative sign will be at start&lt;br /&gt;
		local success, result = extract_number(parms, valstr, i &amp;gt; 1)&lt;br /&gt;
		if not success and valstr and i &amp;lt; 20 then  -- check i to limit abuse&lt;br /&gt;
			local lhs, sep, rhs = valstr:match(&#039;^(%S+)%s+(%S+)%s+(%S.*)&#039;)&lt;br /&gt;
			if lhs and not (sep == &#039;-&#039; and rhs:match(&#039;/&#039;)) then&lt;br /&gt;
				if sep:find(&#039;%d&#039;) then&lt;br /&gt;
					return success, result  -- to reject {{convert|1 234 567|m}} with a decent message (en only)&lt;br /&gt;
				end&lt;br /&gt;
				parms[i] = rhs&lt;br /&gt;
				table.insert(parms, i, sep)&lt;br /&gt;
				table.insert(parms, i, lhs)&lt;br /&gt;
				return extractor(i)&lt;br /&gt;
			end&lt;br /&gt;
			if not valstr:match(&#039;%-.*/&#039;) then&lt;br /&gt;
				for _, sep in ipairs(text_code.ranges.words) do&lt;br /&gt;
					local start, stop = valstr:find(sep, 2, true)  -- start at 2 to skip any negative sign for range &#039;-&#039;&lt;br /&gt;
					if start then&lt;br /&gt;
						parms[i] = valstr:sub(stop + 1)&lt;br /&gt;
						table.insert(parms, i, sep)&lt;br /&gt;
						table.insert(parms, i, valstr:sub(1, start - 1))&lt;br /&gt;
						return extractor(i)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return success, result&lt;br /&gt;
	end&lt;br /&gt;
	local i = 1&lt;br /&gt;
	local is_change&lt;br /&gt;
	while true do&lt;br /&gt;
		local success, info = extractor(i)  -- need to set parms.opt_nocomma before calling this&lt;br /&gt;
		if not success then return false, info end&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if is_change then&lt;br /&gt;
			info.is_change = true  -- value is after &amp;quot;±&amp;quot; and so is a change (significant for range like {{convert|5|±|5|°C}})&lt;br /&gt;
			is_change = nil&lt;br /&gt;
		end&lt;br /&gt;
		valinfo:add(info)&lt;br /&gt;
		local range_item = get_range(strip(parms[i]))&lt;br /&gt;
		if not range_item then&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		range:add(range_item)&lt;br /&gt;
		if type(range_item) == &#039;table&#039; then&lt;br /&gt;
			-- For range &amp;quot;x&amp;quot;, if append unit to some values, append it to all.&lt;br /&gt;
			parms.in_range_x = parms.in_range_x or range_item.in_range_x&lt;br /&gt;
			parms.out_range_x = parms.out_range_x or range_item.out_range_x&lt;br /&gt;
			parms.abbr_range_x = parms.abbr_range_x or range_item.abbr_range_x&lt;br /&gt;
			is_change = range_item.is_range_change&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if range.n &amp;gt; 0 then&lt;br /&gt;
		if range.n &amp;gt; 30 then  -- limit abuse, although 4 is a more likely upper limit&lt;br /&gt;
			return false, { &#039;cvt_invalid_num&#039; }  -- misleading message but it will do&lt;br /&gt;
		end&lt;br /&gt;
		parms.range = range&lt;br /&gt;
	elseif had_nocomma then&lt;br /&gt;
		return false, { &#039;cvt_unknown&#039;, parm2 }&lt;br /&gt;
	end&lt;br /&gt;
	return true, valinfo, i&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function simple_get_values(parms)&lt;br /&gt;
	-- If input is like &amp;quot;{{convert|valid_value|valid_unit|...}}&amp;quot;,&lt;br /&gt;
	-- return true, i, in_unit, in_unit_table&lt;br /&gt;
	-- i = index in parms of what follows valid_unit, if anything.&lt;br /&gt;
	-- The valid_value is not negative and does not use a fraction, and&lt;br /&gt;
	-- no options requiring further processing of the input are used.&lt;br /&gt;
	-- Otherwise, return nothing or return false, parm1 for caller to interpret.&lt;br /&gt;
	-- Testing shows this function is successful for 96% of converts in articles,&lt;br /&gt;
	-- and that on average it speeds up converts by 8%.&lt;br /&gt;
	local clean = to_en(strip(parms[1] or &#039;&#039;), parms)&lt;br /&gt;
	if parms.opt_ri or parms.opt_spell_in or #clean &amp;gt; 10 or not clean:match(&#039;^[0-9.]+$&#039;) then&lt;br /&gt;
		return false, clean&lt;br /&gt;
	end&lt;br /&gt;
	local value = tonumber(clean)&lt;br /&gt;
	if not value then return end&lt;br /&gt;
	local info = {&lt;br /&gt;
		value = value,&lt;br /&gt;
		altvalue = value,&lt;br /&gt;
		singular = (value == 1),&lt;br /&gt;
		clean = clean,&lt;br /&gt;
		show = with_separator(parms, clean),&lt;br /&gt;
	}&lt;br /&gt;
	local in_unit = strip(parms[2])&lt;br /&gt;
	local success, in_unit_table = lookup(parms, in_unit, &#039;no_combination&#039;)&lt;br /&gt;
	if not success then return end&lt;br /&gt;
	in_unit_table.valinfo = { info }&lt;br /&gt;
	return true, 3, in_unit, in_unit_table&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function wikidata_call(parms, operation, ...)&lt;br /&gt;
	-- Return true, s where s is the result of a Wikidata operation,&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	local function worker(...)&lt;br /&gt;
		wikidata_code = wikidata_code or require(wikidata_module)&lt;br /&gt;
		wikidata_data = wikidata_data or mw.loadData(wikidata_data_module)&lt;br /&gt;
		return wikidata_code[operation](wikidata_data, ...)&lt;br /&gt;
	end&lt;br /&gt;
	local success, status, result = pcall(worker, ...)&lt;br /&gt;
	if success then&lt;br /&gt;
		return status, result&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_sortable_debug then&lt;br /&gt;
		-- Use debug=yes to crash if an error while accessing Wikidata.&lt;br /&gt;
		error(&#039;Error accessing Wikidata: &#039; .. status, 0)&lt;br /&gt;
	end&lt;br /&gt;
	return false, { &#039;cvt_wd_fail&#039; }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_parms(parms, args)&lt;br /&gt;
	-- If successful, update parms and return true, unit where&lt;br /&gt;
	--   parms is a table of all arguments passed to the template&lt;br /&gt;
	--        converted to named arguments, and&lt;br /&gt;
	--   unit is the input unit table;&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	-- For special processing (not a convert), can also return&lt;br /&gt;
	-- true, wikitext where wikitext is the final result.&lt;br /&gt;
	-- The returned input unit table may be for a fake unit using the specified&lt;br /&gt;
	-- unit code as the symbol and name, and with bad_mcode = message code table.&lt;br /&gt;
	-- MediaWiki removes leading and trailing whitespace from the values of&lt;br /&gt;
	-- named arguments. However, the values of numbered arguments include any&lt;br /&gt;
	-- whitespace entered in the template, and whitespace is used by some&lt;br /&gt;
	-- parameters (example: the numbered parameters associated with &amp;quot;disp=x&amp;quot;).&lt;br /&gt;
	local kv_pairs = {}  -- table of input key:value pairs where key is a name; needed because cannot iterate parms and add new fields to it&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if type(k) == &#039;number&#039; or k == &#039;test&#039; then  -- parameter &amp;quot;test&amp;quot; is reserved for testing and is not translated&lt;br /&gt;
			parms[k] = v&lt;br /&gt;
		else&lt;br /&gt;
			kv_pairs[k] = v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if parms.test == &#039;wikidata&#039; then&lt;br /&gt;
		local ulookup = function (ucode)&lt;br /&gt;
			-- Use empty table for parms so it does not accumulate results when used repeatedly.&lt;br /&gt;
			return lookup({}, ucode, &#039;no_combination&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		return wikidata_call(parms, &#039;_listunits&#039;, ulookup)&lt;br /&gt;
	end&lt;br /&gt;
	local success, msg = translate_parms(parms, kv_pairs)&lt;br /&gt;
	if not success then return false, msg end&lt;br /&gt;
	if parms.input then&lt;br /&gt;
		success, msg = wikidata_call(parms, &#039;_adjustparameters&#039;, parms, 1)&lt;br /&gt;
		if not success then return false, msg end&lt;br /&gt;
	end&lt;br /&gt;
	local success, i, in_unit, in_unit_table = simple_get_values(parms)&lt;br /&gt;
	if not success then&lt;br /&gt;
		if type(i) == &#039;string&#039; and i:match(&#039;^NNN+$&#039;) then&lt;br /&gt;
			-- Some infoboxes have examples like {{convert|NNN|m}} (3 or more &amp;quot;N&amp;quot;).&lt;br /&gt;
			-- Output an empty string for these.&lt;br /&gt;
			return false, { &#039;cvt_no_output&#039; }&lt;br /&gt;
		end&lt;br /&gt;
		local valinfo&lt;br /&gt;
		success, valinfo, i = get_values(parms)&lt;br /&gt;
		if not success then return false, valinfo end&lt;br /&gt;
		in_unit = strip(parms[i])&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		success, in_unit_table = lookup(parms, in_unit, &#039;no_combination&#039;)&lt;br /&gt;
		if not success then&lt;br /&gt;
			in_unit = in_unit or &#039;&#039;&lt;br /&gt;
			if parms.opt_ignore_error then  -- display given unit code with no error (for use with {{val}})&lt;br /&gt;
				in_unit_table = &#039;&#039;  -- suppress error message and prevent processing of output unit&lt;br /&gt;
			end&lt;br /&gt;
			in_unit_table = setmetatable({&lt;br /&gt;
				symbol = in_unit, name2 = in_unit, utype = in_unit,&lt;br /&gt;
				scale = 1, default = &#039;&#039;, defkey = &#039;&#039;, linkey = &#039;&#039;,&lt;br /&gt;
				bad_mcode = in_unit_table }, unit_mt)&lt;br /&gt;
		end&lt;br /&gt;
		in_unit_table.valinfo = valinfo&lt;br /&gt;
	end&lt;br /&gt;
	if parms.test == &#039;msg&#039; then&lt;br /&gt;
		-- Am testing the messages produced when no output unit is specified, and&lt;br /&gt;
		-- the input unit has a missing or invalid default.&lt;br /&gt;
		-- Set two units for testing that.&lt;br /&gt;
		-- LATER: Remove this code.&lt;br /&gt;
		if in_unit == &#039;chain&#039; then&lt;br /&gt;
			in_unit_table.default = nil  -- no default&lt;br /&gt;
		elseif in_unit == &#039;rd&#039; then&lt;br /&gt;
			in_unit_table.default  = &amp;quot;ft!X!m&amp;quot;  -- an invalid expression&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	in_unit_table.inout = &#039;in&#039;  -- this is an input unit&lt;br /&gt;
	if not parms.range then&lt;br /&gt;
		local success, inext, composite_unit = get_composite(parms, i, in_unit_table)&lt;br /&gt;
		if not success then return false, inext end&lt;br /&gt;
		if composite_unit then&lt;br /&gt;
			in_unit_table = composite_unit&lt;br /&gt;
			i = inext&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if in_unit_table.builtin == &#039;mach&#039; then&lt;br /&gt;
		-- As with old template, a number following Mach as the input unit is the altitude.&lt;br /&gt;
		-- That is deprecated: should use altitude_ft=NUMBER or altitude_m=NUMBER.&lt;br /&gt;
		local success, info&lt;br /&gt;
		success = tonumber(parms[i])  -- this will often work and will give correct result for values like 2e4 without forcing output scientific notation&lt;br /&gt;
		if success then&lt;br /&gt;
			info = { value = success }&lt;br /&gt;
		else&lt;br /&gt;
			success, info = extract_number(parms, parms[i], false, true)&lt;br /&gt;
		end&lt;br /&gt;
		if success then&lt;br /&gt;
			i = i + 1&lt;br /&gt;
			in_unit_table.altitude = info.value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local word = strip(parms[i])&lt;br /&gt;
	i = i + 1&lt;br /&gt;
	local precision, is_bad_precision&lt;br /&gt;
	local function set_precision(text)&lt;br /&gt;
		local number, is_integer = get_number(text)&lt;br /&gt;
		if number then&lt;br /&gt;
			if is_integer then&lt;br /&gt;
				precision = number&lt;br /&gt;
			else&lt;br /&gt;
				precision = text&lt;br /&gt;
				is_bad_precision = true&lt;br /&gt;
			end&lt;br /&gt;
			return true  -- text was used for precision, good or bad&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if word and not set_precision(word) then&lt;br /&gt;
		parms.out_unit = parms.out_unit or word&lt;br /&gt;
		if set_precision(strip(parms[i])) then&lt;br /&gt;
			i = i + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_adj_mid then&lt;br /&gt;
		word = parms[i]&lt;br /&gt;
		i = i + 1&lt;br /&gt;
		if word then  -- mid-text words&lt;br /&gt;
			if word:sub(1, 1) == &#039;-&#039; then&lt;br /&gt;
				parms.mid = word&lt;br /&gt;
			else&lt;br /&gt;
				parms.mid = &#039; &#039; .. word&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_one_preunit then&lt;br /&gt;
		parms[parms.opt_flip and &#039;preunit2&#039; or &#039;preunit1&#039;] = preunits(1, parms[i])&lt;br /&gt;
		i = i + 1&lt;br /&gt;
	end&lt;br /&gt;
	if parms.disp == &#039;x&#039; then&lt;br /&gt;
		-- Following is reasonably compatible with the old template.&lt;br /&gt;
		local first = parms[i] or &#039;&#039;&lt;br /&gt;
		local second = parms[i+1] or &#039;&#039;&lt;br /&gt;
		i = i + 2&lt;br /&gt;
		if strip(first) == &#039;&#039; then  -- user can enter &#039;&amp;amp;#32;&#039; rather than &#039; &#039; to avoid the default&lt;br /&gt;
			first = &#039; [&amp;amp;nbsp;&#039; .. first&lt;br /&gt;
			second = &#039;&amp;amp;nbsp;]&#039; .. second&lt;br /&gt;
		end&lt;br /&gt;
		parms.joins = { first, second }&lt;br /&gt;
	elseif parms.opt_two_preunits then&lt;br /&gt;
		local p1, p2 = preunits(2, parms[i], parms[i+1])&lt;br /&gt;
		i = i + 2&lt;br /&gt;
		if parms.preunit1 then&lt;br /&gt;
			-- To simplify documentation, allow unlikely use of adj=pre with disp=preunit&lt;br /&gt;
			-- (however, an output unit must be specified with adj=pre and with disp=preunit).&lt;br /&gt;
			parms.preunit1 = parms.preunit1 .. p1&lt;br /&gt;
			parms.preunit2 = p2&lt;br /&gt;
		else&lt;br /&gt;
			parms.preunit1, parms.preunit2 = p1, p2&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if precision == nil then&lt;br /&gt;
		if set_precision(strip(parms[i])) then&lt;br /&gt;
			i = i + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if is_bad_precision then&lt;br /&gt;
		add_warning(parms, 1, &#039;cvt_bad_prec&#039;, precision)&lt;br /&gt;
	else&lt;br /&gt;
		parms.precision = precision&lt;br /&gt;
	end&lt;br /&gt;
	for j = i, i + 3 do&lt;br /&gt;
		local parm = parms[j]  -- warn if find a non-empty extraneous parameter&lt;br /&gt;
		if parm and parm:match(&#039;%S&#039;) then&lt;br /&gt;
			add_warning(parms, 1, &#039;cvt_unknown_option&#039;, parm)&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true, in_unit_table&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function record_default_precision(parms, out_current, precision)&lt;br /&gt;
	-- If necessary, adjust parameters and return a possibly adjusted precision.&lt;br /&gt;
	-- When converting a range of values where a default precision is required,&lt;br /&gt;
	-- that default is calculated for each value because the result sometimes&lt;br /&gt;
	-- depends on the precise input and output values. This function may cause&lt;br /&gt;
	-- the entire convert process to be repeated in order to ensure that the&lt;br /&gt;
	-- same default precision is used for each individual convert.&lt;br /&gt;
	-- If that were not done, a range like 1000 to 1000.4 may give poor results&lt;br /&gt;
	-- because the first output could be heavily rounded, while the second is not.&lt;br /&gt;
	-- For range 1000.4 to 1000, this function can give the second convert the&lt;br /&gt;
	-- same default precision that was used for the first.&lt;br /&gt;
	if not parms.opt_round_each then&lt;br /&gt;
		local maxdef = out_current.max_default_precision&lt;br /&gt;
		if maxdef then&lt;br /&gt;
			if maxdef &amp;lt; precision then&lt;br /&gt;
				parms.do_convert_again = true&lt;br /&gt;
				out_current.max_default_precision = precision&lt;br /&gt;
			else&lt;br /&gt;
				precision = out_current.max_default_precision&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			out_current.max_default_precision = precision&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return precision&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function default_precision(parms, invalue, inclean, denominator, outvalue, in_current, out_current, extra)&lt;br /&gt;
	-- Return a default value for precision (an integer like 2, 0, -2).&lt;br /&gt;
	-- If denominator is not nil, it is the value of the denominator in inclean.&lt;br /&gt;
	-- Code follows procedures used in old template.&lt;br /&gt;
	local fudge = 1e-14  -- {{Order of magnitude}} adds this, so we do too&lt;br /&gt;
	local prec, minprec, adjust&lt;br /&gt;
	local subunit_ignore_trailing_zero&lt;br /&gt;
	local subunit_more_precision  -- kludge for &amp;quot;in&amp;quot; used in input like &amp;quot;|2|ft|6|in&amp;quot;&lt;br /&gt;
	local composite = in_current.composite&lt;br /&gt;
	if composite then&lt;br /&gt;
		subunit_ignore_trailing_zero = true  -- input &amp;quot;|2|st|10|lb&amp;quot; has precision 0, not -1&lt;br /&gt;
		if composite[#composite].exception == &#039;subunit_more_precision&#039; then&lt;br /&gt;
			subunit_more_precision = true  -- do not use standard precision with input like &amp;quot;|2|ft|6|in&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if denominator and denominator &amp;gt; 0 then&lt;br /&gt;
		prec = math.max(log10(denominator), 1)&lt;br /&gt;
	else&lt;br /&gt;
		-- Count digits after decimal mark, handling cases like &#039;12.345e6&#039;.&lt;br /&gt;
		local exponent&lt;br /&gt;
		local integer, dot, decimals, expstr = inclean:match(&#039;^(%d*)(%.?)(%d*)(.*)&#039;)&lt;br /&gt;
		local e = expstr:sub(1, 1)&lt;br /&gt;
		if e == &#039;e&#039; or e == &#039;E&#039; then&lt;br /&gt;
			exponent = tonumber(expstr:sub(2))&lt;br /&gt;
		end&lt;br /&gt;
		if dot == &#039;&#039; then&lt;br /&gt;
			prec = subunit_ignore_trailing_zero and 0 or -integer:match(&#039;0*$&#039;):len()&lt;br /&gt;
		else&lt;br /&gt;
			prec = #decimals&lt;br /&gt;
		end&lt;br /&gt;
		if exponent then&lt;br /&gt;
			-- So &#039;1230&#039; and &#039;1.23e3&#039; both give prec = -1, and &#039;0.00123&#039; and &#039;1.23e-3&#039; give 5.&lt;br /&gt;
			prec = prec - exponent&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if in_current.istemperature and out_current.istemperature then&lt;br /&gt;
		-- Converting between common temperatures (°C, °F, °R, K); not keVT.&lt;br /&gt;
		-- Kelvin value can be almost zero, or small but negative due to precision problems.&lt;br /&gt;
		-- Also, an input value like -300 C (below absolute zero) gives negative kelvins.&lt;br /&gt;
		-- Calculate minimum precision from absolute value.&lt;br /&gt;
		adjust = 0&lt;br /&gt;
		local kelvin = abs((invalue - in_current.offset) * in_current.scale)&lt;br /&gt;
		if kelvin &amp;lt; 1e-8 then  -- assume nonzero due to input or calculation precision problem&lt;br /&gt;
			minprec = 2&lt;br /&gt;
		else&lt;br /&gt;
			minprec = 2 - floor(log10(kelvin) + fudge)  -- 3 sigfigs in kelvin&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if invalue == 0 or outvalue &amp;lt;= 0 then&lt;br /&gt;
			-- We are never called with a negative outvalue, but it might be zero.&lt;br /&gt;
			-- This is special-cased to avoid calculation exceptions.&lt;br /&gt;
			return record_default_precision(parms, out_current, 0)&lt;br /&gt;
		end&lt;br /&gt;
		if out_current.exception == &#039;integer_more_precision&#039; and floor(invalue) == invalue then&lt;br /&gt;
			-- With certain output units that sometimes give poor results&lt;br /&gt;
			-- with default rounding, use more precision when the input&lt;br /&gt;
			-- value is equal to an integer. An example of a poor result&lt;br /&gt;
			-- is when input 50 gives a smaller output than input 49.5.&lt;br /&gt;
			-- Experiment shows this helps, but it does not eliminate all&lt;br /&gt;
			-- surprises because it is not clear whether &amp;quot;50&amp;quot; should be&lt;br /&gt;
			-- interpreted as &amp;quot;from 45 to 55&amp;quot; or &amp;quot;from 49.5 to 50.5&amp;quot;.&lt;br /&gt;
			adjust = -log10(in_current.scale)&lt;br /&gt;
		elseif subunit_more_precision then&lt;br /&gt;
			-- Conversion like &amp;quot;{{convert|6|ft|1|in|cm}}&amp;quot; (where subunit is &amp;quot;in&amp;quot;)&lt;br /&gt;
			-- has a non-standard adjust value, to give more output precision.&lt;br /&gt;
			adjust = log10(out_current.scale) + 2&lt;br /&gt;
		else&lt;br /&gt;
			adjust = log10(abs(invalue / outvalue))&lt;br /&gt;
		end&lt;br /&gt;
		adjust = adjust + log10(2)&lt;br /&gt;
		-- Ensure that the output has at least two significant figures.&lt;br /&gt;
		minprec = 1 - floor(log10(outvalue) + fudge)&lt;br /&gt;
	end&lt;br /&gt;
	if extra then&lt;br /&gt;
		adjust = extra.adjust or adjust&lt;br /&gt;
		minprec = extra.minprec or minprec&lt;br /&gt;
	end&lt;br /&gt;
	return record_default_precision(parms, out_current, math.max(floor(prec + adjust), minprec))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function convert(parms, invalue, info, in_current, out_current)&lt;br /&gt;
	-- Convert given input value from one unit to another.&lt;br /&gt;
	-- Return output_value (a number) if a simple convert, or&lt;br /&gt;
	-- return f, t where&lt;br /&gt;
	--   f = true, t = table of information with results, or&lt;br /&gt;
	--   f = false, t = error message table.&lt;br /&gt;
	local inscale = in_current.scale&lt;br /&gt;
	local outscale = out_current.scale&lt;br /&gt;
	if not in_current.iscomplex and not out_current.iscomplex then&lt;br /&gt;
		return invalue * (inscale / outscale)  -- minimize overhead for most common case&lt;br /&gt;
	end&lt;br /&gt;
	if in_current.invert or out_current.invert then&lt;br /&gt;
		-- Inverted units, such as inverse length, inverse time, or&lt;br /&gt;
		-- fuel efficiency. Built-in units do not have invert set.&lt;br /&gt;
		if (in_current.invert or 1) * (out_current.invert or 1) &amp;lt; 0 then&lt;br /&gt;
			return 1 / (invalue * inscale * outscale)&lt;br /&gt;
		end&lt;br /&gt;
		return invalue * (inscale / outscale)&lt;br /&gt;
	elseif in_current.offset then&lt;br /&gt;
		-- Temperature (there are no built-ins for this type of unit).&lt;br /&gt;
		if info.is_change then&lt;br /&gt;
			return invalue * (inscale / outscale)&lt;br /&gt;
		end&lt;br /&gt;
		return (invalue - in_current.offset) * (inscale / outscale) + out_current.offset&lt;br /&gt;
	else&lt;br /&gt;
		-- Built-in unit.&lt;br /&gt;
		local in_builtin = in_current.builtin&lt;br /&gt;
		local out_builtin = out_current.builtin&lt;br /&gt;
		if in_builtin and out_builtin then&lt;br /&gt;
			if in_builtin == out_builtin then&lt;br /&gt;
				return invalue&lt;br /&gt;
			end&lt;br /&gt;
			-- There are no cases (yet) where need to convert from one&lt;br /&gt;
			-- built-in unit to another, so this should never occur.&lt;br /&gt;
			return false, { &#039;cvt_bug_convert&#039; }&lt;br /&gt;
		end&lt;br /&gt;
		if in_builtin == &#039;mach&#039; or out_builtin == &#039;mach&#039; then&lt;br /&gt;
			-- Should check that only one altitude is given but am planning to remove&lt;br /&gt;
			-- in_current.altitude (which can only occur when Mach is the input unit),&lt;br /&gt;
			-- and out_current.altitude cannot occur.&lt;br /&gt;
			local alt = parms.altitude_ft or in_current.altitude&lt;br /&gt;
			if not alt and parms.altitude_m then&lt;br /&gt;
				alt = parms.altitude_m / 0.3048  -- 1 ft = 0.3048 m&lt;br /&gt;
			end&lt;br /&gt;
			local spd = speed_of_sound(alt)&lt;br /&gt;
			if in_builtin == &#039;mach&#039; then&lt;br /&gt;
				inscale = spd&lt;br /&gt;
				return invalue * (inscale / outscale)&lt;br /&gt;
			end&lt;br /&gt;
			outscale = spd&lt;br /&gt;
			local adjust = 0.1 / inscale&lt;br /&gt;
			return true, {&lt;br /&gt;
				outvalue = invalue * (inscale / outscale),&lt;br /&gt;
				adjust = log10(adjust) + log10(2),&lt;br /&gt;
			}&lt;br /&gt;
		elseif in_builtin == &#039;hand&#039; then&lt;br /&gt;
			-- 1 hand = 4 inches; 1.2 hands = 6 inches.&lt;br /&gt;
			-- Decimals of a hand are only defined for the first digit, and&lt;br /&gt;
			-- the first fractional digit should be a number of inches (1, 2 or 3).&lt;br /&gt;
			-- However, this code interprets the entire fractional part as the number&lt;br /&gt;
			-- of inches / 10 (so 1.75 inches would be 0.175 hands).&lt;br /&gt;
			-- A value like 12.3 hands is exactly 12*4 + 3 inches; base default precision on that.&lt;br /&gt;
			local integer, fracpart = math.modf(invalue)&lt;br /&gt;
			local inch_value = 4 * integer + 10 * fracpart  -- equivalent number of inches&lt;br /&gt;
			local factor = inscale / outscale&lt;br /&gt;
			if factor == 4 then&lt;br /&gt;
				-- Am converting to inches: show exact result, and use &amp;quot;inches&amp;quot; not &amp;quot;in&amp;quot; by default.&lt;br /&gt;
				if parms.abbr_org == nil then&lt;br /&gt;
					out_current.usename = true&lt;br /&gt;
				end&lt;br /&gt;
				local show = format(&#039;%g&#039;, abs(inch_value))  -- show and clean are unsigned&lt;br /&gt;
				if not show:find(&#039;e&#039;, 1, true) then&lt;br /&gt;
					return true, {&lt;br /&gt;
						invalue = inch_value,&lt;br /&gt;
						outvalue = inch_value,&lt;br /&gt;
						clean = show,&lt;br /&gt;
						show = show,&lt;br /&gt;
					}&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			local outvalue = (integer + 2.5 * fracpart) * factor&lt;br /&gt;
			local fracstr = info.clean:match(&#039;%.(.*)&#039;) or &#039;&#039;&lt;br /&gt;
			local fmt&lt;br /&gt;
			if fracstr == &#039;&#039; then&lt;br /&gt;
				fmt = &#039;%.0f&#039;&lt;br /&gt;
			else&lt;br /&gt;
				fmt = &#039;%.&#039; .. format(&#039;%d&#039;, #fracstr - 1) .. &#039;f&#039;&lt;br /&gt;
			end&lt;br /&gt;
			return true, {&lt;br /&gt;
				invalue = inch_value,&lt;br /&gt;
				clean = format(fmt, inch_value),&lt;br /&gt;
				outvalue = outvalue,&lt;br /&gt;
				minprec = 0,&lt;br /&gt;
			}&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false, { &#039;cvt_bug_convert&#039; }  -- should never occur&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function user_style(parms, i)&lt;br /&gt;
	-- Return text for a user-specified style for a table cell, or &#039;&#039; if none,&lt;br /&gt;
	-- given i = 1 (input style) or 2 (output style).&lt;br /&gt;
	local style = parms[(i == 1) and &#039;stylein&#039; or &#039;styleout&#039;]&lt;br /&gt;
	if style then&lt;br /&gt;
		style = style:gsub(&#039;&amp;quot;&#039;, &#039;&#039;)&lt;br /&gt;
		if style ~= &#039;&#039; then&lt;br /&gt;
			if style:sub(-1) ~= &#039;;&#039; then&lt;br /&gt;
				style = style .. &#039;;&#039;&lt;br /&gt;
			end&lt;br /&gt;
			return style&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return &#039;&#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_table_or_sort(parms, invalue, info, in_current, scaled_top)&lt;br /&gt;
	-- Set options to handle output for a table or a sort key, or both.&lt;br /&gt;
	-- The text sort key is based on the value resulting from converting&lt;br /&gt;
	-- the input to a fake base unit with scale = 1, and other properties&lt;br /&gt;
	-- required for a conversion derived from the input unit.&lt;br /&gt;
	-- For other modules, return the sort key in a hidden span element, and&lt;br /&gt;
	-- the scaled value used to generate the sort key.&lt;br /&gt;
	-- If scaled_top is set, it is the scaled value of the numerator of a per unit&lt;br /&gt;
	-- to be combined with this unit (the denominator) to make the sort key.&lt;br /&gt;
	-- Scaling only works with units that convert with a factor (not temperature).&lt;br /&gt;
	local sortkey, scaled_value&lt;br /&gt;
	if parms.opt_sortable_on then&lt;br /&gt;
		local base = {  -- a fake unit with enough fields for a valid convert&lt;br /&gt;
			scale = 1,&lt;br /&gt;
			invert = in_current.invert and 1,&lt;br /&gt;
			iscomplex = in_current.iscomplex,&lt;br /&gt;
			offset = in_current.offset and 0,&lt;br /&gt;
		}&lt;br /&gt;
		local outvalue, extra = convert(parms, invalue, info, in_current, base)&lt;br /&gt;
		if extra then&lt;br /&gt;
			outvalue = extra.outvalue&lt;br /&gt;
		end&lt;br /&gt;
		if in_current.istemperature then&lt;br /&gt;
			-- Have converted to kelvin; assume numbers close to zero have a&lt;br /&gt;
			-- rounding error and should be zero.&lt;br /&gt;
			if abs(outvalue) &amp;lt; 1e-12 then&lt;br /&gt;
				outvalue = 0&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if scaled_top and outvalue ~= 0 then&lt;br /&gt;
			outvalue = scaled_top / outvalue&lt;br /&gt;
		end&lt;br /&gt;
		scaled_value = outvalue&lt;br /&gt;
		if not valid_number(outvalue) then&lt;br /&gt;
			if outvalue &amp;lt; 0 then&lt;br /&gt;
				sortkey = &#039;1000000000000000000&#039;&lt;br /&gt;
			else&lt;br /&gt;
				sortkey = &#039;9000000000000000000&#039;&lt;br /&gt;
			end&lt;br /&gt;
		elseif outvalue == 0 then&lt;br /&gt;
			sortkey = &#039;5000000000000000000&#039;&lt;br /&gt;
		else&lt;br /&gt;
			local mag = floor(log10(abs(outvalue)) + 1e-14)&lt;br /&gt;
			local prefix&lt;br /&gt;
			if outvalue &amp;gt; 0 then&lt;br /&gt;
				prefix = 7000 + mag&lt;br /&gt;
			else&lt;br /&gt;
				prefix = 2999 - mag&lt;br /&gt;
				outvalue = outvalue + 10^(mag+1)&lt;br /&gt;
			end&lt;br /&gt;
			sortkey = format(&#039;%d&#039;, prefix) .. format(&#039;%015.0f&#039;, floor(outvalue * 10^(14-mag)))&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local sortspan&lt;br /&gt;
	if sortkey and not parms.table_align then&lt;br /&gt;
		sortspan = parms.opt_sortable_debug and&lt;br /&gt;
			&#039;&amp;lt;span data-sort-value=&amp;quot;&#039; .. sortkey .. &#039;♠&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;border:1px solid&amp;quot;&amp;gt;&#039; .. sortkey .. &#039;♠&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&#039; or&lt;br /&gt;
			&#039;&amp;lt;span data-sort-value=&amp;quot;&#039; .. sortkey .. &#039;♠&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
		parms.join_before = sortspan&lt;br /&gt;
	end&lt;br /&gt;
	if parms.table_align then&lt;br /&gt;
		local sort&lt;br /&gt;
		if sortkey then&lt;br /&gt;
			sort = &#039; data-sort-value=&amp;quot;&#039; .. sortkey .. &#039;&amp;quot;&#039;&lt;br /&gt;
			if parms.opt_sortable_debug then&lt;br /&gt;
				parms.join_before = &#039;&amp;lt;span style=&amp;quot;border:1px solid&amp;quot;&amp;gt;&#039; .. sortkey .. &#039;&amp;lt;/span&amp;gt;&#039;&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			sort = &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		local style = &#039;style=&amp;quot;text-align:&#039; .. parms.table_align .. &#039;;&#039;&lt;br /&gt;
		local joins = {}&lt;br /&gt;
		for i = 1, 2 do&lt;br /&gt;
			joins[i] = (i == 1 and &#039;&#039; or &#039;\n|&#039;) .. style .. user_style(parms, i) .. &#039;&amp;quot;&#039; .. sort .. &#039;|&#039;&lt;br /&gt;
		end&lt;br /&gt;
		parms.table_joins = joins&lt;br /&gt;
	end&lt;br /&gt;
	return sortspan, scaled_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local cvt_to_hand&lt;br /&gt;
&lt;br /&gt;
local function cvtround(parms, info, in_current, out_current)&lt;br /&gt;
	-- Return true, t where t is a table with the conversion results; fields:&lt;br /&gt;
	--   show = rounded, formatted string with the result of converting value in info,&lt;br /&gt;
	--      using the rounding specified in parms.&lt;br /&gt;
	--   singular = true if result (after rounding and ignoring any negative sign)&lt;br /&gt;
	--      is &amp;quot;1&amp;quot;, or like &amp;quot;1.00&amp;quot;, or is a fraction with value &amp;lt; 1;&lt;br /&gt;
	--   (and more fields shown below, and a calculated &#039;absvalue&#039; field).&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	-- Input info.clean uses en digits (it has been translated, if necessary).&lt;br /&gt;
	-- Output show uses en or non-en digits as appropriate, or can be spelled.&lt;br /&gt;
	if out_current.builtin == &#039;hand&#039; then&lt;br /&gt;
		return cvt_to_hand(parms, info, in_current, out_current)&lt;br /&gt;
	end&lt;br /&gt;
	local invalue = in_current.builtin == &#039;hand&#039; and info.altvalue or info.value&lt;br /&gt;
	local outvalue, extra = convert(parms, invalue, info, in_current, out_current)&lt;br /&gt;
	if parms.need_table_or_sort then&lt;br /&gt;
		parms.need_table_or_sort = nil  -- process using first input value only&lt;br /&gt;
		make_table_or_sort(parms, invalue, info, in_current)&lt;br /&gt;
	end&lt;br /&gt;
	if extra then&lt;br /&gt;
		if not outvalue then return false, extra end&lt;br /&gt;
		invalue = extra.invalue or invalue&lt;br /&gt;
		outvalue = extra.outvalue&lt;br /&gt;
	end&lt;br /&gt;
	if not valid_number(outvalue) then&lt;br /&gt;
		return false, { &#039;cvt_invalid_num&#039; }&lt;br /&gt;
	end&lt;br /&gt;
	local isnegative&lt;br /&gt;
	if outvalue &amp;lt; 0 then&lt;br /&gt;
		isnegative = true&lt;br /&gt;
		outvalue = -outvalue&lt;br /&gt;
	end&lt;br /&gt;
	local precision, show, exponent&lt;br /&gt;
	local denominator = out_current.frac&lt;br /&gt;
	if denominator then&lt;br /&gt;
		show = fraction_table(outvalue, denominator)&lt;br /&gt;
	else&lt;br /&gt;
		precision = parms.precision&lt;br /&gt;
		if not precision then&lt;br /&gt;
			if parms.sigfig then&lt;br /&gt;
				show, exponent = make_sigfig(outvalue, parms.sigfig)&lt;br /&gt;
			elseif parms.opt_round then&lt;br /&gt;
				local n = parms.opt_round&lt;br /&gt;
				if n == 0.5 then&lt;br /&gt;
					local integer, fracpart = math.modf(floor(2 * outvalue + 0.5) / 2)&lt;br /&gt;
					if fracpart == 0 then&lt;br /&gt;
						show = format(&#039;%.0f&#039;, integer)&lt;br /&gt;
					else&lt;br /&gt;
						show = format(&#039;%.1f&#039;, integer + fracpart)&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					show = format(&#039;%.0f&#039;, floor((outvalue / n) + 0.5) * n)&lt;br /&gt;
				end&lt;br /&gt;
			elseif in_current.builtin == &#039;mach&#039; then&lt;br /&gt;
				local sigfig = info.clean:gsub(&#039;^[0.]+&#039;, &#039;&#039;):gsub(&#039;%.&#039;, &#039;&#039;):len() + 1&lt;br /&gt;
				show, exponent = make_sigfig(outvalue, sigfig)&lt;br /&gt;
			else&lt;br /&gt;
				local inclean = info.clean&lt;br /&gt;
				if extra then&lt;br /&gt;
					inclean = extra.clean or inclean&lt;br /&gt;
					show = extra.show&lt;br /&gt;
				end&lt;br /&gt;
				if not show then&lt;br /&gt;
					precision = default_precision(parms, invalue, inclean, info.denominator, outvalue, in_current, out_current, extra)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if precision then&lt;br /&gt;
		if precision &amp;gt;= 0 then&lt;br /&gt;
			local fudge&lt;br /&gt;
			if precision &amp;lt;= 8 then&lt;br /&gt;
				-- Add a fudge to handle common cases of bad rounding due to inability&lt;br /&gt;
				-- to precisely represent some values. This makes the following work:&lt;br /&gt;
				-- {{convert|-100.1|C|K}} and {{convert|5555000|um|m|2}}.&lt;br /&gt;
				-- Old template uses #expr round, which invokes PHP round().&lt;br /&gt;
				-- LATER: Investigate how PHP round() works.&lt;br /&gt;
				fudge = 2e-14&lt;br /&gt;
			else&lt;br /&gt;
				fudge = 0&lt;br /&gt;
			end&lt;br /&gt;
			local fmt = &#039;%.&#039; .. format(&#039;%d&#039;, precision) .. &#039;f&#039;&lt;br /&gt;
			local success&lt;br /&gt;
			success, show = pcall(format, fmt, outvalue + fudge)&lt;br /&gt;
			if not success then&lt;br /&gt;
				return false, { &#039;cvt_big_prec&#039;, tostring(precision) }&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			precision = -precision  -- #digits to zero (in addition to any digits after dot)&lt;br /&gt;
			local shift = 10 ^ precision&lt;br /&gt;
			show = format(&#039;%.0f&#039;, outvalue/shift)&lt;br /&gt;
			if show ~= &#039;0&#039; then&lt;br /&gt;
				exponent = #show + precision&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local t = format_number(parms, show, exponent, isnegative)&lt;br /&gt;
	if type(show) == &#039;string&#039; then&lt;br /&gt;
		-- Set singular using match because on some systems 0.99999999999999999 is 1.0.&lt;br /&gt;
		if exponent then&lt;br /&gt;
			t.singular = (exponent == 1 and show:match(&#039;^10*$&#039;))&lt;br /&gt;
		else&lt;br /&gt;
			t.singular = (show == &#039;1&#039; or show:match(&#039;^1%.0*$&#039;))&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		t.fraction_table = show&lt;br /&gt;
		t.singular = (outvalue &amp;lt;= 1)  -- cannot have &#039;fraction == 1&#039;, but if it were possible it would be singular&lt;br /&gt;
	end&lt;br /&gt;
	t.raw_absvalue = outvalue  -- absolute value before rounding&lt;br /&gt;
	return true, setmetatable(t, {&lt;br /&gt;
		__index = function (self, key)&lt;br /&gt;
			if key == &#039;absvalue&#039; then&lt;br /&gt;
				-- Calculate absolute value after rounding, if needed.&lt;br /&gt;
				local clean, exponent = rawget(self, &#039;clean&#039;), rawget(self, &#039;exponent&#039;)&lt;br /&gt;
				local value = tonumber(clean)  -- absolute value (any negative sign has been ignored)&lt;br /&gt;
				if exponent then&lt;br /&gt;
					value = value * 10^exponent&lt;br /&gt;
				end&lt;br /&gt;
				rawset(self, key, value)&lt;br /&gt;
				return value&lt;br /&gt;
			end&lt;br /&gt;
		end })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function cvt_to_hand(parms, info, in_current, out_current)&lt;br /&gt;
	-- Convert input to hands, inches.&lt;br /&gt;
	-- Return true, t where t is a table with the conversion results;&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	if parms.abbr_org == nil then&lt;br /&gt;
		out_current.usename = true  -- default is to show name not symbol&lt;br /&gt;
	end&lt;br /&gt;
	local precision = parms.precision&lt;br /&gt;
	local frac = out_current.frac&lt;br /&gt;
	if not frac and precision and precision &amp;gt; 1 then&lt;br /&gt;
		frac = (precision == 2) and 2 or 4&lt;br /&gt;
	end&lt;br /&gt;
	local out_next = out_current.out_next&lt;br /&gt;
	if out_next then&lt;br /&gt;
		-- Use magic knowledge to determine whether the next unit is inches without requiring i18n.&lt;br /&gt;
		-- The following ensures that when the output combination &amp;quot;hand in&amp;quot; is used, the inches&lt;br /&gt;
		-- value is rounded to match the hands value. Also, displaying say &amp;quot;61½&amp;quot; instead of 61.5&lt;br /&gt;
		-- is better as 61.5 implies the value is not 61.4.&lt;br /&gt;
		if out_next.exception == &#039;subunit_more_precision&#039; then&lt;br /&gt;
			out_next.frac = frac&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- Convert to inches; calculate hands from that.&lt;br /&gt;
	local dummy_unit_table = { scale = out_current.scale / 4, frac = frac }&lt;br /&gt;
	local success, outinfo = cvtround(parms, info, in_current, dummy_unit_table)&lt;br /&gt;
	if not success then return false, outinfo end&lt;br /&gt;
	local tfrac = outinfo.fraction_table&lt;br /&gt;
	local inches = outinfo.raw_absvalue&lt;br /&gt;
	if tfrac then&lt;br /&gt;
		inches = floor(inches)  -- integer part only; fraction added later&lt;br /&gt;
	else&lt;br /&gt;
		inches = floor(inches + 0.5)  -- a hands measurement never shows decimals of an inch&lt;br /&gt;
	end&lt;br /&gt;
	local hands, inches = divide(inches, 4)&lt;br /&gt;
	outinfo.absvalue = hands + inches/4  -- supposed to be the absolute rounded value, but this is close enough&lt;br /&gt;
	local inchstr = tostring(inches)  -- &#039;0&#039;, &#039;1&#039;, &#039;2&#039; or &#039;3&#039;&lt;br /&gt;
	if precision and precision &amp;lt;= 0 then  -- using negative or 0 for precision rounds to nearest hand&lt;br /&gt;
		hands = floor(outinfo.raw_absvalue/4 + 0.5)&lt;br /&gt;
		inchstr = &#039;&#039;&lt;br /&gt;
	elseif tfrac then&lt;br /&gt;
		-- Always show an integer before fraction (like &amp;quot;15.0½&amp;quot;) because &amp;quot;15½&amp;quot; means 15-and-a-half hands.&lt;br /&gt;
		inchstr = numdot .. format_fraction(parms, &#039;out&#039;, false, inchstr, tfrac.numstr, tfrac.denstr)&lt;br /&gt;
	else&lt;br /&gt;
		inchstr = numdot .. from_en(inchstr)&lt;br /&gt;
	end&lt;br /&gt;
	outinfo.show = outinfo.sign .. with_separator(parms, format(&#039;%.0f&#039;, hands)) .. inchstr&lt;br /&gt;
	return true, outinfo&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function evaluate_condition(value, condition)&lt;br /&gt;
	-- Return true or false from applying a conditional expression to value,&lt;br /&gt;
	-- or throw an error if invalid.&lt;br /&gt;
	-- A very limited set of expressions is supported:&lt;br /&gt;
	--    v &amp;lt; 9&lt;br /&gt;
	--    v * 9 &amp;lt; 9&lt;br /&gt;
	-- where&lt;br /&gt;
	--    &#039;v&#039; is replaced with value&lt;br /&gt;
	--    9 is any number (as defined by Lua tonumber)&lt;br /&gt;
	--      only en digits are accepted&lt;br /&gt;
	--    &#039;&amp;lt;&#039; can also be &#039;&amp;lt;=&#039; or &#039;&amp;gt;&#039; or &#039;&amp;gt;=&#039;&lt;br /&gt;
	-- In addition, the following form is supported:&lt;br /&gt;
	--    LHS and RHS&lt;br /&gt;
	-- where&lt;br /&gt;
	--    LHS, RHS = any of above expressions.&lt;br /&gt;
	local function compare(value, text)&lt;br /&gt;
		local arithop, factor, compop, limit = text:match(&#039;^%s*v%s*([*]?)(.-)([&amp;lt;&amp;gt;]=?)(.*)$&#039;)&lt;br /&gt;
		if arithop == nil then&lt;br /&gt;
			error(&#039;Invalid default expression&#039;, 0)&lt;br /&gt;
		elseif arithop == &#039;*&#039; then&lt;br /&gt;
			factor = tonumber(factor)&lt;br /&gt;
			if factor == nil then&lt;br /&gt;
				error(&#039;Invalid default expression&#039;, 0)&lt;br /&gt;
			end&lt;br /&gt;
			value = value * factor&lt;br /&gt;
		end&lt;br /&gt;
		limit = tonumber(limit)&lt;br /&gt;
		if limit == nil then&lt;br /&gt;
			error(&#039;Invalid default expression&#039;, 0)&lt;br /&gt;
		end&lt;br /&gt;
		if compop == &#039;&amp;lt;&#039; then&lt;br /&gt;
			return value &amp;lt; limit&lt;br /&gt;
		elseif compop == &#039;&amp;lt;=&#039; then&lt;br /&gt;
			return value &amp;lt;= limit&lt;br /&gt;
		elseif compop == &#039;&amp;gt;&#039; then&lt;br /&gt;
			return value &amp;gt; limit&lt;br /&gt;
		elseif compop == &#039;&amp;gt;=&#039; then&lt;br /&gt;
			return value &amp;gt;= limit&lt;br /&gt;
		end&lt;br /&gt;
		error(&#039;Invalid default expression&#039;, 0)  -- should not occur&lt;br /&gt;
	end&lt;br /&gt;
	local lhs, rhs = condition:match(&#039;^(.-%W)and(%W.*)&#039;)&lt;br /&gt;
	if lhs == nil then&lt;br /&gt;
		return compare(value, condition)&lt;br /&gt;
	end&lt;br /&gt;
	return compare(value, lhs) and compare(value, rhs)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_default(value, unit_table)&lt;br /&gt;
	-- Return true, s where s = name of unit&#039;s default output unit,&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	-- Some units have a default that depends on the input value&lt;br /&gt;
	-- (the first value if a range of values is used).&lt;br /&gt;
	-- If &#039;!&#039; is in the default, the first bang-delimited field is an&lt;br /&gt;
	-- expression that uses &#039;v&#039; to represent the input value.&lt;br /&gt;
	-- Example: &#039;v &amp;lt; 120 ! small ! big ! suffix&#039; (suffix is optional)&lt;br /&gt;
	-- evaluates &#039;v &amp;lt; 120&#039; as a boolean with result&lt;br /&gt;
	-- &#039;smallsuffix&#039; if (value &amp;lt; 120), or &#039;bigsuffix&#039; otherwise.&lt;br /&gt;
	-- Input must use en digits and &#039;.&#039; decimal mark.&lt;br /&gt;
	local default = data_code.default_exceptions[unit_table.defkey or unit_table.symbol] or unit_table.default&lt;br /&gt;
	if not default then&lt;br /&gt;
		local per = unit_table.per&lt;br /&gt;
		if per then&lt;br /&gt;
			local function a_default(v, u)&lt;br /&gt;
				local success, ucode = get_default(v, u)&lt;br /&gt;
				if not success then&lt;br /&gt;
					return &#039;?&#039;  -- an unlikely error has occurred; will cause lookup of default to fail&lt;br /&gt;
				end&lt;br /&gt;
				-- Attempt to use only the first unit if a combination or output multiple.&lt;br /&gt;
				-- This is not bulletproof but should work for most cases.&lt;br /&gt;
				-- Where it does not work, the convert will need to specify the wanted output unit.&lt;br /&gt;
				local t = all_units[ucode]&lt;br /&gt;
				if t then&lt;br /&gt;
					local combo = t.combination&lt;br /&gt;
					if combo then&lt;br /&gt;
						-- For a multiple like ftin, the &amp;quot;first&amp;quot; unit (ft) is last in the combination.&lt;br /&gt;
						local i = t.multiple and table_len(combo) or 1&lt;br /&gt;
						ucode = combo[i]&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					-- Try for an automatically generated combination.&lt;br /&gt;
					local item = ucode:match(&#039;^(.-)%+&#039;) or ucode:match(&#039;^(%S+)%s&#039;)&lt;br /&gt;
					if all_units[item] then&lt;br /&gt;
						return item&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				return ucode&lt;br /&gt;
			end&lt;br /&gt;
			local unit1, unit2 = per[1], per[2]&lt;br /&gt;
			local def1 = (unit1 and a_default(value, unit1) or unit_table.vprefix or &#039;&#039;)&lt;br /&gt;
			local def2 = a_default(1, unit2)  -- 1 because per unit of denominator&lt;br /&gt;
			return true, def1 .. &#039;/&#039; .. def2&lt;br /&gt;
		end&lt;br /&gt;
		return false, { &#039;cvt_no_default&#039;, unit_table.symbol }&lt;br /&gt;
	end&lt;br /&gt;
	if default:find(&#039;!&#039;, 1, true) == nil then&lt;br /&gt;
		return true, default&lt;br /&gt;
	end&lt;br /&gt;
	local t = split(default, &#039;!&#039;)&lt;br /&gt;
	if #t == 3 or #t == 4 then&lt;br /&gt;
		local success, result = pcall(evaluate_condition, value, t[1])&lt;br /&gt;
		if success then&lt;br /&gt;
			default = result and t[2] or t[3]&lt;br /&gt;
			if #t == 4 then&lt;br /&gt;
				default = default .. t[4]&lt;br /&gt;
			end&lt;br /&gt;
			return true, default&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false, { &#039;cvt_bad_default&#039;, unit_table.symbol }&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local linked_pages  -- to record linked pages so will not link to the same page more than once&lt;br /&gt;
&lt;br /&gt;
local function unlink(unit_table)&lt;br /&gt;
	-- Forget that the given unit has previously been linked (if it has).&lt;br /&gt;
	-- That is needed when processing a range of inputs or outputs when an id&lt;br /&gt;
	-- for the first range value may have been evaluated, but only an id for&lt;br /&gt;
	-- the last value is displayed, and that id may need to be linked.&lt;br /&gt;
	linked_pages[unit_table.unitcode or unit_table] = nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_link(link, id, unit_table)&lt;br /&gt;
	-- Return wikilink &amp;quot;[[link|id]]&amp;quot;, possibly abbreviated as in examples:&lt;br /&gt;
	--   [[Mile|mile]]  --&amp;gt; [[mile]]&lt;br /&gt;
	--   [[Mile|miles]] --&amp;gt; [[mile]]s&lt;br /&gt;
	-- However, just id is returned if:&lt;br /&gt;
	-- * no link given (so caller does not need to check if a link was defined); or&lt;br /&gt;
	-- * link has previously been used during the current convert (to avoid overlinking).&lt;br /&gt;
	local link_key&lt;br /&gt;
	if unit_table then&lt;br /&gt;
		link_key = unit_table.unitcode or unit_table&lt;br /&gt;
	else&lt;br /&gt;
		link_key = link&lt;br /&gt;
	end&lt;br /&gt;
	if not link or link == &#039;&#039; or linked_pages[link_key] then&lt;br /&gt;
		return id&lt;br /&gt;
	end&lt;br /&gt;
	linked_pages[link_key] = true&lt;br /&gt;
	-- Following only works for language en, but it should be safe on other wikis,&lt;br /&gt;
	-- and overhead of doing it generally does not seem worthwhile.&lt;br /&gt;
	local l = link:sub(1, 1):lower() .. link:sub(2)&lt;br /&gt;
	if link == id or l == id then&lt;br /&gt;
		return &#039;[[&#039; .. id .. &#039;]]&#039;&lt;br /&gt;
	elseif link .. &#039;s&#039; == id or l .. &#039;s&#039; == id then&lt;br /&gt;
		return &#039;[[&#039; .. id:sub(1, -2) .. &#039;]]s&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;[[&#039; .. link .. &#039;|&#039; .. id .. &#039;]]&#039;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function variable_name(clean, unit_table, exp_multiplier, key_id)&lt;br /&gt;
	-- A unit name may depend on the value in some languages.&lt;br /&gt;
	-- Parameter clean is the unsigned value in en digits, as a string.&lt;br /&gt;
	-- It may represent a number (&amp;quot;1.0&amp;quot;) or a fraction (&amp;quot;1+2/3&amp;quot;).&lt;br /&gt;
	-- In varname, fields are separated with &amp;quot;!&amp;quot; and are not empty.&lt;br /&gt;
	-- A field for a unit using an SI prefix has the prefix name inserted,&lt;br /&gt;
	-- replacing &#039;#&#039; if found, or before the field otherwise.&lt;br /&gt;
	if clean:match(&#039;[./]&#039;) then  -- float or fraction&lt;br /&gt;
		if exp_multiplier then&lt;br /&gt;
			clean = exp_multiplier  -- force selection of name for a large integer&lt;br /&gt;
		else&lt;br /&gt;
			clean = 34.5  -- force selection of name for a float value&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		clean = tonumber(clean) * (exp_multiplier or 1)&lt;br /&gt;
	end&lt;br /&gt;
	local name1, vname&lt;br /&gt;
	if key_id == &#039;pername&#039; and unit_table.pername then&lt;br /&gt;
		vname = unit_table.pername&lt;br /&gt;
	elseif unit_table.varname then&lt;br /&gt;
		local splitvname = split(unit_table.varname, &#039;!&#039;)&lt;br /&gt;
		name1 = unit_table.name1&lt;br /&gt;
		vname = mw.language.getContentLanguage():convertPlural(clean, name1, unpack(splitvname))&lt;br /&gt;
	else&lt;br /&gt;
		return clean == 1 and unit_table.name1 or unit_table.name2&lt;br /&gt;
	end&lt;br /&gt;
	if vname == name1 then&lt;br /&gt;
		-- SI prefix (if any) has been inserted by unit_prefixed_mt.&lt;br /&gt;
	else&lt;br /&gt;
		local si_name = rawget(unit_table, &#039;si_name&#039;) or &#039;&#039;&lt;br /&gt;
		local pos = vname:find(&#039;#&#039;, 1, true)&lt;br /&gt;
		if pos then&lt;br /&gt;
			vname = vname:sub(1, pos - 1) .. si_name .. vname:sub(pos + 1)&lt;br /&gt;
		else&lt;br /&gt;
			vname = si_name .. vname&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return vname&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function linked_id(parms, unit_table, key_id, want_link, clean, exp_multiplier)&lt;br /&gt;
	-- Return final unit id (symbol or name), optionally with a wikilink,&lt;br /&gt;
	-- and update unit_table.sep if required.&lt;br /&gt;
	-- key_id is one of: &#039;symbol&#039;, &#039;sym_us&#039;, &#039;name1&#039;, &#039;name1_us&#039;, &#039;name2&#039;, &#039;name2_us&#039;, &#039;pername&#039;.&lt;br /&gt;
	local abbr_on = (key_id == &#039;symbol&#039; or key_id == &#039;sym_us&#039;)&lt;br /&gt;
	if abbr_on and want_link then&lt;br /&gt;
		local symlink = rawget(unit_table, &#039;symlink&#039;)&lt;br /&gt;
		if symlink then&lt;br /&gt;
			return symlink  -- for exceptions that have the linked symbol built-in&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local multiplier = rawget(unit_table, &#039;multiplier&#039;)&lt;br /&gt;
	local per = unit_table.per&lt;br /&gt;
	if per then&lt;br /&gt;
		local paren1, paren2 = &#039;&#039;, &#039;&#039;  -- possible parentheses around bottom unit&lt;br /&gt;
		local unit1 = per[1]  -- top unit_table, or nil&lt;br /&gt;
		local unit2 = per[2]  -- bottom unit_table&lt;br /&gt;
		if abbr_on then&lt;br /&gt;
			if not unit1 then&lt;br /&gt;
				unit_table.sep = &#039;&#039;  -- no separator in &amp;quot;$2/acre&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			if not want_link then&lt;br /&gt;
				local symbol = unit_table.symbol_raw&lt;br /&gt;
				if symbol then&lt;br /&gt;
					return symbol  -- for exceptions that have the symbol built-in&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if (unit2.symbol):find(&#039;⋅&#039;, 1, true) then&lt;br /&gt;
				paren1, paren2 = &#039;(&#039;, &#039;)&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local key_id2  -- unit2 is always singular&lt;br /&gt;
		if key_id == &#039;name2&#039; then&lt;br /&gt;
			key_id2 = &#039;name1&#039;&lt;br /&gt;
		elseif key_id == &#039;name2_us&#039; then&lt;br /&gt;
			key_id2 = &#039;name1_us&#039;&lt;br /&gt;
		else&lt;br /&gt;
			key_id2 = key_id&lt;br /&gt;
		end&lt;br /&gt;
		if key_id2 == &#039;name1&#039; or key_id2 == &#039;name1_us&#039; then&lt;br /&gt;
			key_id2 = unit2.pername and &#039;pername&#039; or key_id2  -- ukwiki has some units with a different name in &amp;quot;per unitname&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		local result&lt;br /&gt;
		if abbr_on then&lt;br /&gt;
			result = &#039;/&#039;&lt;br /&gt;
		elseif omitsep then&lt;br /&gt;
			result = per_word&lt;br /&gt;
		elseif unit1 then&lt;br /&gt;
			result = &#039; &#039; .. per_word .. &#039; &#039;&lt;br /&gt;
		else&lt;br /&gt;
			result = per_word .. &#039; &#039;&lt;br /&gt;
		end&lt;br /&gt;
		if want_link and unit_table.link then&lt;br /&gt;
			if varname and not abbr_on then&lt;br /&gt;
				result = (unit1 and variable_name(clean, unit1, exp_multiplier) or &#039;&#039;) .. result .. variable_name(&#039;1&#039;, unit2, exp_multiplier, key_id2)&lt;br /&gt;
			else&lt;br /&gt;
				result = (unit1 and linked_id(parms, unit1, key_id, false, clean) or &#039;&#039;) .. result .. linked_id(parms, unit2, key_id2, false, &#039;1&#039;)&lt;br /&gt;
			end&lt;br /&gt;
			if omit_separator(result) then&lt;br /&gt;
				unit_table.sep = &#039;&#039;&lt;br /&gt;
			end&lt;br /&gt;
			return make_link(unit_table.link, result, unit_table)&lt;br /&gt;
		end&lt;br /&gt;
		if unit1 then&lt;br /&gt;
			result = linked_id(parms, unit1, key_id, want_link, clean) .. result&lt;br /&gt;
			if unit1.sep then&lt;br /&gt;
				unit_table.sep = unit1.sep&lt;br /&gt;
			end&lt;br /&gt;
		elseif omitsep then&lt;br /&gt;
			unit_table.sep = &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		return result .. paren1 .. linked_id(parms, unit2, key_id2, want_link, &#039;1&#039;) .. paren2&lt;br /&gt;
	end&lt;br /&gt;
	if multiplier then&lt;br /&gt;
		-- A multiplier (like &amp;quot;100&amp;quot; in &amp;quot;100km&amp;quot;) forces the unit to be plural.&lt;br /&gt;
		multiplier = from_en(multiplier)&lt;br /&gt;
		if not omitsep then&lt;br /&gt;
			multiplier = multiplier .. (abbr_on and &#039;&amp;amp;nbsp;&#039; or &#039; &#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if not abbr_on then&lt;br /&gt;
			if key_id == &#039;name1&#039; then&lt;br /&gt;
				key_id = &#039;name2&#039;&lt;br /&gt;
			elseif key_id == &#039;name1_us&#039; then&lt;br /&gt;
				key_id = &#039;name2_us&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		multiplier = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local id = unit_table.fixed_name or ((varname and not abbr_on) and variable_name(clean, unit_table, exp_multiplier, key_id) or unit_table[key_id])&lt;br /&gt;
	if omit_separator(id) then&lt;br /&gt;
		unit_table.sep = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if want_link then&lt;br /&gt;
		local link = data_code.link_exceptions[unit_table.linkey or unit_table.symbol] or unit_table.link&lt;br /&gt;
		if link then&lt;br /&gt;
			local before = &#039;&#039;&lt;br /&gt;
			local i = unit_table.customary&lt;br /&gt;
			if i == 1 and parms.opt_sp_us then&lt;br /&gt;
				i = 2  -- show &amp;quot;U.S.&amp;quot; not &amp;quot;US&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			if i == 3 and abbr_on then&lt;br /&gt;
				i = 4  -- abbreviate &amp;quot;imperial&amp;quot; to &amp;quot;imp&amp;quot;&lt;br /&gt;
			end&lt;br /&gt;
			local customary = text_code.customary_units[i]&lt;br /&gt;
			if customary then&lt;br /&gt;
				-- LATER: This works for language en only, but it&#039;s esoteric so ignore for now.&lt;br /&gt;
				local pertext&lt;br /&gt;
				if id:sub(1, 1) == &#039;/&#039; then&lt;br /&gt;
					-- Want unit &amp;quot;/USgal&amp;quot; to display as &amp;quot;/U.S. gal&amp;quot;, not &amp;quot;U.S. /gal&amp;quot;.&lt;br /&gt;
					pertext = &#039;/&#039;&lt;br /&gt;
					id = id:sub(2)&lt;br /&gt;
				elseif id:sub(1, 4) == &#039;per &#039; then&lt;br /&gt;
					-- Similarly want &amp;quot;per U.S. gallon&amp;quot;, not &amp;quot;U.S. per gallon&amp;quot; (but in practice this is unlikely to be used).&lt;br /&gt;
					pertext = &#039;per &#039;&lt;br /&gt;
					id = id:sub(5)&lt;br /&gt;
				else&lt;br /&gt;
					pertext = &#039;&#039;&lt;br /&gt;
				end&lt;br /&gt;
				-- Omit any &amp;quot;US&amp;quot;/&amp;quot;U.S.&amp;quot;/&amp;quot;imp&amp;quot;/&amp;quot;imperial&amp;quot; from start of id since that will be inserted.&lt;br /&gt;
				local removes = (i &amp;lt; 3) and { &#039;US&amp;amp;nbsp;&#039;, &#039;US &#039;, &#039;U.S.&amp;amp;nbsp;&#039;, &#039;U.S. &#039; } or { &#039;imp&amp;amp;nbsp;&#039;, &#039;imp &#039;, &#039;imperial &#039; }&lt;br /&gt;
				for _, prefix in ipairs(removes) do&lt;br /&gt;
					local plen = #prefix&lt;br /&gt;
					if id:sub(1, plen) == prefix then&lt;br /&gt;
						id = id:sub(plen + 1)&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				before = pertext .. make_link(customary.link, customary[1]) .. &#039; &#039;&lt;br /&gt;
			end&lt;br /&gt;
			id = before .. make_link(link, id, unit_table)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return multiplier .. id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_id(parms, which, unit_table)&lt;br /&gt;
	-- Return id, f where&lt;br /&gt;
	--   id = unit name or symbol, possibly modified&lt;br /&gt;
	--   f = true if id is a name, or false if id is a symbol&lt;br /&gt;
	-- using the value for index &#039;which&#039;, and for &#039;in&#039; or &#039;out&#039; (unit_table.inout).&lt;br /&gt;
	-- Result is &#039;&#039; if no symbol/name is to be used.&lt;br /&gt;
	-- In addition, set unit_table.sep = &#039; &#039; or &#039;&amp;amp;nbsp;&#039; or &#039;&#039;&lt;br /&gt;
	-- (the separator that caller will normally insert before the id).&lt;br /&gt;
	if parms.opt_values then&lt;br /&gt;
		unit_table.sep = &#039;&#039;&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local inout = unit_table.inout&lt;br /&gt;
	local info = unit_table.valinfo[which]&lt;br /&gt;
	local lk = parms.lk&lt;br /&gt;
	local want_link = (lk == &#039;on&#039; or lk == inout)&lt;br /&gt;
	local singular = info.singular&lt;br /&gt;
	local want_name&lt;br /&gt;
	local exp_multiplier&lt;br /&gt;
	if unit_table.usename then&lt;br /&gt;
		want_name = true&lt;br /&gt;
	else&lt;br /&gt;
		if parms.abbr_org == nil then&lt;br /&gt;
			if parms.wantname then&lt;br /&gt;
				want_name = true&lt;br /&gt;
			end&lt;br /&gt;
			if unit_table.usesymbol then&lt;br /&gt;
				want_name = false&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if want_name == nil then&lt;br /&gt;
			local abbr = parms.abbr&lt;br /&gt;
			if abbr == &#039;on&#039; or abbr == inout or (abbr == &#039;mos&#039; and inout == &#039;out&#039;) then&lt;br /&gt;
				want_name = false&lt;br /&gt;
			else&lt;br /&gt;
				want_name = true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local key&lt;br /&gt;
	if want_name then&lt;br /&gt;
		if lk == nil and unit_table.builtin == &#039;hand&#039; then&lt;br /&gt;
			want_link = true&lt;br /&gt;
		end&lt;br /&gt;
		if parms.opt_use_nbsp then&lt;br /&gt;
			unit_table.sep = &#039;&amp;amp;nbsp;&#039;&lt;br /&gt;
		else&lt;br /&gt;
			unit_table.sep = &#039; &#039;&lt;br /&gt;
		end&lt;br /&gt;
		if parms.opt_singular then&lt;br /&gt;
			local value&lt;br /&gt;
			if inout == &#039;in&#039; then&lt;br /&gt;
				value = info.value&lt;br /&gt;
			else&lt;br /&gt;
				value = info.absvalue&lt;br /&gt;
			end&lt;br /&gt;
			if value then  -- some unusual units do not always set value field&lt;br /&gt;
				value = abs(value)&lt;br /&gt;
				singular = (0 &amp;lt; value and value &amp;lt; 1.0001)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if unit_table.engscale then&lt;br /&gt;
			-- engscale: so &amp;quot;|1|e3kg&amp;quot; gives &amp;quot;1 thousand kilograms&amp;quot; (plural)&lt;br /&gt;
			singular = false&lt;br /&gt;
			exp_multiplier = 10^unit_table.engscale.exponent  -- &#039;1 gram&#039; and &#039;1 thousand grams&#039;, for example, may use different names for the unit in some languages&lt;br /&gt;
		end&lt;br /&gt;
		key = (parms.opt_adjectival or singular) and &#039;name1&#039; or &#039;name2&#039;&lt;br /&gt;
		if parms.opt_sp_us then&lt;br /&gt;
			key = key .. &#039;_us&#039;&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if unit_table.builtin == &#039;hand&#039; then&lt;br /&gt;
			if parms.opt_hand_hh then&lt;br /&gt;
				unit_table.symbol = &#039;hh&#039;  -- LATER: might want i18n applied to this&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		unit_table.sep = &#039;&amp;amp;nbsp;&#039;&lt;br /&gt;
		key = parms.opt_sp_us and &#039;sym_us&#039; or &#039;symbol&#039;&lt;br /&gt;
	end&lt;br /&gt;
	return linked_id(parms, unit_table, key, want_link, info.clean, exp_multiplier), want_name&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function decorate_value(parms, unit_table, which, enable_number_word)&lt;br /&gt;
	-- If needed, update unit_table so values will be shown with extra information.&lt;br /&gt;
	-- For consistency with the old template (but different from fmtpower),&lt;br /&gt;
	-- the style to display powers of 10 includes &amp;quot;display:none&amp;quot; to allow some&lt;br /&gt;
	-- browsers to copy, for example, &amp;quot;10³&amp;quot; as &amp;quot;10^3&amp;quot;, rather than as &amp;quot;103&amp;quot;.&lt;br /&gt;
	-- The engscale table may have entries such as either of the following:&lt;br /&gt;
	--   [&amp;quot;3&amp;quot;]  = { &amp;quot;thousand&amp;quot;, exponent = 3 },&lt;br /&gt;
	--   [&amp;quot;3&amp;quot;]  = { name1 = &amp;quot;A&amp;quot;, varname = &amp;quot;B!C!D&amp;quot;, exponent = 3 },&lt;br /&gt;
	-- The first option always uses &amp;quot;thousand&amp;quot; as the exponent name.&lt;br /&gt;
	-- The second option uses one of A, B, C, D as the exponent name, depending on the value.&lt;br /&gt;
	local info&lt;br /&gt;
	local engscale = unit_table.engscale&lt;br /&gt;
	local prefix = unit_table.vprefix&lt;br /&gt;
	if engscale or prefix then&lt;br /&gt;
		info = unit_table.valinfo[which]&lt;br /&gt;
		if info.decorated then&lt;br /&gt;
			return  -- do not redecorate if repeating convert&lt;br /&gt;
		end&lt;br /&gt;
		info.decorated = true&lt;br /&gt;
		if engscale then&lt;br /&gt;
			-- Range |10|-|20|e3km| gives &#039;10×10³–20×10³&#039; or &#039;10–20 thousand&#039;.&lt;br /&gt;
			local inout = unit_table.inout&lt;br /&gt;
			local abbr = parms.abbr&lt;br /&gt;
			if (abbr == &#039;on&#039; or abbr == inout) and not (unit_table.this_number_word or parms.number_word) then&lt;br /&gt;
				info.show = info.show ..&lt;br /&gt;
					&#039;&amp;lt;span style=&amp;quot;margin-left:0.2em&amp;quot;&amp;gt;×&amp;lt;span style=&amp;quot;margin-left:0.1em&amp;quot;&amp;gt;&#039; ..&lt;br /&gt;
					from_en(&#039;10&#039;) ..&lt;br /&gt;
					&#039;&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;s style=&amp;quot;display:none&amp;quot;&amp;gt;^&amp;lt;/s&amp;gt;&amp;lt;sup&amp;gt;&#039; ..&lt;br /&gt;
					from_en(tostring(engscale.exponent)) .. &#039;&amp;lt;/sup&amp;gt;&#039;&lt;br /&gt;
			elseif enable_number_word then&lt;br /&gt;
				local number_id&lt;br /&gt;
				local name = engscale.varname and variable_name(info.clean, engscale) or engscale[1]&lt;br /&gt;
				if parms.lk == &#039;on&#039; or parms.lk == inout then&lt;br /&gt;
					number_id = make_link(engscale.link, name)&lt;br /&gt;
				else&lt;br /&gt;
					number_id = name&lt;br /&gt;
				end&lt;br /&gt;
				-- WP:NUMERAL recommends &amp;quot;&amp;amp;nbsp;&amp;quot; in values like &amp;quot;12 million&amp;quot;.&lt;br /&gt;
				info.show = info.show .. (parms.opt_adjectival and &#039;-&#039; or &#039;&amp;amp;nbsp;&#039;) .. number_id&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if prefix then&lt;br /&gt;
			info.show = prefix .. info.show&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function process_input(parms, in_current)&lt;br /&gt;
	-- Processing required once per conversion.&lt;br /&gt;
	-- Return block of text to represent input (value/unit).&lt;br /&gt;
	if parms.opt_output_only or parms.opt_output_number_only or parms.opt_output_unit_only then&lt;br /&gt;
		parms.joins = { &#039;&#039;, &#039;&#039; }&lt;br /&gt;
		return &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local first_unit&lt;br /&gt;
	local composite = in_current.composite  -- nil or table of units&lt;br /&gt;
	if composite then&lt;br /&gt;
		first_unit = composite[1]&lt;br /&gt;
	else&lt;br /&gt;
		first_unit = in_current&lt;br /&gt;
	end&lt;br /&gt;
	local id1, want_name = make_id(parms, 1, first_unit)&lt;br /&gt;
	local sep = first_unit.sep  -- separator between value and unit, set by make_id&lt;br /&gt;
	local preunit = parms.preunit1&lt;br /&gt;
	if preunit then&lt;br /&gt;
		sep = &#039;&#039;  -- any separator is included in preunit&lt;br /&gt;
	else&lt;br /&gt;
		preunit = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_input_unit_only then&lt;br /&gt;
		parms.joins = { &#039;&#039;, &#039;&#039; }&lt;br /&gt;
		if composite then&lt;br /&gt;
			local parts = { id1 }&lt;br /&gt;
			for i, unit in ipairs(composite) do&lt;br /&gt;
				if i &amp;gt; 1 then&lt;br /&gt;
					table.insert(parts, (make_id(parms, 1, unit)))&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			id1 = table.concat(parts, &#039; &#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if want_name and parms.opt_adjectival then&lt;br /&gt;
			return preunit .. hyphenated(id1)&lt;br /&gt;
		end&lt;br /&gt;
		return  preunit .. id1&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_also_symbol and not composite and not parms.opt_flip then&lt;br /&gt;
		local join1 = parms.joins[1]&lt;br /&gt;
		if join1 == &#039; (&#039; or join1 == &#039; [&#039; then&lt;br /&gt;
			parms.joins = { &#039; [&#039; .. first_unit[parms.opt_sp_us and &#039;sym_us&#039; or &#039;symbol&#039;] .. &#039;]&#039; .. join1 , parms.joins[2] }&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if in_current.builtin == &#039;mach&#039; and first_unit.sep ~= &#039;&#039; then  -- &#039;&#039; means omitsep with non-enwiki name&lt;br /&gt;
		local prefix = id1 .. &#039;&amp;amp;nbsp;&#039;&lt;br /&gt;
		local range = parms.range&lt;br /&gt;
		local valinfo = first_unit.valinfo&lt;br /&gt;
		local result = prefix .. valinfo[1].show&lt;br /&gt;
		if range then&lt;br /&gt;
			-- For simplicity and because more not needed, handle one range item only.&lt;br /&gt;
			local prefix2 = make_id(parms, 2, first_unit) .. &#039;&amp;amp;nbsp;&#039;&lt;br /&gt;
			result = range_text(range[1], want_name, parms, result, prefix2 .. valinfo[2].show, &#039;in&#039;, {spaced=true})&lt;br /&gt;
		end&lt;br /&gt;
		return preunit .. result&lt;br /&gt;
	end&lt;br /&gt;
	if composite then&lt;br /&gt;
		-- Simplify: assume there is no range, and no decoration.&lt;br /&gt;
		local mid = (not parms.opt_flip) and parms.mid or &#039;&#039;&lt;br /&gt;
		local sep1 = &#039;&amp;amp;nbsp;&#039;&lt;br /&gt;
		local sep2 = &#039; &#039;&lt;br /&gt;
		if parms.opt_adjectival and want_name then&lt;br /&gt;
			sep1 = &#039;-&#039;&lt;br /&gt;
			sep2 = &#039;-&#039;&lt;br /&gt;
		end&lt;br /&gt;
		if omitsep and sep == &#039;&#039; then&lt;br /&gt;
			-- Testing the id of the most significant unit should be sufficient.&lt;br /&gt;
			sep1 = &#039;&#039;&lt;br /&gt;
			sep2 = &#039;&#039;&lt;br /&gt;
		end&lt;br /&gt;
		local parts = { first_unit.valinfo[1].show .. sep1 .. id1 }&lt;br /&gt;
		for i, unit in ipairs(composite) do&lt;br /&gt;
			if i &amp;gt; 1 then&lt;br /&gt;
				table.insert(parts, unit.valinfo[1].show .. sep1 .. (make_id(parms, 1, unit)))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		return table.concat(parts, sep2) .. mid&lt;br /&gt;
	end&lt;br /&gt;
	local add_unit = (parms.abbr == &#039;mos&#039;) or&lt;br /&gt;
		parms[parms.opt_flip and &#039;out_range_x&#039; or &#039;in_range_x&#039;] or&lt;br /&gt;
		(not want_name and parms.abbr_range_x)&lt;br /&gt;
	local range = parms.range&lt;br /&gt;
	if range and not add_unit then&lt;br /&gt;
		unlink(first_unit)&lt;br /&gt;
	end&lt;br /&gt;
	local id = range and make_id(parms, range.n + 1, first_unit) or id1&lt;br /&gt;
	local extra, was_hyphenated = hyphenated_maybe(parms, want_name, sep, id, &#039;in&#039;)&lt;br /&gt;
	if was_hyphenated then&lt;br /&gt;
		add_unit = false&lt;br /&gt;
	end&lt;br /&gt;
	local result&lt;br /&gt;
	local valinfo = first_unit.valinfo&lt;br /&gt;
	if range then&lt;br /&gt;
		for i = 0, range.n do&lt;br /&gt;
			local enable_number_word&lt;br /&gt;
			if i == range.n then&lt;br /&gt;
				add_unit = false&lt;br /&gt;
				enable_number_word = true&lt;br /&gt;
			end&lt;br /&gt;
			decorate_value(parms, first_unit, i+1, enable_number_word)&lt;br /&gt;
			local show = valinfo[i+1].show&lt;br /&gt;
			if add_unit then&lt;br /&gt;
				show = show .. first_unit.sep .. (i == 0 and id1 or make_id(parms, i+1, first_unit))&lt;br /&gt;
			end&lt;br /&gt;
			if i == 0 then&lt;br /&gt;
				result = show&lt;br /&gt;
			else&lt;br /&gt;
				result = range_text(range[i], want_name, parms, result, show, &#039;in&#039;)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		decorate_value(parms, first_unit, 1, true)&lt;br /&gt;
		result = valinfo[1].show&lt;br /&gt;
	end&lt;br /&gt;
	return result .. preunit .. extra&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function process_one_output(parms, out_current)&lt;br /&gt;
	-- Processing required for each output unit.&lt;br /&gt;
	-- Return block of text to represent output (value/unit).&lt;br /&gt;
	local inout = out_current.inout  -- normally &#039;out&#039; but can be &#039;in&#039; for order=out&lt;br /&gt;
	local id1, want_name = make_id(parms, 1, out_current)&lt;br /&gt;
	local sep = out_current.sep  -- set by make_id&lt;br /&gt;
	local preunit = parms.preunit2&lt;br /&gt;
	if preunit then&lt;br /&gt;
		sep = &#039;&#039;  -- any separator is included in preunit&lt;br /&gt;
	else&lt;br /&gt;
		preunit = &#039;&#039;&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_output_unit_only then&lt;br /&gt;
		if want_name and parms.opt_adjectival then&lt;br /&gt;
			return preunit .. hyphenated(id1)&lt;br /&gt;
		end&lt;br /&gt;
		return preunit .. id1&lt;br /&gt;
	end&lt;br /&gt;
	if out_current.builtin == &#039;mach&#039; and out_current.sep ~= &#039;&#039; then  -- &#039;&#039; means omitsep with non-enwiki name&lt;br /&gt;
		local prefix = id1 .. &#039;&amp;amp;nbsp;&#039;&lt;br /&gt;
		local range = parms.range&lt;br /&gt;
		local valinfo = out_current.valinfo&lt;br /&gt;
		local result = prefix .. valinfo[1].show&lt;br /&gt;
		if range then&lt;br /&gt;
			-- For simplicity and because more not needed, handle one range item only.&lt;br /&gt;
			result = range_text(range[1], want_name, parms, result, prefix .. valinfo[2].show, inout, {spaced=true})&lt;br /&gt;
		end&lt;br /&gt;
		return preunit .. result&lt;br /&gt;
	end&lt;br /&gt;
	local add_unit = (parms[parms.opt_flip and &#039;in_range_x&#039; or &#039;out_range_x&#039;] or&lt;br /&gt;
		(not want_name and parms.abbr_range_x)) and&lt;br /&gt;
		not parms.opt_output_number_only&lt;br /&gt;
	local range = parms.range&lt;br /&gt;
	if range and not add_unit then&lt;br /&gt;
		unlink(out_current)&lt;br /&gt;
	end&lt;br /&gt;
	local id = range and make_id(parms, range.n + 1, out_current) or id1&lt;br /&gt;
	local extra, was_hyphenated = hyphenated_maybe(parms, want_name, sep, id, inout)&lt;br /&gt;
	if was_hyphenated then&lt;br /&gt;
		add_unit = false&lt;br /&gt;
	end&lt;br /&gt;
	local result&lt;br /&gt;
	local valinfo = out_current.valinfo&lt;br /&gt;
	if range then&lt;br /&gt;
		for i = 0, range.n do&lt;br /&gt;
			local enable_number_word&lt;br /&gt;
			if i == range.n then&lt;br /&gt;
				add_unit = false&lt;br /&gt;
				enable_number_word = true&lt;br /&gt;
			end&lt;br /&gt;
			decorate_value(parms, out_current, i+1, enable_number_word)&lt;br /&gt;
			local show = valinfo[i+1].show&lt;br /&gt;
			if add_unit then&lt;br /&gt;
				show = show .. out_current.sep .. (i == 0 and id1 or make_id(parms, i+1, out_current))&lt;br /&gt;
			end&lt;br /&gt;
			if i == 0 then&lt;br /&gt;
				result = show&lt;br /&gt;
			else&lt;br /&gt;
				result = range_text(range[i], want_name, parms, result, show, inout)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		decorate_value(parms, out_current, 1, true)&lt;br /&gt;
		result = valinfo[1].show&lt;br /&gt;
	end&lt;br /&gt;
	if parms.opt_output_number_only then&lt;br /&gt;
		return result&lt;br /&gt;
	end&lt;br /&gt;
	return result .. preunit .. extra&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_output_single(parms, in_unit_table, out_unit_table)&lt;br /&gt;
	-- Return true, item where item = wikitext of the conversion result&lt;br /&gt;
	-- for a single output (which is not a combination or a multiple);&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	if parms.opt_order_out and in_unit_table.unitcode == out_unit_table.unitcode then&lt;br /&gt;
		out_unit_table.valinfo = in_unit_table.valinfo&lt;br /&gt;
	else&lt;br /&gt;
		out_unit_table.valinfo = collection()&lt;br /&gt;
		for _, v in ipairs(in_unit_table.valinfo) do&lt;br /&gt;
			local success, info = cvtround(parms, v, in_unit_table, out_unit_table)&lt;br /&gt;
			if not success then return false, info end&lt;br /&gt;
			out_unit_table.valinfo:add(info)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true, process_one_output(parms, out_unit_table)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function make_output_multiple(parms, in_unit_table, out_unit_table)&lt;br /&gt;
	-- Return true, item where item = wikitext of the conversion result&lt;br /&gt;
	-- for an output which is a multiple (like &#039;ftin&#039;);&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	local inout = out_unit_table.inout  -- normally &#039;out&#039; but can be &#039;in&#039; for order=out&lt;br /&gt;
	local multiple = out_unit_table.multiple  -- table of scaling factors (will not be nil)&lt;br /&gt;
	local combos = out_unit_table.combination  -- table of unit tables (will not be nil)&lt;br /&gt;
	local abbr = parms.abbr&lt;br /&gt;
	local abbr_org = parms.abbr_org&lt;br /&gt;
	local disp = parms.disp&lt;br /&gt;
	local want_name = (abbr_org == nil and (disp == &#039;or&#039; or disp == &#039;slash&#039;)) or&lt;br /&gt;
						not (abbr == &#039;on&#039; or abbr == inout or abbr == &#039;mos&#039;)&lt;br /&gt;
	local want_link = (parms.lk == &#039;on&#039; or parms.lk == inout)&lt;br /&gt;
	local mid = parms.opt_flip and parms.mid or &#039;&#039;&lt;br /&gt;
	local sep1 = &#039;&amp;amp;nbsp;&#039;&lt;br /&gt;
	local sep2 = &#039; &#039;&lt;br /&gt;
	if parms.opt_adjectival and want_name then&lt;br /&gt;
		sep1 = &#039;-&#039;&lt;br /&gt;
		sep2 = &#039;-&#039;&lt;br /&gt;
	end&lt;br /&gt;
	local do_spell = parms.opt_spell_out&lt;br /&gt;
	parms.opt_spell_out = nil  -- so the call to cvtround does not spell the value&lt;br /&gt;
	local function make_result(info, isfirst)&lt;br /&gt;
		local fmt, outvalue, sign&lt;br /&gt;
		local results = {}&lt;br /&gt;
		for i = 1, #combos do&lt;br /&gt;
			local tfrac, thisvalue, strforce&lt;br /&gt;
			local out_current = combos[i]&lt;br /&gt;
			out_current.inout = inout&lt;br /&gt;
			local scale = multiple[i]&lt;br /&gt;
			if i == 1 then  -- least significant unit (&#039;in&#039; from &#039;ftin&#039;)&lt;br /&gt;
				local decimals&lt;br /&gt;
				out_current.frac = out_unit_table.frac&lt;br /&gt;
				local success, outinfo = cvtround(parms, info, in_unit_table, out_current)&lt;br /&gt;
				if not success then return false, outinfo end&lt;br /&gt;
				if isfirst then&lt;br /&gt;
					out_unit_table.valinfo = { outinfo }  -- in case output value of first least significant unit is needed&lt;br /&gt;
				end&lt;br /&gt;
				sign = outinfo.sign&lt;br /&gt;
				tfrac = outinfo.fraction_table&lt;br /&gt;
				if outinfo.is_scientific then&lt;br /&gt;
					strforce = outinfo.show&lt;br /&gt;
					decimals = &#039;&#039;&lt;br /&gt;
				elseif tfrac then&lt;br /&gt;
					decimals = &#039;&#039;&lt;br /&gt;
				else&lt;br /&gt;
					local show = outinfo.show  -- number as a string in local language&lt;br /&gt;
					local p1, p2 = show:find(numdot, 1, true)&lt;br /&gt;
					decimals = p1 and show:sub(p2 + 1) or &#039;&#039;  -- text after numdot, if any&lt;br /&gt;
				end&lt;br /&gt;
				fmt = &#039;%.&#039; .. ulen(decimals) .. &#039;f&#039;  -- to reproduce precision&lt;br /&gt;
				if decimals == &#039;&#039; then&lt;br /&gt;
					if tfrac then&lt;br /&gt;
						outvalue = floor(outinfo.raw_absvalue)  -- integer part only; fraction added later&lt;br /&gt;
					else&lt;br /&gt;
						outvalue = floor(outinfo.raw_absvalue + 0.5)  -- keep all integer digits of least significant unit&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					outvalue = outinfo.absvalue&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if scale then&lt;br /&gt;
				outvalue, thisvalue = divide(outvalue, scale)&lt;br /&gt;
			else&lt;br /&gt;
				thisvalue = outvalue&lt;br /&gt;
			end&lt;br /&gt;
			local id&lt;br /&gt;
			if want_name then&lt;br /&gt;
				if varname then&lt;br /&gt;
					local clean&lt;br /&gt;
					if strforce or tfrac then&lt;br /&gt;
						clean = &#039;.1&#039;  -- dummy value to force name for floating point&lt;br /&gt;
					else&lt;br /&gt;
						clean = format(fmt, thisvalue)&lt;br /&gt;
					end&lt;br /&gt;
					id = variable_name(clean, out_current)&lt;br /&gt;
				else&lt;br /&gt;
					local key = &#039;name2&#039;&lt;br /&gt;
					if parms.opt_adjectival then&lt;br /&gt;
						key = &#039;name1&#039;&lt;br /&gt;
					elseif tfrac then&lt;br /&gt;
						if thisvalue == 0 then&lt;br /&gt;
							key = &#039;name1&#039;&lt;br /&gt;
						end&lt;br /&gt;
					elseif parms.opt_singular then&lt;br /&gt;
						if 0 &amp;lt; thisvalue and thisvalue &amp;lt; 1.0001 then&lt;br /&gt;
							key = &#039;name1&#039;&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						if thisvalue == 1 then&lt;br /&gt;
							key = &#039;name1&#039;&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
					id = out_current[key]&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				id = out_current[&#039;symbol&#039;]&lt;br /&gt;
			end&lt;br /&gt;
			if i == 1 and omit_separator(id) then&lt;br /&gt;
				-- Testing the id of the least significant unit should be sufficient.&lt;br /&gt;
				sep1 = &#039;&#039;&lt;br /&gt;
				sep2 = &#039;&#039;&lt;br /&gt;
			end&lt;br /&gt;
			if want_link then&lt;br /&gt;
				local link = out_current.link&lt;br /&gt;
				if link then&lt;br /&gt;
					id = make_link(link, id, out_current)&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			local strval&lt;br /&gt;
			local spell_inout = (i == #combos or outvalue == 0) and inout or &#039;&#039;  -- trick so the last value processed (first displayed) has uppercase, if requested&lt;br /&gt;
			if strforce and outvalue == 0 then&lt;br /&gt;
				sign = &#039;&#039;  -- any sign is in strforce&lt;br /&gt;
				strval = strforce  -- show small values in scientific notation; will only use least significant unit&lt;br /&gt;
			elseif tfrac then&lt;br /&gt;
				local wholestr = (thisvalue &amp;gt; 0) and tostring(thisvalue) or nil&lt;br /&gt;
				strval = format_fraction(parms, spell_inout, false, wholestr, tfrac.numstr, tfrac.denstr, do_spell)&lt;br /&gt;
			else&lt;br /&gt;
				strval = (thisvalue == 0) and from_en(&#039;0&#039;) or with_separator(parms, format(fmt, thisvalue))&lt;br /&gt;
				if do_spell then&lt;br /&gt;
					strval = spell_number(parms, spell_inout, strval) or strval&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			table.insert(results, strval .. sep1 .. id)&lt;br /&gt;
			if outvalue == 0 then&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
			fmt = &#039;%.0f&#039;  -- only least significant unit can have a non-integral value&lt;br /&gt;
		end&lt;br /&gt;
		local reversed, count = {}, #results&lt;br /&gt;
		for i = 1, count do&lt;br /&gt;
			reversed[i] = results[count + 1 - i]&lt;br /&gt;
		end&lt;br /&gt;
		return true, sign .. table.concat(reversed, sep2)&lt;br /&gt;
	end&lt;br /&gt;
	local valinfo = in_unit_table.valinfo&lt;br /&gt;
	local success, result = make_result(valinfo[1], true)&lt;br /&gt;
	if not success then return false, result end&lt;br /&gt;
	local range = parms.range&lt;br /&gt;
	if range then&lt;br /&gt;
		for i = 1, range.n do&lt;br /&gt;
			local success, result2 = make_result(valinfo[i+1])&lt;br /&gt;
			if not success then return false, result2 end&lt;br /&gt;
			result = range_text(range[i], want_name, parms, result, result2, inout, {spaced=true})&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return true, result .. mid&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function process(parms, in_unit_table, out_unit_table)&lt;br /&gt;
	-- Return true, s, outunit where s = final wikitext result,&lt;br /&gt;
	-- or return false, t where t is an error message table.&lt;br /&gt;
	linked_pages = {}&lt;br /&gt;
	local success, bad_output&lt;br /&gt;
	local bad_input_mcode = in_unit_table.bad_mcode  -- nil if input unit is a valid convert unit&lt;br /&gt;
	local out_unit = parms.out_unit&lt;br /&gt;
	if out_unit == nil or out_unit == &#039;&#039; or type(out_unit) == &#039;function&#039; then&lt;br /&gt;
		-- out_unit can be set to a function by adjustparameters in Module:Convert/wikidata.&lt;br /&gt;
		if bad_input_mcode or parms.opt_input_unit_only then&lt;br /&gt;
			bad_output = &#039;&#039;&lt;br /&gt;
		else&lt;br /&gt;
			local getdef = type(out_unit) == &#039;function&#039; and out_unit or get_default&lt;br /&gt;
			success, out_unit = getdef(in_unit_table.valinfo[1].value, in_unit_table)&lt;br /&gt;
			parms.out_unit = out_unit&lt;br /&gt;
			if not success then&lt;br /&gt;
				bad_output = out_unit&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if not bad_output and not out_unit_table then&lt;br /&gt;
		success, out_unit_table = lookup(parms, out_unit, &#039;any_combination&#039;)&lt;br /&gt;
		if success then&lt;br /&gt;
			local mismatch = check_mismatch(in_unit_table, out_unit_table)&lt;br /&gt;
			if mismatch then&lt;br /&gt;
				bad_output = mismatch&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			bad_output = out_unit_table&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	local lhs, rhs&lt;br /&gt;
	local flipped = parms.opt_flip and not bad_input_mcode&lt;br /&gt;
	if bad_output then&lt;br /&gt;
		rhs = (bad_output == &#039;&#039;) and &#039;&#039; or message(parms, bad_output)&lt;br /&gt;
	elseif parms.opt_input_unit_only then&lt;br /&gt;
		rhs = &#039;&#039;&lt;br /&gt;
	else&lt;br /&gt;
		local combos  -- nil (for &#039;ft&#039; or &#039;ftin&#039;), or table of unit tables (for &#039;m ft&#039;)&lt;br /&gt;
		if not out_unit_table.multiple then  -- nil/false (&#039;ft&#039; or &#039;m ft&#039;), or table of factors (&#039;ftin&#039;)&lt;br /&gt;
			combos = out_unit_table.combination&lt;br /&gt;
		end&lt;br /&gt;
		local frac = parms.frac  -- nil or denominator of fraction for output values&lt;br /&gt;
		if frac then&lt;br /&gt;
			-- Apply fraction to the unit (if only one), or to non-SI units (if a combination),&lt;br /&gt;
			-- except that if a precision is also specified, the fraction only applies to&lt;br /&gt;
			-- the hand unit; that allows the following result:&lt;br /&gt;
			-- {{convert|156|cm|in hand|1|frac=2}} → 156 centimetres (61.4 in; 15.1½ hands)&lt;br /&gt;
			-- However, the following is handled elsewhere as a special case:&lt;br /&gt;
			-- {{convert|156|cm|hand in|1|frac=2}} → 156 centimetres (15.1½ hands; 61½ in)&lt;br /&gt;
			if combos then&lt;br /&gt;
				local precision = parms.precision&lt;br /&gt;
				for _, unit in ipairs(combos) do&lt;br /&gt;
					if unit.builtin == &#039;hand&#039; or (not precision and not unit.prefixes) then&lt;br /&gt;
						unit.frac = frac&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				out_unit_table.frac = frac&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local outputs = {}&lt;br /&gt;
		local imax = combos and #combos or 1  -- 1 (single unit) or number of unit tables&lt;br /&gt;
		if imax == 1 then&lt;br /&gt;
			parms.opt_order_out = nil  -- only useful with an output combination&lt;br /&gt;
		end&lt;br /&gt;
		if not flipped and not parms.opt_order_out then&lt;br /&gt;
			-- Process left side first so any duplicate links (from lk=on) are suppressed&lt;br /&gt;
			-- on right. Example: {{convert|28|e9pc|e9ly|abbr=off|lk=on}}&lt;br /&gt;
			lhs = process_input(parms, in_unit_table)&lt;br /&gt;
		end&lt;br /&gt;
		for i = 1, imax do&lt;br /&gt;
			local success, item&lt;br /&gt;
			local out_current = combos and combos[i] or out_unit_table&lt;br /&gt;
			out_current.inout = &#039;out&#039;&lt;br /&gt;
			if i == 1 then&lt;br /&gt;
				if imax &amp;gt; 1 and out_current.builtin == &#039;hand&#039; then&lt;br /&gt;
					out_current.out_next = combos[2]  -- built-in hand can influence next unit in a combination&lt;br /&gt;
				end&lt;br /&gt;
				if parms.opt_order_out then&lt;br /&gt;
					out_current.inout = &#039;in&#039;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if out_current.multiple then&lt;br /&gt;
				success, item = make_output_multiple(parms, in_unit_table, out_current)&lt;br /&gt;
			else&lt;br /&gt;
				success, item = make_output_single(parms, in_unit_table, out_current)&lt;br /&gt;
			end&lt;br /&gt;
			if not success then return false, item end&lt;br /&gt;
			outputs[i] = item&lt;br /&gt;
		end&lt;br /&gt;
		if parms.opt_order_out then&lt;br /&gt;
			lhs = outputs[1]&lt;br /&gt;
			table.remove(outputs, 1)&lt;br /&gt;
		end&lt;br /&gt;
		local sep = parms.table_joins and parms.table_joins[2] or parms.join_between&lt;br /&gt;
		rhs = table.concat(outputs, sep)&lt;br /&gt;
	end&lt;br /&gt;
	if flipped or not lhs then&lt;br /&gt;
		local input = process_input(parms, in_unit_table)&lt;br /&gt;
		if flipped then&lt;br /&gt;
			lhs = rhs&lt;br /&gt;
			rhs = input&lt;br /&gt;
		else&lt;br /&gt;
			lhs = input&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if parms.join_before then&lt;br /&gt;
		lhs = parms.join_before .. lhs&lt;br /&gt;
	end&lt;br /&gt;
	local wikitext&lt;br /&gt;
	if bad_input_mcode then&lt;br /&gt;
		if bad_input_mcode == &#039;&#039; then&lt;br /&gt;
			wikitext = lhs&lt;br /&gt;
		else&lt;br /&gt;
			wikitext = lhs .. message(parms, bad_input_mcode)&lt;br /&gt;
		end&lt;br /&gt;
	elseif parms.table_joins then&lt;br /&gt;
		wikitext = parms.table_joins[1] .. lhs .. parms.table_joins[2] .. rhs&lt;br /&gt;
	else&lt;br /&gt;
		wikitext = lhs .. parms.joins[1] .. rhs .. parms.joins[2]&lt;br /&gt;
	end&lt;br /&gt;
	if parms.warnings and not bad_input_mcode then&lt;br /&gt;
		wikitext = wikitext .. parms.warnings&lt;br /&gt;
	end&lt;br /&gt;
	return true, get_styles(parms) .. wikitext, out_unit_table&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function main_convert(frame)&lt;br /&gt;
	-- Do convert, and if needed, do it again with higher default precision.&lt;br /&gt;
	local parms = { frame = frame }  -- will hold template arguments, after translation&lt;br /&gt;
	set_config(frame.args)&lt;br /&gt;
	local success, result = get_parms(parms, frame:getParent().args)&lt;br /&gt;
	if success then&lt;br /&gt;
		if type(result) ~= &#039;table&#039; then&lt;br /&gt;
			return tostring(result)&lt;br /&gt;
		end&lt;br /&gt;
		local in_unit_table = result&lt;br /&gt;
		local out_unit_table&lt;br /&gt;
		for _ = 1, 2 do  -- use counter so cannot get stuck repeating convert&lt;br /&gt;
			success, result, out_unit_table = process(parms, in_unit_table, out_unit_table)&lt;br /&gt;
			if success and parms.do_convert_again then&lt;br /&gt;
				parms.do_convert_again = false&lt;br /&gt;
			else&lt;br /&gt;
				break&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	-- If input=x gives a problem, the result should be just the user input&lt;br /&gt;
	-- (if x is a property like P123 it has been replaced with &#039;&#039;).&lt;br /&gt;
	-- An unknown input unit would display the input and an error message&lt;br /&gt;
	-- with success == true at this point.&lt;br /&gt;
	-- Also, can have success == false with a message that outputs an empty string.&lt;br /&gt;
	if parms.input_text then&lt;br /&gt;
		if success and not parms.have_problem then&lt;br /&gt;
			return result&lt;br /&gt;
		end&lt;br /&gt;
		local cat&lt;br /&gt;
		if parms.tracking then&lt;br /&gt;
			-- Add a tracking category using the given text as the category sort key.&lt;br /&gt;
			-- There is currently only one type of tracking, but in principle multiple&lt;br /&gt;
			-- items could be tracked, using different sort keys for convenience.&lt;br /&gt;
			cat = wanted_category(&#039;tracking&#039;, parms.tracking)&lt;br /&gt;
		end&lt;br /&gt;
		return parms.input_text .. (cat or &#039;&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	return success and result or message(parms, result)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _unit(unitcode, options)&lt;br /&gt;
	-- Helper function for Module:Val to look up a unit.&lt;br /&gt;
	-- Parameter unitcode must be a string to identify the wanted unit.&lt;br /&gt;
	-- Parameter options must be nil or a table with optional fields:&lt;br /&gt;
	--   value = number (for sort key; default value is 1)&lt;br /&gt;
	--   scaled_top = nil for a normal unit, or a number for a unit which is&lt;br /&gt;
	--                the denominator of a per unit (for sort key)&lt;br /&gt;
	--   si = { &#039;symbol&#039;, &#039;link&#039; }&lt;br /&gt;
	--                (a table with two strings) to make an SI unit&lt;br /&gt;
	--                that will be used for the look up&lt;br /&gt;
	--   link = true if result should be [[linked]]&lt;br /&gt;
	--   sort = &#039;on&#039; or &#039;debug&#039; if result should include a sort key in a&lt;br /&gt;
	--                span element (&#039;debug&#039; makes the key visible)&lt;br /&gt;
	--   name = true for the name of the unit instead of the symbol&lt;br /&gt;
	--   us = true for the US spelling of the unit, if any&lt;br /&gt;
	-- Return nil if unitcode is not a non-empty string.&lt;br /&gt;
	-- Otherwise return a table with fields:&lt;br /&gt;
	--   text = requested symbol or name of unit, optionally linked&lt;br /&gt;
	--   scaled_value = input value adjusted by unit scale; used for sort key&lt;br /&gt;
	--   sortspan = span element with sort key like that provided by {{ntsh}},&lt;br /&gt;
	--     calculated from the result of converting value&lt;br /&gt;
	--     to a base unit with scale 1.&lt;br /&gt;
	--   unknown = true if the unitcode was not known&lt;br /&gt;
	unitcode = strip(unitcode)&lt;br /&gt;
	if unitcode == nil or unitcode == &#039;&#039; then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	set_config({})&lt;br /&gt;
	linked_pages = {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
	local parms = {&lt;br /&gt;
		abbr = options.name and &#039;off&#039; or &#039;on&#039;,&lt;br /&gt;
		lk = options.link and &#039;on&#039; or nil,&lt;br /&gt;
		opt_sp_us = options.us and true or nil,&lt;br /&gt;
		opt_ignore_error = true,  -- do not add pages using this function to &#039;what links here&#039; for Module:Convert/extra&lt;br /&gt;
		opt_sortable_on = options.sort == &#039;on&#039; or options.sort == &#039;debug&#039;,&lt;br /&gt;
		opt_sortable_debug = options.sort == &#039;debug&#039;,&lt;br /&gt;
	}&lt;br /&gt;
	if options.si then&lt;br /&gt;
		-- Make a dummy table of units (just one unit) for lookup to use.&lt;br /&gt;
		-- This makes lookup recognize any SI prefix in the unitcode.&lt;br /&gt;
		local symbol = options.si[1] or &#039;?&#039;&lt;br /&gt;
		parms.unittable = { [symbol] = {&lt;br /&gt;
			_name1 = symbol,&lt;br /&gt;
			_name2 = symbol,&lt;br /&gt;
			_symbol = symbol,&lt;br /&gt;
			utype = symbol,&lt;br /&gt;
			scale = symbol == &#039;g&#039; and 0.001 or 1,&lt;br /&gt;
			prefixes = 1,&lt;br /&gt;
			default = symbol,&lt;br /&gt;
			link = options.si[2],&lt;br /&gt;
		}}&lt;br /&gt;
	end&lt;br /&gt;
	local success, unit_table = lookup(parms, unitcode, &#039;no_combination&#039;)&lt;br /&gt;
	if not success then&lt;br /&gt;
		unit_table = setmetatable({&lt;br /&gt;
			symbol = unitcode, name2 = unitcode, utype = unitcode,&lt;br /&gt;
			scale = 1, default = &#039;&#039;, defkey = &#039;&#039;, linkey = &#039;&#039; }, unit_mt)&lt;br /&gt;
	end&lt;br /&gt;
	local value = tonumber(options.value) or 1&lt;br /&gt;
	local clean = tostring(abs(value))&lt;br /&gt;
	local info = {&lt;br /&gt;
		value = value,&lt;br /&gt;
		altvalue = value,&lt;br /&gt;
		singular = (clean == &#039;1&#039;),&lt;br /&gt;
		clean = clean,&lt;br /&gt;
		show = clean,&lt;br /&gt;
	}&lt;br /&gt;
	unit_table.inout = &#039;in&#039;&lt;br /&gt;
	unit_table.valinfo = { info }&lt;br /&gt;
	local sortspan, scaled_value&lt;br /&gt;
	if options.sort then&lt;br /&gt;
		sortspan, scaled_value = make_table_or_sort(parms, value, info, unit_table, options.scaled_top)&lt;br /&gt;
	end&lt;br /&gt;
	return {&lt;br /&gt;
		text = make_id(parms, 1, unit_table),&lt;br /&gt;
		sortspan = sortspan,&lt;br /&gt;
		scaled_value = scaled_value,&lt;br /&gt;
		unknown = not success and true or nil,&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return { convert = main_convert, _unit = _unit }&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Template:Ifsubst&amp;diff=31</id>
		<title>Template:Ifsubst</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Template:Ifsubst&amp;diff=31"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ safesubst:&amp;lt;noinclude/&amp;gt;#if:{{{demo|}}}&lt;br /&gt;
|{{ safesubst:&amp;lt;noinclude/&amp;gt;#ifeq:{{{demo}}} |no&lt;br /&gt;
 |{{{no|{{{2|}}}}}}&lt;br /&gt;
 |{{{yes|{{{1|}}}}}}&lt;br /&gt;
}}&lt;br /&gt;
|{{ safesubst:&amp;lt;noinclude/&amp;gt;#ifeq:{{ safesubst:&amp;lt;noinclude/&amp;gt;NAMESPACE}}|{{NAMESPACE}}&lt;br /&gt;
 |{{{no|{{{2|}}}}}}&lt;br /&gt;
 |{{{yes|{{{1|}}}}}}&lt;br /&gt;
}}}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Module:Message_box/configuration&amp;diff=29</id>
		<title>Module:Message box/configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Module:Message_box/configuration&amp;diff=29"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--------------------------------------------------------------------------------&lt;br /&gt;
--                          Message box configuration                         --&lt;br /&gt;
--                                                                            --&lt;br /&gt;
-- This module contains configuration data for [[Module:Message box]].        --&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	ambox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;ambox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;ambox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;ambox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;ambox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;ambox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;ambox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;ambox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default                     = &#039;notice&#039;,&lt;br /&gt;
		allowBlankParams            = {&#039;talk&#039;, &#039;sect&#039;, &#039;date&#039;, &#039;issue&#039;, &#039;fix&#039;, &#039;subst&#039;, &#039;hidden&#039;},&lt;br /&gt;
		allowSmall                  = true,&lt;br /&gt;
		smallParam                  = &#039;left&#039;,&lt;br /&gt;
		smallClass                  = &#039;mbox-small-left&#039;,&lt;br /&gt;
		substCheck                  = true,&lt;br /&gt;
		classes                     = {&#039;metadata&#039;, &#039;ambox&#039;},&lt;br /&gt;
		imageEmptyCell              = true,&lt;br /&gt;
		imageCheckBlank             = true,&lt;br /&gt;
		imageSmallSize              = &#039;20x20px&#039;,&lt;br /&gt;
		imageCellDiv                = true,&lt;br /&gt;
		useCollapsibleTextFields    = true,&lt;br /&gt;
		imageRightNone              = true,&lt;br /&gt;
		sectionDefault              = &#039;article&#039;,&lt;br /&gt;
		allowMainspaceCategories    = true,&lt;br /&gt;
		templateCategory            = &#039;Article message templates&#039;,&lt;br /&gt;
	        templateCategoryRequireName = true,&lt;br /&gt;
		templateErrorCategory       = &#039;Article message templates with missing parameters&#039;,&lt;br /&gt;
		templateErrorParamsToCheck  = {&#039;issue&#039;, &#039;fix&#039;, &#039;subst&#039;},&lt;br /&gt;
		removalNotice               = &#039;&amp;lt;small&amp;gt;[[Help:Maintenance template removal|Learn how and when to remove this message]]&amp;lt;/small&amp;gt;&#039;,&lt;br /&gt;
		templatestyles              = &#039;Module:Message box/ambox.css&#039;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	cmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;cmbox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;cmbox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;cmbox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;cmbox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;cmbox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;cmbox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;cmbox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;cmbox&#039;},&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/cmbox.css&#039;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	fmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			warning = {&lt;br /&gt;
				class = &#039;fmbox-warning&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			editnotice = {&lt;br /&gt;
				class = &#039;fmbox-editnotice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			system = {&lt;br /&gt;
				class = &#039;fmbox-system&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;system&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;fmbox&#039;},&lt;br /&gt;
		imageEmptyCell       = false,&lt;br /&gt;
		imageRightNone       = false,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/fmbox.css&#039;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	imbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;imbox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;imbox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;imbox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;imbox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;imbox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;imbox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			license = {&lt;br /&gt;
				class = &#039;imbox-license licensetpl&#039;,&lt;br /&gt;
				image = &#039;Imbox-license.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			[&amp;quot;license-related&amp;quot;] = {&lt;br /&gt;
				class = &#039;imbox-license&#039;,&lt;br /&gt;
				image = &#039;Imbox-license.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			featured = {&lt;br /&gt;
				class = &#039;imbox-featured&#039;,&lt;br /&gt;
				image = &#039;Cscr-featured.svg&#039;,&lt;br /&gt;
				imageNeedsLink = true&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;imbox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;imbox&#039;},&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		below                = true,&lt;br /&gt;
		templateCategory     = &#039;File message boxes&#039;,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/imbox.css&#039;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	ombox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;ombox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;ombox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;ombox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;ombox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;ombox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;ombox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;ombox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;ombox&#039;},&lt;br /&gt;
		allowSmall           = true,&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		imageRightNone       = true,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/ombox.css&#039;&lt;br /&gt;
	},&lt;br /&gt;
	&lt;br /&gt;
	tmbox = {&lt;br /&gt;
		types = {&lt;br /&gt;
			speedy = {&lt;br /&gt;
				class = &#039;tmbox-speedy&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			delete = {&lt;br /&gt;
				class = &#039;tmbox-delete&#039;,&lt;br /&gt;
				image = &#039;Ambox warning pn.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			content = {&lt;br /&gt;
				class = &#039;tmbox-content&#039;,&lt;br /&gt;
				image = &#039;Ambox important.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			style = {&lt;br /&gt;
				class = &#039;tmbox-style&#039;,&lt;br /&gt;
				image = &#039;Edit-clear.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			move = {&lt;br /&gt;
				class = &#039;tmbox-move&#039;,&lt;br /&gt;
				image = &#039;Merge-split-transwiki default.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			protection = {&lt;br /&gt;
				class = &#039;tmbox-protection&#039;,&lt;br /&gt;
				image = &#039;Semi-protection-shackle-keyhole.svg&#039;&lt;br /&gt;
			},&lt;br /&gt;
			notice = {&lt;br /&gt;
				class = &#039;tmbox-notice&#039;,&lt;br /&gt;
				image = &#039;Information icon4.svg&#039;&lt;br /&gt;
			}&lt;br /&gt;
		},&lt;br /&gt;
		default              = &#039;notice&#039;,&lt;br /&gt;
		showInvalidTypeError = true,&lt;br /&gt;
		classes              = {&#039;tmbox&#039;},&lt;br /&gt;
		allowSmall           = true,&lt;br /&gt;
		imageRightNone       = true,&lt;br /&gt;
		imageEmptyCell       = true,&lt;br /&gt;
		templateCategory     = &#039;Talk message boxes&#039;,&lt;br /&gt;
		templatestyles       = &#039;Module:Message box/tmbox.css&#039;&lt;br /&gt;
	}&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Module:Message_box&amp;diff=27</id>
		<title>Module:Message box</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Module:Message_box&amp;diff=27"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require(&#039;strict&#039;)&lt;br /&gt;
local getArgs&lt;br /&gt;
local yesno = require(&#039;Module:Yesno&#039;)&lt;br /&gt;
local lang = mw.language.getContentLanguage()&lt;br /&gt;
&lt;br /&gt;
local CONFIG_MODULE = &#039;Module:Message box/configuration&#039;&lt;br /&gt;
local DEMOSPACES = {talk = &#039;tmbox&#039;, image = &#039;imbox&#039;, file = &#039;imbox&#039;, category = &#039;cmbox&#039;, article = &#039;ambox&#039;, main = &#039;ambox&#039;}&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Helper functions&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local function getTitleObject(...)&lt;br /&gt;
	-- Get the title object, passing the function through pcall&lt;br /&gt;
	-- in case we are over the expensive function count limit.&lt;br /&gt;
	local success, title = pcall(mw.title.new, ...)&lt;br /&gt;
	if success then&lt;br /&gt;
		return title&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function union(t1, t2)&lt;br /&gt;
	-- Returns the union of two arrays.&lt;br /&gt;
	local vals = {}&lt;br /&gt;
	for i, v in ipairs(t1) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	for i, v in ipairs(t2) do&lt;br /&gt;
		vals[v] = true&lt;br /&gt;
	end&lt;br /&gt;
	local ret = {}&lt;br /&gt;
	for k in pairs(vals) do&lt;br /&gt;
		table.insert(ret, k)&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(ret)&lt;br /&gt;
	return ret&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function getArgNums(args, prefix)&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		local num = mw.ustring.match(tostring(k), &#039;^&#039; .. prefix .. &#039;([1-9]%d*)$&#039;)&lt;br /&gt;
		if num then&lt;br /&gt;
			table.insert(nums, tonumber(num))&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;
-- Box class definition&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local MessageBox = {}&lt;br /&gt;
MessageBox.__index = MessageBox&lt;br /&gt;
&lt;br /&gt;
function MessageBox.new(boxType, args, cfg)&lt;br /&gt;
	args = args or {}&lt;br /&gt;
	local obj = {}&lt;br /&gt;
&lt;br /&gt;
	-- Set the title object and the namespace.&lt;br /&gt;
	obj.title = getTitleObject(args.page) or mw.title.getCurrentTitle()&lt;br /&gt;
&lt;br /&gt;
	-- Set the config for our box type.&lt;br /&gt;
	obj.cfg = cfg[boxType]&lt;br /&gt;
	if not obj.cfg then&lt;br /&gt;
		local ns = obj.title.namespace&lt;br /&gt;
		-- boxType is &amp;quot;mbox&amp;quot; or invalid input&lt;br /&gt;
		if args.demospace and args.demospace ~= &#039;&#039; then&lt;br /&gt;
			-- implement demospace parameter of mbox&lt;br /&gt;
			local demospace = string.lower(args.demospace)&lt;br /&gt;
			if DEMOSPACES[demospace] then&lt;br /&gt;
				-- use template from DEMOSPACES&lt;br /&gt;
				obj.cfg = cfg[DEMOSPACES[demospace]]&lt;br /&gt;
			elseif string.find( demospace, &#039;talk&#039; ) then&lt;br /&gt;
				-- demo as a talk page&lt;br /&gt;
				obj.cfg = cfg.tmbox&lt;br /&gt;
			else&lt;br /&gt;
				-- default to ombox&lt;br /&gt;
				obj.cfg = cfg.ombox&lt;br /&gt;
			end&lt;br /&gt;
		elseif ns == 0 then&lt;br /&gt;
			obj.cfg = cfg.ambox -- main namespace&lt;br /&gt;
		elseif ns == 6 then&lt;br /&gt;
			obj.cfg = cfg.imbox -- file namespace&lt;br /&gt;
		elseif ns == 14 then&lt;br /&gt;
			obj.cfg = cfg.cmbox -- category namespace&lt;br /&gt;
		else&lt;br /&gt;
			local nsTable = mw.site.namespaces[ns]&lt;br /&gt;
			if nsTable and nsTable.isTalk then&lt;br /&gt;
				obj.cfg = cfg.tmbox -- any talk namespace&lt;br /&gt;
			else&lt;br /&gt;
				obj.cfg = cfg.ombox -- other namespaces or invalid input&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the arguments, and remove all blank arguments except for the ones&lt;br /&gt;
	-- listed in cfg.allowBlankParams.&lt;br /&gt;
	do&lt;br /&gt;
		local newArgs = {}&lt;br /&gt;
		for k, v in pairs(args) do&lt;br /&gt;
			if v ~= &#039;&#039; then&lt;br /&gt;
				newArgs[k] = v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for i, param in ipairs(obj.cfg.allowBlankParams or {}) do&lt;br /&gt;
			newArgs[param] = args[param]&lt;br /&gt;
		end&lt;br /&gt;
		obj.args = newArgs&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Define internal data structure.&lt;br /&gt;
	obj.categories = {}&lt;br /&gt;
	obj.classes = {}&lt;br /&gt;
	-- For lazy loading of [[Module:Category handler]].&lt;br /&gt;
	obj.hasCategories = false&lt;br /&gt;
&lt;br /&gt;
	return setmetatable(obj, MessageBox)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:addCat(ns, cat, sort)&lt;br /&gt;
	if not cat then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	if sort then&lt;br /&gt;
		cat = string.format(&#039;[[Category:%s|%s]]&#039;, cat, sort)&lt;br /&gt;
	else&lt;br /&gt;
		cat = string.format(&#039;[[Category:%s]]&#039;, cat)&lt;br /&gt;
	end&lt;br /&gt;
	self.hasCategories = true&lt;br /&gt;
	self.categories[ns] = self.categories[ns] or {}&lt;br /&gt;
	table.insert(self.categories[ns], cat)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:addClass(class)&lt;br /&gt;
	if not class then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
	table.insert(self.classes, class)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setParameters()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	-- Get type data.&lt;br /&gt;
	self.type = args.type&lt;br /&gt;
	local typeData = cfg.types[self.type]&lt;br /&gt;
	self.invalidTypeError = cfg.showInvalidTypeError&lt;br /&gt;
		and self.type&lt;br /&gt;
		and not typeData&lt;br /&gt;
	typeData = typeData or cfg.types[cfg.default]&lt;br /&gt;
	self.typeClass = typeData.class&lt;br /&gt;
	self.typeImage = typeData.image&lt;br /&gt;
	self.typeImageNeedsLink = typeData.imageNeedsLink&lt;br /&gt;
&lt;br /&gt;
	-- Find if the box has been wrongly substituted.&lt;br /&gt;
	self.isSubstituted = cfg.substCheck and args.subst == &#039;SUBST&#039;&lt;br /&gt;
&lt;br /&gt;
	-- Find whether we are using a small message box.&lt;br /&gt;
	self.isSmall = cfg.allowSmall and (&lt;br /&gt;
		cfg.smallParam and args.small == cfg.smallParam&lt;br /&gt;
		or not cfg.smallParam and yesno(args.small)&lt;br /&gt;
	)&lt;br /&gt;
&lt;br /&gt;
	-- Add attributes, classes and styles.&lt;br /&gt;
	self.id = args.id&lt;br /&gt;
	self.name = args.name&lt;br /&gt;
	if self.name then&lt;br /&gt;
		self:addClass(&#039;box-&#039; .. string.gsub(self.name,&#039; &#039;,&#039;_&#039;))&lt;br /&gt;
	end&lt;br /&gt;
	if yesno(args.plainlinks) ~= false then&lt;br /&gt;
		self:addClass(&#039;plainlinks&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	for _, class in ipairs(cfg.classes or {}) do&lt;br /&gt;
		self:addClass(class)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self:addClass(cfg.smallClass or &#039;mbox-small&#039;)&lt;br /&gt;
	end&lt;br /&gt;
	self:addClass(self.typeClass)&lt;br /&gt;
	self:addClass(args.class)&lt;br /&gt;
	self.style = args.style&lt;br /&gt;
	self.attrs = args.attrs&lt;br /&gt;
&lt;br /&gt;
	-- Set text style.&lt;br /&gt;
	self.textstyle = args.textstyle&lt;br /&gt;
	&lt;br /&gt;
	-- Set image classes.&lt;br /&gt;
	self.imageRightClass = args.imagerightclass or args.imageclass&lt;br /&gt;
	self.imageLeftClass = args.imageleftclass or args.imageclass&lt;br /&gt;
&lt;br /&gt;
	-- Find if we are on the template page or not. This functionality is only&lt;br /&gt;
	-- used if useCollapsibleTextFields is set, or if both cfg.templateCategory&lt;br /&gt;
	-- and cfg.templateCategoryRequireName are set.&lt;br /&gt;
	self.useCollapsibleTextFields = cfg.useCollapsibleTextFields&lt;br /&gt;
	if self.useCollapsibleTextFields&lt;br /&gt;
		or cfg.templateCategory&lt;br /&gt;
		and cfg.templateCategoryRequireName&lt;br /&gt;
	then&lt;br /&gt;
		if self.name then&lt;br /&gt;
			local templateName = mw.ustring.match(&lt;br /&gt;
				self.name,&lt;br /&gt;
				&#039;^[tT][eE][mM][pP][lL][aA][tT][eE][%s_]*:[%s_]*(.*)$&#039;&lt;br /&gt;
			) or self.name&lt;br /&gt;
			templateName = &#039;Template:&#039; .. templateName&lt;br /&gt;
			self.templateTitle = getTitleObject(templateName)&lt;br /&gt;
		end&lt;br /&gt;
		self.isTemplatePage = self.templateTitle&lt;br /&gt;
			and mw.title.equals(self.title, self.templateTitle)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Process data for collapsible text fields. At the moment these are only&lt;br /&gt;
	-- used in {{ambox}}.&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- Get the self.issue value.&lt;br /&gt;
		if self.isSmall and args.smalltext then&lt;br /&gt;
			self.issue = args.smalltext&lt;br /&gt;
		else&lt;br /&gt;
			local sect&lt;br /&gt;
			if args.sect == &#039;&#039; then&lt;br /&gt;
				sect = &#039;This &#039; .. (cfg.sectionDefault or &#039;page&#039;)&lt;br /&gt;
			elseif type(args.sect) == &#039;string&#039; then&lt;br /&gt;
				sect = &#039;This &#039; .. args.sect&lt;br /&gt;
			end&lt;br /&gt;
			local issue = args.issue&lt;br /&gt;
			issue = type(issue) == &#039;string&#039; and issue ~= &#039;&#039; and issue or nil&lt;br /&gt;
			local text = args.text&lt;br /&gt;
			text = type(text) == &#039;string&#039; and text or nil&lt;br /&gt;
			local issues = {}&lt;br /&gt;
			table.insert(issues, sect)&lt;br /&gt;
			table.insert(issues, issue)&lt;br /&gt;
			table.insert(issues, text)&lt;br /&gt;
			self.issue = table.concat(issues, &#039; &#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get the self.talk value.&lt;br /&gt;
		local talk = args.talk&lt;br /&gt;
		-- Show talk links on the template page or template subpages if the talk&lt;br /&gt;
		-- parameter is blank.&lt;br /&gt;
		if talk == &#039;&#039;&lt;br /&gt;
			and self.templateTitle&lt;br /&gt;
			and (&lt;br /&gt;
				mw.title.equals(self.templateTitle, self.title)&lt;br /&gt;
				or self.title:isSubpageOf(self.templateTitle)&lt;br /&gt;
			)&lt;br /&gt;
		then&lt;br /&gt;
			talk = &#039;#&#039;&lt;br /&gt;
		elseif talk == &#039;&#039; then&lt;br /&gt;
			talk = nil&lt;br /&gt;
		end&lt;br /&gt;
		if talk then&lt;br /&gt;
			-- If the talk value is a talk page, make a link to that page. Else&lt;br /&gt;
			-- assume that it&#039;s a section heading, and make a link to the talk&lt;br /&gt;
			-- page of the current page with that section heading.&lt;br /&gt;
			local talkTitle = getTitleObject(talk)&lt;br /&gt;
			local talkArgIsTalkPage = true&lt;br /&gt;
			if not talkTitle or not talkTitle.isTalkPage then&lt;br /&gt;
				talkArgIsTalkPage = false&lt;br /&gt;
				talkTitle = getTitleObject(&lt;br /&gt;
					self.title.text,&lt;br /&gt;
					mw.site.namespaces[self.title.namespace].talk.id&lt;br /&gt;
				)&lt;br /&gt;
			end&lt;br /&gt;
			if talkTitle and talkTitle.exists then&lt;br /&gt;
                local talkText&lt;br /&gt;
                if self.isSmall then&lt;br /&gt;
                    local talkLink = talkArgIsTalkPage and talk or (talkTitle.prefixedText .. &#039;#&#039; .. talk)&lt;br /&gt;
                    talkText = string.format(&#039;([[%s|talk]])&#039;, talkLink)&lt;br /&gt;
                else&lt;br /&gt;
                    talkText = &#039;Relevant discussion may be found on&#039;&lt;br /&gt;
                    if talkArgIsTalkPage then&lt;br /&gt;
                        talkText = string.format(&lt;br /&gt;
                            &#039;%s [[%s|%s]].&#039;,&lt;br /&gt;
                            talkText,&lt;br /&gt;
                            talk,&lt;br /&gt;
                            talkTitle.prefixedText&lt;br /&gt;
                        )&lt;br /&gt;
                    else&lt;br /&gt;
                        talkText = string.format(&lt;br /&gt;
                            &#039;%s the [[%s#%s|talk page]].&#039;,&lt;br /&gt;
                            talkText,&lt;br /&gt;
                            talkTitle.prefixedText,&lt;br /&gt;
                            talk&lt;br /&gt;
                        )&lt;br /&gt;
                    end&lt;br /&gt;
                end&lt;br /&gt;
				self.talk = talkText&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		-- Get other values.&lt;br /&gt;
		self.fix = args.fix ~= &#039;&#039; and args.fix or nil&lt;br /&gt;
		local date&lt;br /&gt;
		if args.date and args.date ~= &#039;&#039; then&lt;br /&gt;
			date = args.date&lt;br /&gt;
		elseif args.date == &#039;&#039; and self.isTemplatePage then&lt;br /&gt;
			date = lang:formatDate(&#039;F Y&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		if date then&lt;br /&gt;
			self.date = string.format(&amp;quot; &amp;lt;span class=&#039;date-container&#039;&amp;gt;&amp;lt;i&amp;gt;(&amp;lt;span class=&#039;date&#039;&amp;gt;%s&amp;lt;/span&amp;gt;)&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;&amp;quot;, date)&lt;br /&gt;
		end&lt;br /&gt;
		self.info = args.info&lt;br /&gt;
		if yesno(args.removalnotice) then&lt;br /&gt;
			self.removalNotice = cfg.removalNotice&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the non-collapsible text field. At the moment this is used by all box&lt;br /&gt;
	-- types other than ambox, and also by ambox when small=yes.&lt;br /&gt;
	if self.isSmall then&lt;br /&gt;
		self.text = args.smalltext or args.text&lt;br /&gt;
	else&lt;br /&gt;
		self.text = args.text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the below row.&lt;br /&gt;
	self.below = cfg.below and args.below&lt;br /&gt;
&lt;br /&gt;
	-- General image settings.&lt;br /&gt;
	self.imageCellDiv = not self.isSmall and cfg.imageCellDiv&lt;br /&gt;
	self.imageEmptyCell = cfg.imageEmptyCell&lt;br /&gt;
&lt;br /&gt;
	-- Left image settings.&lt;br /&gt;
	local imageLeft = self.isSmall and args.smallimage or args.image&lt;br /&gt;
	if cfg.imageCheckBlank and imageLeft ~= &#039;blank&#039; and imageLeft ~= &#039;none&#039;&lt;br /&gt;
		or not cfg.imageCheckBlank and imageLeft ~= &#039;none&#039;&lt;br /&gt;
	then&lt;br /&gt;
		self.imageLeft = imageLeft&lt;br /&gt;
		if not imageLeft then&lt;br /&gt;
			local imageSize = self.isSmall&lt;br /&gt;
				and (cfg.imageSmallSize or &#039;30x30px&#039;)&lt;br /&gt;
				or &#039;40x40px&#039;&lt;br /&gt;
			self.imageLeft = string.format(&#039;[[File:%s|%s%s|alt=]]&#039;, self.typeImage&lt;br /&gt;
				or &#039;Information icon4.svg&#039;, imageSize, self.typeImageNeedsLink and &amp;quot;&amp;quot; or &amp;quot;|link=&amp;quot; )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Right image settings.&lt;br /&gt;
	local imageRight = self.isSmall and args.smallimageright or args.imageright&lt;br /&gt;
	if not (cfg.imageRightNone and imageRight == &#039;none&#039;) then&lt;br /&gt;
		self.imageRight = imageRight&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- set templatestyles&lt;br /&gt;
	self.base_templatestyles = cfg.templatestyles&lt;br /&gt;
	self.templatestyles = args.templatestyles&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setMainspaceCategories()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	if not cfg.allowMainspaceCategories then&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local nums = {}&lt;br /&gt;
	for _, prefix in ipairs{&#039;cat&#039;, &#039;category&#039;, &#039;all&#039;} do&lt;br /&gt;
		args[prefix .. &#039;1&#039;] = args[prefix]&lt;br /&gt;
		nums = union(nums, getArgNums(args, prefix))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- The following is roughly equivalent to the old {{Ambox/category}}.&lt;br /&gt;
	local date = args.date&lt;br /&gt;
	date = type(date) == &#039;string&#039; and date&lt;br /&gt;
	local preposition = &#039;from&#039;&lt;br /&gt;
	for _, num in ipairs(nums) do&lt;br /&gt;
		local mainCat = args[&#039;cat&#039; .. tostring(num)]&lt;br /&gt;
			or args[&#039;category&#039; .. tostring(num)]&lt;br /&gt;
		local allCat = args[&#039;all&#039; .. tostring(num)]&lt;br /&gt;
		mainCat = type(mainCat) == &#039;string&#039; and mainCat&lt;br /&gt;
		allCat = type(allCat) == &#039;string&#039; and allCat&lt;br /&gt;
		if mainCat and date and date ~= &#039;&#039; then&lt;br /&gt;
			local catTitle = string.format(&#039;%s %s %s&#039;, mainCat, preposition, date)&lt;br /&gt;
			self:addCat(0, catTitle)&lt;br /&gt;
			catTitle = getTitleObject(&#039;Category:&#039; .. catTitle)&lt;br /&gt;
			if not catTitle or not catTitle.exists then&lt;br /&gt;
				self:addCat(0, &#039;Articles with invalid date parameter in template&#039;)&lt;br /&gt;
			end&lt;br /&gt;
		elseif mainCat and (not date or date == &#039;&#039;) then&lt;br /&gt;
			self:addCat(0, mainCat)&lt;br /&gt;
		end&lt;br /&gt;
		if allCat then&lt;br /&gt;
			self:addCat(0, allCat)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setTemplateCategories()&lt;br /&gt;
	local args = self.args&lt;br /&gt;
	local cfg = self.cfg&lt;br /&gt;
&lt;br /&gt;
	-- Add template categories.&lt;br /&gt;
	if cfg.templateCategory then&lt;br /&gt;
		if cfg.templateCategoryRequireName then&lt;br /&gt;
			if self.isTemplatePage then&lt;br /&gt;
				self:addCat(10, cfg.templateCategory)&lt;br /&gt;
			end&lt;br /&gt;
		elseif not self.title.isSubpage then&lt;br /&gt;
			self:addCat(10, cfg.templateCategory)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add template error categories.&lt;br /&gt;
	if cfg.templateErrorCategory then&lt;br /&gt;
		local templateErrorCategory = cfg.templateErrorCategory&lt;br /&gt;
		local templateCat, templateSort&lt;br /&gt;
		if not self.name and not self.title.isSubpage then&lt;br /&gt;
			templateCat = templateErrorCategory&lt;br /&gt;
		elseif self.isTemplatePage then&lt;br /&gt;
			local paramsToCheck = cfg.templateErrorParamsToCheck or {}&lt;br /&gt;
			local count = 0&lt;br /&gt;
			for i, param in ipairs(paramsToCheck) do&lt;br /&gt;
				if not args[param] then&lt;br /&gt;
					count = count + 1&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			if count &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = tostring(count)&lt;br /&gt;
			end&lt;br /&gt;
			if self.categoryNums and #self.categoryNums &amp;gt; 0 then&lt;br /&gt;
				templateCat = templateErrorCategory&lt;br /&gt;
				templateSort = &#039;C&#039;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		self:addCat(10, templateCat, templateSort)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setAllNamespaceCategories()&lt;br /&gt;
	-- Set categories for all namespaces.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		local allSort = (self.title.namespace == 0 and &#039;Main:&#039; or &#039;&#039;) .. self.title.prefixedText&lt;br /&gt;
		self:addCat(&#039;all&#039;, &#039;Wikipedia message box parameter needs fixing&#039;, allSort)&lt;br /&gt;
	end&lt;br /&gt;
	if self.isSubstituted then&lt;br /&gt;
		self:addCat(&#039;all&#039;, &#039;Pages with incorrectly substituted templates&#039;)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:setCategories()&lt;br /&gt;
	if self.title.namespace == 0 then&lt;br /&gt;
		self:setMainspaceCategories()&lt;br /&gt;
	elseif self.title.namespace == 10 then&lt;br /&gt;
		self:setTemplateCategories()&lt;br /&gt;
	end&lt;br /&gt;
	self:setAllNamespaceCategories()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:renderCategories()&lt;br /&gt;
	if not self.hasCategories then&lt;br /&gt;
		-- No categories added, no need to pass them to Category handler so,&lt;br /&gt;
		-- if it was invoked, it would return the empty string.&lt;br /&gt;
		-- So we shortcut and return the empty string.&lt;br /&gt;
		return &amp;quot;&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	-- Convert category tables to strings and pass them through&lt;br /&gt;
	-- [[Module:Category handler]].&lt;br /&gt;
	return require(&#039;Module:Category handler&#039;)._main{&lt;br /&gt;
		main = table.concat(self.categories[0] or {}),&lt;br /&gt;
		template = table.concat(self.categories[10] or {}),&lt;br /&gt;
		all = table.concat(self.categories.all or {}),&lt;br /&gt;
		nocat = self.args.nocat,&lt;br /&gt;
		page = self.args.page&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function MessageBox:export()&lt;br /&gt;
	local root = mw.html.create()&lt;br /&gt;
&lt;br /&gt;
	-- Add the subst check error.&lt;br /&gt;
	if self.isSubstituted and self.name then&lt;br /&gt;
		root:tag(&#039;b&#039;)&lt;br /&gt;
			:addClass(&#039;error&#039;)&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				&#039;Template &amp;lt;code&amp;gt;%s[[Template:%s|%s]]%s&amp;lt;/code&amp;gt; has been incorrectly substituted.&#039;,&lt;br /&gt;
				mw.text.nowiki(&#039;{{&#039;), self.name, self.name, mw.text.nowiki(&#039;}}&#039;)&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local frame = mw.getCurrentFrame()&lt;br /&gt;
	root:wikitext(frame:extensionTag{&lt;br /&gt;
		name = &#039;templatestyles&#039;,&lt;br /&gt;
		args = { src = self.base_templatestyles },&lt;br /&gt;
	})&lt;br /&gt;
	-- Add support for a single custom templatestyles sheet. Undocumented as&lt;br /&gt;
	-- need should be limited and many templates using mbox are substed; we&lt;br /&gt;
	-- don&#039;t want to spread templatestyles sheets around to arbitrary places&lt;br /&gt;
	if self.templatestyles then&lt;br /&gt;
		root:wikitext(frame:extensionTag{&lt;br /&gt;
			name = &#039;templatestyles&#039;,&lt;br /&gt;
			args = { src = self.templatestyles },&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Create the box table.&lt;br /&gt;
	local boxTable = root:tag(&#039;table&#039;)&lt;br /&gt;
	boxTable:attr(&#039;id&#039;, self.id or nil)&lt;br /&gt;
	for i, class in ipairs(self.classes or {}) do&lt;br /&gt;
		boxTable:addClass(class or nil)&lt;br /&gt;
	end&lt;br /&gt;
	boxTable&lt;br /&gt;
		:cssText(self.style or nil)&lt;br /&gt;
		:attr(&#039;role&#039;, &#039;presentation&#039;)&lt;br /&gt;
&lt;br /&gt;
	if self.attrs then&lt;br /&gt;
		boxTable:attr(self.attrs)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the left-hand image.&lt;br /&gt;
	local row = boxTable:tag(&#039;tr&#039;)&lt;br /&gt;
	if self.imageLeft then&lt;br /&gt;
		local imageLeftCell = row:tag(&#039;td&#039;):addClass(&#039;mbox-image&#039;)&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageLeftCell so that the image&lt;br /&gt;
			-- is inside it. Divs use style=&amp;quot;width: 52px;&amp;quot;, which limits the&lt;br /&gt;
			-- image width to 52px. If any images in a div are wider than that,&lt;br /&gt;
			-- they may overlap with the text or cause other display problems.&lt;br /&gt;
			imageLeftCell = imageLeftCell:tag(&#039;div&#039;):addClass(&#039;mbox-image-div&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		imageLeftCell&lt;br /&gt;
			:addClass(self.imageLeftClass)&lt;br /&gt;
			:wikitext(self.imageLeft or nil)&lt;br /&gt;
	elseif self.imageEmptyCell then&lt;br /&gt;
		-- Some message boxes define an empty cell if no image is specified, and&lt;br /&gt;
		-- some don&#039;t. The old template code in templates where empty cells are&lt;br /&gt;
		-- specified gives the following hint: &amp;quot;No image. Cell with some width&lt;br /&gt;
		-- or padding necessary for text cell to have 100% width.&amp;quot;&lt;br /&gt;
		row:tag(&#039;td&#039;)&lt;br /&gt;
			:addClass(&#039;mbox-empty-cell&#039;)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the text.&lt;br /&gt;
	local textCell = row:tag(&#039;td&#039;):addClass(&#039;mbox-text&#039;)&lt;br /&gt;
	if self.useCollapsibleTextFields then&lt;br /&gt;
		-- The message box uses advanced text parameters that allow things to be&lt;br /&gt;
		-- collapsible. At the moment, only ambox uses this.&lt;br /&gt;
		textCell:cssText(self.textstyle or nil)&lt;br /&gt;
		local textCellDiv = textCell:tag(&#039;div&#039;)&lt;br /&gt;
		textCellDiv&lt;br /&gt;
			:addClass(&#039;mbox-text-span&#039;)&lt;br /&gt;
			:wikitext(self.issue or nil)&lt;br /&gt;
		if (self.talk or self.fix) then&lt;br /&gt;
			textCellDiv:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:wikitext(self.talk and (&#039; &#039; .. self.talk) or nil)&lt;br /&gt;
				:wikitext(self.fix and (&#039; &#039; .. self.fix) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		textCellDiv:wikitext(self.date and (&#039; &#039; .. self.date) or nil)&lt;br /&gt;
		if self.info and not self.isSmall then&lt;br /&gt;
			textCellDiv&lt;br /&gt;
				:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:wikitext(self.info and (&#039; &#039; .. self.info) or nil)&lt;br /&gt;
		end&lt;br /&gt;
		if self.removalNotice then&lt;br /&gt;
			textCellDiv:tag(&#039;span&#039;)&lt;br /&gt;
				:addClass(&#039;hide-when-compact&#039;)&lt;br /&gt;
				:tag(&#039;i&#039;)&lt;br /&gt;
					:wikitext(string.format(&amp;quot; (%s)&amp;quot;, self.removalNotice))&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		-- Default text formatting - anything goes.&lt;br /&gt;
		textCell&lt;br /&gt;
			:cssText(self.textstyle or nil)&lt;br /&gt;
			:wikitext(self.text or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the right-hand image.&lt;br /&gt;
	if self.imageRight then&lt;br /&gt;
		local imageRightCell = row:tag(&#039;td&#039;):addClass(&#039;mbox-imageright&#039;)&lt;br /&gt;
		if self.imageCellDiv then&lt;br /&gt;
			-- If we are using a div, redefine imageRightCell so that the image&lt;br /&gt;
			-- is inside it.&lt;br /&gt;
			imageRightCell = imageRightCell:tag(&#039;div&#039;):addClass(&#039;mbox-image-div&#039;)&lt;br /&gt;
		end&lt;br /&gt;
		imageRightCell&lt;br /&gt;
			:addClass(self.imageRightClass)&lt;br /&gt;
			:wikitext(self.imageRight or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add the below row.&lt;br /&gt;
	if self.below then&lt;br /&gt;
		boxTable:tag(&#039;tr&#039;)&lt;br /&gt;
			:tag(&#039;td&#039;)&lt;br /&gt;
				:attr(&#039;colspan&#039;, self.imageRight and &#039;3&#039; or &#039;2&#039;)&lt;br /&gt;
				:addClass(&#039;mbox-text&#039;)&lt;br /&gt;
				:cssText(self.textstyle or nil)&lt;br /&gt;
				:wikitext(self.below or nil)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add error message for invalid type parameters.&lt;br /&gt;
	if self.invalidTypeError then&lt;br /&gt;
		root:tag(&#039;div&#039;)&lt;br /&gt;
			:addClass(&#039;mbox-invalid-type&#039;)&lt;br /&gt;
			:wikitext(string.format(&lt;br /&gt;
				&#039;This message box is using an invalid &amp;quot;type=%s&amp;quot; parameter and needs fixing.&#039;,&lt;br /&gt;
				self.type or &#039;&#039;&lt;br /&gt;
			))&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Add categories.&lt;br /&gt;
	root:wikitext(self:renderCategories() or nil)&lt;br /&gt;
&lt;br /&gt;
	return tostring(root)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
-- Exports&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
local p, mt = {}, {}&lt;br /&gt;
&lt;br /&gt;
function p._exportClasses()&lt;br /&gt;
	-- For testing.&lt;br /&gt;
	return {&lt;br /&gt;
		MessageBox = MessageBox&lt;br /&gt;
	}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.main(boxType, args, cfgTables)&lt;br /&gt;
	local box = MessageBox.new(boxType, args, cfgTables or mw.loadData(CONFIG_MODULE))&lt;br /&gt;
	box:setParameters()&lt;br /&gt;
	box:setCategories()&lt;br /&gt;
	return box:export()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function mt.__index(t, k)&lt;br /&gt;
	return function (frame)&lt;br /&gt;
		if not getArgs then&lt;br /&gt;
			getArgs = require(&#039;Module:Arguments&#039;).getArgs&lt;br /&gt;
		end&lt;br /&gt;
		return t.main(k, getArgs(frame, {trim = false, removeBlanks = false}))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return setmetatable(p, mt)&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Template:Template_link&amp;diff=25</id>
		<title>Template:Template link</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Template:Template_link&amp;diff=25"/>
		<updated>2024-11-24T04:12:24Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{nowrap|&amp;amp;#123;&amp;amp;#123;}}[[Template:{{{1}}}|{{{1}}}]]{{nowrap|&amp;amp;#125;&amp;amp;#125;}}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc subpage and interwikis go on Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Template:Tl&amp;diff=23</id>
		<title>Template:Tl</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Template:Tl&amp;diff=23"/>
		<updated>2024-11-24T04:12:23Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Template:Template link]]&lt;br /&gt;
&lt;br /&gt;
{{Redirect category shell|&lt;br /&gt;
{{R from move}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Module:Arguments&amp;diff=21</id>
		<title>Module:Arguments</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Module:Arguments&amp;diff=21"/>
		<updated>2024-11-24T04:12:23Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- This module provides easy processing of arguments passed to Scribunto from&lt;br /&gt;
-- #invoke. It is intended for use by other Lua modules, and should not be&lt;br /&gt;
-- called from #invoke directly.&lt;br /&gt;
&lt;br /&gt;
local libraryUtil = require(&#039;libraryUtil&#039;)&lt;br /&gt;
local checkType = libraryUtil.checkType&lt;br /&gt;
&lt;br /&gt;
local arguments = {}&lt;br /&gt;
&lt;br /&gt;
-- Generate four different tidyVal functions, so that we don&#039;t have to check the&lt;br /&gt;
-- options every time we call it.&lt;br /&gt;
&lt;br /&gt;
local function tidyValDefault(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		val = val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
		if val == &#039;&#039; then&lt;br /&gt;
			return nil&lt;br /&gt;
		else&lt;br /&gt;
			return val&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValTrimOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		return val:match(&#039;^%s*(.-)%s*$&#039;)&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValRemoveBlanksOnly(key, val)&lt;br /&gt;
	if type(val) == &#039;string&#039; then&lt;br /&gt;
		if val:find(&#039;%S&#039;) then&lt;br /&gt;
			return val&lt;br /&gt;
		else&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return val&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function tidyValNoChange(key, val)&lt;br /&gt;
	return val&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function matchesTitle(given, title)&lt;br /&gt;
	local tp = type( given )&lt;br /&gt;
	return (tp == &#039;string&#039; or tp == &#039;number&#039;) and mw.title.new( given ).prefixedText == title&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local translate_mt = { __index = function(t, k) return k end }&lt;br /&gt;
&lt;br /&gt;
function arguments.getArgs(frame, options)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 1, frame, &#039;table&#039;, true)&lt;br /&gt;
	checkType(&#039;getArgs&#039;, 2, options, &#039;table&#039;, true)&lt;br /&gt;
	frame = frame or {}&lt;br /&gt;
	options = options or {}&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up argument translation.&lt;br /&gt;
	--]]&lt;br /&gt;
	options.translate = options.translate or {}&lt;br /&gt;
	if getmetatable(options.translate) == nil then&lt;br /&gt;
		setmetatable(options.translate, translate_mt)&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate == nil then&lt;br /&gt;
		options.backtranslate = {}&lt;br /&gt;
		for k,v in pairs(options.translate) do&lt;br /&gt;
			options.backtranslate[v] = k&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if options.backtranslate and getmetatable(options.backtranslate) == nil then&lt;br /&gt;
		setmetatable(options.backtranslate, {&lt;br /&gt;
			__index = function(t, k)&lt;br /&gt;
				if options.translate[k] ~= k then&lt;br /&gt;
					return nil&lt;br /&gt;
				else&lt;br /&gt;
					return k&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		})&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Get the argument tables. If we were passed a valid frame object, get the&lt;br /&gt;
	-- frame arguments (fargs) and the parent frame arguments (pargs), depending&lt;br /&gt;
	-- on the options set and on the parent frame&#039;s availability. If we weren&#039;t&lt;br /&gt;
	-- passed a valid frame object, we are being called from another Lua module&lt;br /&gt;
	-- or from the debug console, so assume that we were passed a table of args&lt;br /&gt;
	-- directly, and assign it to a new variable (luaArgs).&lt;br /&gt;
	--]]&lt;br /&gt;
	local fargs, pargs, luaArgs&lt;br /&gt;
	if type(frame.args) == &#039;table&#039; and type(frame.getParent) == &#039;function&#039; then&lt;br /&gt;
		if options.wrappers then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- The wrappers option makes Module:Arguments look up arguments in&lt;br /&gt;
			-- either the frame argument table or the parent argument table, but&lt;br /&gt;
			-- not both. This means that users can use either the #invoke syntax&lt;br /&gt;
			-- or a wrapper template without the loss of performance associated&lt;br /&gt;
			-- with looking arguments up in both the frame and the parent frame.&lt;br /&gt;
			-- Module:Arguments will look up arguments in the parent frame&lt;br /&gt;
			-- if it finds the parent frame&#039;s title in options.wrapper;&lt;br /&gt;
			-- otherwise it will look up arguments in the frame object passed&lt;br /&gt;
			-- to getArgs.&lt;br /&gt;
			--]]&lt;br /&gt;
			local parent = frame:getParent()&lt;br /&gt;
			if not parent then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			else&lt;br /&gt;
				local title = parent:getTitle():gsub(&#039;/sandbox$&#039;, &#039;&#039;)&lt;br /&gt;
				local found = false&lt;br /&gt;
				if matchesTitle(options.wrappers, title) then&lt;br /&gt;
					found = true&lt;br /&gt;
				elseif type(options.wrappers) == &#039;table&#039; then&lt;br /&gt;
					for _,v in pairs(options.wrappers) do&lt;br /&gt;
						if matchesTitle(v, title) then&lt;br /&gt;
							found = true&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
&lt;br /&gt;
				-- We test for false specifically here so that nil (the default) acts like true.&lt;br /&gt;
				if found or options.frameOnly == false then&lt;br /&gt;
					pargs = parent.args&lt;br /&gt;
				end&lt;br /&gt;
				if not found or options.parentOnly == false then&lt;br /&gt;
					fargs = frame.args&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			-- options.wrapper isn&#039;t set, so check the other options.&lt;br /&gt;
			if not options.parentOnly then&lt;br /&gt;
				fargs = frame.args&lt;br /&gt;
			end&lt;br /&gt;
			if not options.frameOnly then&lt;br /&gt;
				local parent = frame:getParent()&lt;br /&gt;
				pargs = parent and parent.args or nil&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		if options.parentFirst then&lt;br /&gt;
			fargs, pargs = pargs, fargs&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		luaArgs = frame&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	-- Set the order of precedence of the argument tables. If the variables are&lt;br /&gt;
	-- nil, nothing will be added to the table, which is how we avoid clashes&lt;br /&gt;
	-- between the frame/parent args and the Lua args.&lt;br /&gt;
	local argTables = {fargs}&lt;br /&gt;
	argTables[#argTables + 1] = pargs&lt;br /&gt;
	argTables[#argTables + 1] = luaArgs&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Generate the tidyVal function. If it has been specified by the user, we&lt;br /&gt;
	-- use that; if not, we choose one of four functions depending on the&lt;br /&gt;
	-- options chosen. This is so that we don&#039;t have to call the options table&lt;br /&gt;
	-- every time the function is called.&lt;br /&gt;
	--]]&lt;br /&gt;
	local tidyVal = options.valueFunc&lt;br /&gt;
	if tidyVal then&lt;br /&gt;
		if type(tidyVal) ~= &#039;function&#039; then&lt;br /&gt;
			error(&lt;br /&gt;
				&amp;quot;bad value assigned to option &#039;valueFunc&#039;&amp;quot;&lt;br /&gt;
					.. &#039;(function expected, got &#039;&lt;br /&gt;
					.. type(tidyVal)&lt;br /&gt;
					.. &#039;)&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		end&lt;br /&gt;
	elseif options.trim ~= false then&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValDefault&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValTrimOnly&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if options.removeBlanks ~= false then&lt;br /&gt;
			tidyVal = tidyValRemoveBlanksOnly&lt;br /&gt;
		else&lt;br /&gt;
			tidyVal = tidyValNoChange&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Set up the args, metaArgs and nilArgs tables. args will be the one&lt;br /&gt;
	-- accessed from functions, and metaArgs will hold the actual arguments. Nil&lt;br /&gt;
	-- arguments are memoized in nilArgs, and the metatable connects all of them&lt;br /&gt;
	-- together.&lt;br /&gt;
	--]]&lt;br /&gt;
	local args, metaArgs, nilArgs, metatable = {}, {}, {}, {}&lt;br /&gt;
	setmetatable(args, metatable)&lt;br /&gt;
&lt;br /&gt;
	local function mergeArgs(tables)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Accepts multiple tables as input and merges their keys and values&lt;br /&gt;
		-- into one table. If a value is already present it is not overwritten;&lt;br /&gt;
		-- tables listed earlier have precedence. We are also memoizing nil&lt;br /&gt;
		-- values, which can be overwritten if they are &#039;s&#039; (soft).&lt;br /&gt;
		--]]&lt;br /&gt;
		for _, t in ipairs(tables) do&lt;br /&gt;
			for key, val in pairs(t) do&lt;br /&gt;
				if metaArgs[key] == nil and nilArgs[key] ~= &#039;h&#039; then&lt;br /&gt;
					local tidiedVal = tidyVal(key, val)&lt;br /&gt;
					if tidiedVal == nil then&lt;br /&gt;
						nilArgs[key] = &#039;s&#039;&lt;br /&gt;
					else&lt;br /&gt;
						metaArgs[key] = tidiedVal&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--[[&lt;br /&gt;
	-- Define metatable behaviour. Arguments are memoized in the metaArgs table,&lt;br /&gt;
	-- and are only fetched from the argument tables once. Fetching arguments&lt;br /&gt;
	-- from the argument tables is the most resource-intensive step in this&lt;br /&gt;
	-- module, so we try and avoid it where possible. For this reason, nil&lt;br /&gt;
	-- arguments are also memoized, in the nilArgs table. Also, we keep a record&lt;br /&gt;
	-- in the metatable of when pairs and ipairs have been called, so we do not&lt;br /&gt;
	-- run pairs and ipairs on the argument tables more than once. We also do&lt;br /&gt;
	-- not run ipairs on fargs and pargs if pairs has already been run, as all&lt;br /&gt;
	-- the arguments will already have been copied over.&lt;br /&gt;
	--]]&lt;br /&gt;
&lt;br /&gt;
	metatable.__index = function (t, key)&lt;br /&gt;
		--[[&lt;br /&gt;
		-- Fetches an argument when the args table is indexed. First we check&lt;br /&gt;
		-- to see if the value is memoized, and if not we try and fetch it from&lt;br /&gt;
		-- the argument tables. When we check memoization, we need to check&lt;br /&gt;
		-- metaArgs before nilArgs, as both can be non-nil at the same time.&lt;br /&gt;
		-- If the argument is not present in metaArgs, we also check whether&lt;br /&gt;
		-- pairs has been run yet. If pairs has already been run, we return nil.&lt;br /&gt;
		-- This is because all the arguments will have already been copied into&lt;br /&gt;
		-- metaArgs by the mergeArgs function, meaning that any other arguments&lt;br /&gt;
		-- must be nil.&lt;br /&gt;
		--]]&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		local val = metaArgs[key]&lt;br /&gt;
		if val ~= nil then&lt;br /&gt;
			return val&lt;br /&gt;
		elseif metatable.donePairs or nilArgs[key] then&lt;br /&gt;
			return nil&lt;br /&gt;
		end&lt;br /&gt;
		for _, argTable in ipairs(argTables) do&lt;br /&gt;
			local argTableVal = tidyVal(key, argTable[key])&lt;br /&gt;
			if argTableVal ~= nil then&lt;br /&gt;
				metaArgs[key] = argTableVal&lt;br /&gt;
				return argTableVal&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		return nil&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__newindex = function (t, key, val)&lt;br /&gt;
		-- This function is called when a module tries to add a new value to the&lt;br /&gt;
		-- args table, or tries to change an existing value.&lt;br /&gt;
		if type(key) == &#039;string&#039; then&lt;br /&gt;
			key = options.translate[key]&lt;br /&gt;
		end&lt;br /&gt;
		if options.readOnly then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; the table is read-only&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif options.noOverwrite and args[key] ~= nil then&lt;br /&gt;
			error(&lt;br /&gt;
				&#039;could not write to argument table key &amp;quot;&#039;&lt;br /&gt;
					.. tostring(key)&lt;br /&gt;
					.. &#039;&amp;quot;; overwriting existing arguments is not permitted&#039;,&lt;br /&gt;
				2&lt;br /&gt;
			)&lt;br /&gt;
		elseif val == nil then&lt;br /&gt;
			--[[&lt;br /&gt;
			-- If the argument is to be overwritten with nil, we need to erase&lt;br /&gt;
			-- the value in metaArgs, so that __index, __pairs and __ipairs do&lt;br /&gt;
			-- not use a previous existing value, if present; and we also need&lt;br /&gt;
			-- to memoize the nil in nilArgs, so that the value isn&#039;t looked&lt;br /&gt;
			-- up in the argument tables if it is accessed again.&lt;br /&gt;
			--]]&lt;br /&gt;
			metaArgs[key] = nil&lt;br /&gt;
			nilArgs[key] = &#039;h&#039;&lt;br /&gt;
		else&lt;br /&gt;
			metaArgs[key] = val&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function translatenext(invariant)&lt;br /&gt;
		local k, v = next(invariant.t, invariant.k)&lt;br /&gt;
		invariant.k = k&lt;br /&gt;
		if k == nil then&lt;br /&gt;
			return nil&lt;br /&gt;
		elseif type(k) ~= &#039;string&#039; or not options.backtranslate then&lt;br /&gt;
			return k, v&lt;br /&gt;
		else&lt;br /&gt;
			local backtranslate = options.backtranslate[k]&lt;br /&gt;
			if backtranslate == nil then&lt;br /&gt;
				-- Skip this one. This is a tail call, so this won&#039;t cause stack overflow&lt;br /&gt;
				return translatenext(invariant)&lt;br /&gt;
			else&lt;br /&gt;
				return backtranslate, v&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__pairs = function ()&lt;br /&gt;
		-- Called when pairs is run on the args table.&lt;br /&gt;
		if not metatable.donePairs then&lt;br /&gt;
			mergeArgs(argTables)&lt;br /&gt;
			metatable.donePairs = true&lt;br /&gt;
		end&lt;br /&gt;
		return translatenext, { t = metaArgs }&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local function inext(t, i)&lt;br /&gt;
		-- This uses our __index metamethod&lt;br /&gt;
		local v = t[i + 1]&lt;br /&gt;
		if v ~= nil then&lt;br /&gt;
			return i + 1, v&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	metatable.__ipairs = function (t)&lt;br /&gt;
		-- Called when ipairs is run on the args table.&lt;br /&gt;
		return inext, t, 0&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return arguments&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Module:Yesno&amp;diff=19</id>
		<title>Module:Yesno</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Module:Yesno&amp;diff=19"/>
		<updated>2024-11-24T04:12:23Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- Function allowing for consistent treatment of boolean-like wikitext input.&lt;br /&gt;
-- It works similarly to the template {{yesno}}.&lt;br /&gt;
&lt;br /&gt;
return function (val, default)&lt;br /&gt;
	-- If your wiki uses non-ascii characters for any of &amp;quot;yes&amp;quot;, &amp;quot;no&amp;quot;, etc., you&lt;br /&gt;
	-- should replace &amp;quot;val:lower()&amp;quot; with &amp;quot;mw.ustring.lower(val)&amp;quot; in the&lt;br /&gt;
	-- following line.&lt;br /&gt;
	val = type(val) == &#039;string&#039; and val:lower() or val&lt;br /&gt;
	if val == nil then&lt;br /&gt;
		return nil&lt;br /&gt;
	elseif val == true &lt;br /&gt;
		or val == &#039;yes&#039;&lt;br /&gt;
		or val == &#039;y&#039;&lt;br /&gt;
		or val == &#039;true&#039;&lt;br /&gt;
		or val == &#039;t&#039;&lt;br /&gt;
		or val == &#039;on&#039;&lt;br /&gt;
		or tonumber(val) == 1&lt;br /&gt;
	then&lt;br /&gt;
		return true&lt;br /&gt;
	elseif val == false&lt;br /&gt;
		or val == &#039;no&#039;&lt;br /&gt;
		or val == &#039;n&#039;&lt;br /&gt;
		or val == &#039;false&#039;&lt;br /&gt;
		or val == &#039;f&#039;&lt;br /&gt;
		or val == &#039;off&#039;&lt;br /&gt;
		or tonumber(val) == 0&lt;br /&gt;
	then&lt;br /&gt;
		return false&lt;br /&gt;
	else&lt;br /&gt;
		return default&lt;br /&gt;
	end&lt;br /&gt;
end&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Module:Lang/ISO_639_synonyms&amp;diff=17</id>
		<title>Module:Lang/ISO 639 synonyms</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Module:Lang/ISO_639_synonyms&amp;diff=17"/>
		<updated>2024-11-24T04:12:23Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- File-Date: 2013-01-11&lt;br /&gt;
return {&lt;br /&gt;
	[&amp;quot;aar&amp;quot;] = &amp;quot;aa&amp;quot;,&lt;br /&gt;
	[&amp;quot;abk&amp;quot;] = &amp;quot;ab&amp;quot;,&lt;br /&gt;
	[&amp;quot;afr&amp;quot;] = &amp;quot;af&amp;quot;,&lt;br /&gt;
	[&amp;quot;aka&amp;quot;] = &amp;quot;ak&amp;quot;,&lt;br /&gt;
	[&amp;quot;amh&amp;quot;] = &amp;quot;am&amp;quot;,&lt;br /&gt;
	[&amp;quot;ara&amp;quot;] = &amp;quot;ar&amp;quot;,&lt;br /&gt;
	[&amp;quot;arg&amp;quot;] = &amp;quot;an&amp;quot;,&lt;br /&gt;
	[&amp;quot;asm&amp;quot;] = &amp;quot;as&amp;quot;,&lt;br /&gt;
	[&amp;quot;ava&amp;quot;] = &amp;quot;av&amp;quot;,&lt;br /&gt;
	[&amp;quot;ave&amp;quot;] = &amp;quot;ae&amp;quot;,&lt;br /&gt;
	[&amp;quot;aym&amp;quot;] = &amp;quot;ay&amp;quot;,&lt;br /&gt;
	[&amp;quot;aze&amp;quot;] = &amp;quot;az&amp;quot;,&lt;br /&gt;
	[&amp;quot;bak&amp;quot;] = &amp;quot;ba&amp;quot;,&lt;br /&gt;
	[&amp;quot;bam&amp;quot;] = &amp;quot;bm&amp;quot;,&lt;br /&gt;
	[&amp;quot;bel&amp;quot;] = &amp;quot;be&amp;quot;,&lt;br /&gt;
	[&amp;quot;ben&amp;quot;] = &amp;quot;bn&amp;quot;,&lt;br /&gt;
	[&amp;quot;bih&amp;quot;] = &amp;quot;bh&amp;quot;,&lt;br /&gt;
	[&amp;quot;bis&amp;quot;] = &amp;quot;bi&amp;quot;,&lt;br /&gt;
	[&amp;quot;bod&amp;quot;] = &amp;quot;bo&amp;quot;,&lt;br /&gt;
	[&amp;quot;bos&amp;quot;] = &amp;quot;bs&amp;quot;,&lt;br /&gt;
	[&amp;quot;bre&amp;quot;] = &amp;quot;br&amp;quot;,&lt;br /&gt;
	[&amp;quot;bul&amp;quot;] = &amp;quot;bg&amp;quot;,&lt;br /&gt;
	[&amp;quot;cat&amp;quot;] = &amp;quot;ca&amp;quot;,&lt;br /&gt;
	[&amp;quot;ces&amp;quot;] = &amp;quot;cs&amp;quot;,&lt;br /&gt;
	[&amp;quot;cha&amp;quot;] = &amp;quot;ch&amp;quot;,&lt;br /&gt;
	[&amp;quot;che&amp;quot;] = &amp;quot;ce&amp;quot;,&lt;br /&gt;
	[&amp;quot;chu&amp;quot;] = &amp;quot;cu&amp;quot;,&lt;br /&gt;
	[&amp;quot;chv&amp;quot;] = &amp;quot;cv&amp;quot;,&lt;br /&gt;
	[&amp;quot;cor&amp;quot;] = &amp;quot;kw&amp;quot;,&lt;br /&gt;
	[&amp;quot;cos&amp;quot;] = &amp;quot;co&amp;quot;,&lt;br /&gt;
	[&amp;quot;cre&amp;quot;] = &amp;quot;cr&amp;quot;,&lt;br /&gt;
	[&amp;quot;cym&amp;quot;] = &amp;quot;cy&amp;quot;,&lt;br /&gt;
	[&amp;quot;dan&amp;quot;] = &amp;quot;da&amp;quot;,&lt;br /&gt;
	[&amp;quot;deu&amp;quot;] = &amp;quot;de&amp;quot;,&lt;br /&gt;
	[&amp;quot;div&amp;quot;] = &amp;quot;dv&amp;quot;,&lt;br /&gt;
	[&amp;quot;dzo&amp;quot;] = &amp;quot;dz&amp;quot;,&lt;br /&gt;
	[&amp;quot;ell&amp;quot;] = &amp;quot;el&amp;quot;,&lt;br /&gt;
	[&amp;quot;eng&amp;quot;] = &amp;quot;en&amp;quot;,&lt;br /&gt;
	[&amp;quot;epo&amp;quot;] = &amp;quot;eo&amp;quot;,&lt;br /&gt;
	[&amp;quot;est&amp;quot;] = &amp;quot;et&amp;quot;,&lt;br /&gt;
	[&amp;quot;eus&amp;quot;] = &amp;quot;eu&amp;quot;,&lt;br /&gt;
	[&amp;quot;ewe&amp;quot;] = &amp;quot;ee&amp;quot;,&lt;br /&gt;
	[&amp;quot;fao&amp;quot;] = &amp;quot;fo&amp;quot;,&lt;br /&gt;
	[&amp;quot;fas&amp;quot;] = &amp;quot;fa&amp;quot;,&lt;br /&gt;
	[&amp;quot;fij&amp;quot;] = &amp;quot;fj&amp;quot;,&lt;br /&gt;
	[&amp;quot;fin&amp;quot;] = &amp;quot;fi&amp;quot;,&lt;br /&gt;
	[&amp;quot;fra&amp;quot;] = &amp;quot;fr&amp;quot;,&lt;br /&gt;
	[&amp;quot;fry&amp;quot;] = &amp;quot;fy&amp;quot;,&lt;br /&gt;
	[&amp;quot;ful&amp;quot;] = &amp;quot;ff&amp;quot;,&lt;br /&gt;
	[&amp;quot;gla&amp;quot;] = &amp;quot;gd&amp;quot;,&lt;br /&gt;
	[&amp;quot;gle&amp;quot;] = &amp;quot;ga&amp;quot;,&lt;br /&gt;
	[&amp;quot;glg&amp;quot;] = &amp;quot;gl&amp;quot;,&lt;br /&gt;
	[&amp;quot;glv&amp;quot;] = &amp;quot;gv&amp;quot;,&lt;br /&gt;
	[&amp;quot;grn&amp;quot;] = &amp;quot;gn&amp;quot;,&lt;br /&gt;
	[&amp;quot;guj&amp;quot;] = &amp;quot;gu&amp;quot;,&lt;br /&gt;
	[&amp;quot;hat&amp;quot;] = &amp;quot;ht&amp;quot;,&lt;br /&gt;
	[&amp;quot;hau&amp;quot;] = &amp;quot;ha&amp;quot;,&lt;br /&gt;
	[&amp;quot;heb&amp;quot;] = &amp;quot;he&amp;quot;,&lt;br /&gt;
	[&amp;quot;her&amp;quot;] = &amp;quot;hz&amp;quot;,&lt;br /&gt;
	[&amp;quot;hin&amp;quot;] = &amp;quot;hi&amp;quot;,&lt;br /&gt;
	[&amp;quot;hmo&amp;quot;] = &amp;quot;ho&amp;quot;,&lt;br /&gt;
	[&amp;quot;hrv&amp;quot;] = &amp;quot;hr&amp;quot;,&lt;br /&gt;
	[&amp;quot;hun&amp;quot;] = &amp;quot;hu&amp;quot;,&lt;br /&gt;
	[&amp;quot;hye&amp;quot;] = &amp;quot;hy&amp;quot;,&lt;br /&gt;
	[&amp;quot;ibo&amp;quot;] = &amp;quot;ig&amp;quot;,&lt;br /&gt;
	[&amp;quot;ido&amp;quot;] = &amp;quot;io&amp;quot;,&lt;br /&gt;
	[&amp;quot;iii&amp;quot;] = &amp;quot;ii&amp;quot;,&lt;br /&gt;
	[&amp;quot;iku&amp;quot;] = &amp;quot;iu&amp;quot;,&lt;br /&gt;
	[&amp;quot;ile&amp;quot;] = &amp;quot;ie&amp;quot;,&lt;br /&gt;
	[&amp;quot;ina&amp;quot;] = &amp;quot;ia&amp;quot;,&lt;br /&gt;
	[&amp;quot;ind&amp;quot;] = &amp;quot;id&amp;quot;,&lt;br /&gt;
	[&amp;quot;ipk&amp;quot;] = &amp;quot;ik&amp;quot;,&lt;br /&gt;
	[&amp;quot;isl&amp;quot;] = &amp;quot;is&amp;quot;,&lt;br /&gt;
	[&amp;quot;ita&amp;quot;] = &amp;quot;it&amp;quot;,&lt;br /&gt;
	[&amp;quot;jav&amp;quot;] = &amp;quot;jv&amp;quot;,&lt;br /&gt;
	[&amp;quot;jpn&amp;quot;] = &amp;quot;ja&amp;quot;,&lt;br /&gt;
	[&amp;quot;kal&amp;quot;] = &amp;quot;kl&amp;quot;,&lt;br /&gt;
	[&amp;quot;kan&amp;quot;] = &amp;quot;kn&amp;quot;,&lt;br /&gt;
	[&amp;quot;kas&amp;quot;] = &amp;quot;ks&amp;quot;,&lt;br /&gt;
	[&amp;quot;kat&amp;quot;] = &amp;quot;ka&amp;quot;,&lt;br /&gt;
	[&amp;quot;kau&amp;quot;] = &amp;quot;kr&amp;quot;,&lt;br /&gt;
	[&amp;quot;kaz&amp;quot;] = &amp;quot;kk&amp;quot;,&lt;br /&gt;
	[&amp;quot;khm&amp;quot;] = &amp;quot;km&amp;quot;,&lt;br /&gt;
	[&amp;quot;kik&amp;quot;] = &amp;quot;ki&amp;quot;,&lt;br /&gt;
	[&amp;quot;kin&amp;quot;] = &amp;quot;rw&amp;quot;,&lt;br /&gt;
	[&amp;quot;kir&amp;quot;] = &amp;quot;ky&amp;quot;,&lt;br /&gt;
	[&amp;quot;kom&amp;quot;] = &amp;quot;kv&amp;quot;,&lt;br /&gt;
	[&amp;quot;kon&amp;quot;] = &amp;quot;kg&amp;quot;,&lt;br /&gt;
	[&amp;quot;kor&amp;quot;] = &amp;quot;ko&amp;quot;,&lt;br /&gt;
	[&amp;quot;kua&amp;quot;] = &amp;quot;kj&amp;quot;,&lt;br /&gt;
	[&amp;quot;kur&amp;quot;] = &amp;quot;ku&amp;quot;,&lt;br /&gt;
	[&amp;quot;lao&amp;quot;] = &amp;quot;lo&amp;quot;,&lt;br /&gt;
	[&amp;quot;lat&amp;quot;] = &amp;quot;la&amp;quot;,&lt;br /&gt;
	[&amp;quot;lav&amp;quot;] = &amp;quot;lv&amp;quot;,&lt;br /&gt;
	[&amp;quot;lim&amp;quot;] = &amp;quot;li&amp;quot;,&lt;br /&gt;
	[&amp;quot;lin&amp;quot;] = &amp;quot;ln&amp;quot;,&lt;br /&gt;
	[&amp;quot;lit&amp;quot;] = &amp;quot;lt&amp;quot;,&lt;br /&gt;
	[&amp;quot;ltz&amp;quot;] = &amp;quot;lb&amp;quot;,&lt;br /&gt;
	[&amp;quot;lub&amp;quot;] = &amp;quot;lu&amp;quot;,&lt;br /&gt;
	[&amp;quot;lug&amp;quot;] = &amp;quot;lg&amp;quot;,&lt;br /&gt;
	[&amp;quot;mah&amp;quot;] = &amp;quot;mh&amp;quot;,&lt;br /&gt;
	[&amp;quot;mal&amp;quot;] = &amp;quot;ml&amp;quot;,&lt;br /&gt;
	[&amp;quot;mar&amp;quot;] = &amp;quot;mr&amp;quot;,&lt;br /&gt;
	[&amp;quot;mkd&amp;quot;] = &amp;quot;mk&amp;quot;,&lt;br /&gt;
	[&amp;quot;mlg&amp;quot;] = &amp;quot;mg&amp;quot;,&lt;br /&gt;
	[&amp;quot;mlt&amp;quot;] = &amp;quot;mt&amp;quot;,&lt;br /&gt;
	[&amp;quot;mon&amp;quot;] = &amp;quot;mn&amp;quot;,&lt;br /&gt;
	[&amp;quot;mri&amp;quot;] = &amp;quot;mi&amp;quot;,&lt;br /&gt;
	[&amp;quot;msa&amp;quot;] = &amp;quot;ms&amp;quot;,&lt;br /&gt;
	[&amp;quot;mya&amp;quot;] = &amp;quot;my&amp;quot;,&lt;br /&gt;
	[&amp;quot;nau&amp;quot;] = &amp;quot;na&amp;quot;,&lt;br /&gt;
	[&amp;quot;nav&amp;quot;] = &amp;quot;nv&amp;quot;,&lt;br /&gt;
	[&amp;quot;nbl&amp;quot;] = &amp;quot;nr&amp;quot;,&lt;br /&gt;
	[&amp;quot;nde&amp;quot;] = &amp;quot;nd&amp;quot;,&lt;br /&gt;
	[&amp;quot;ndo&amp;quot;] = &amp;quot;ng&amp;quot;,&lt;br /&gt;
	[&amp;quot;nep&amp;quot;] = &amp;quot;ne&amp;quot;,&lt;br /&gt;
	[&amp;quot;nld&amp;quot;] = &amp;quot;nl&amp;quot;,&lt;br /&gt;
	[&amp;quot;nno&amp;quot;] = &amp;quot;nn&amp;quot;,&lt;br /&gt;
	[&amp;quot;nob&amp;quot;] = &amp;quot;nb&amp;quot;,&lt;br /&gt;
	[&amp;quot;nor&amp;quot;] = &amp;quot;no&amp;quot;,&lt;br /&gt;
	[&amp;quot;nya&amp;quot;] = &amp;quot;ny&amp;quot;,&lt;br /&gt;
	[&amp;quot;oci&amp;quot;] = &amp;quot;oc&amp;quot;,&lt;br /&gt;
	[&amp;quot;oji&amp;quot;] = &amp;quot;oj&amp;quot;,&lt;br /&gt;
	[&amp;quot;ori&amp;quot;] = &amp;quot;or&amp;quot;,&lt;br /&gt;
	[&amp;quot;orm&amp;quot;] = &amp;quot;om&amp;quot;,&lt;br /&gt;
	[&amp;quot;oss&amp;quot;] = &amp;quot;os&amp;quot;,&lt;br /&gt;
	[&amp;quot;pan&amp;quot;] = &amp;quot;pa&amp;quot;,&lt;br /&gt;
	[&amp;quot;pli&amp;quot;] = &amp;quot;pi&amp;quot;,&lt;br /&gt;
	[&amp;quot;pol&amp;quot;] = &amp;quot;pl&amp;quot;,&lt;br /&gt;
	[&amp;quot;por&amp;quot;] = &amp;quot;pt&amp;quot;,&lt;br /&gt;
	[&amp;quot;pus&amp;quot;] = &amp;quot;ps&amp;quot;,&lt;br /&gt;
	[&amp;quot;que&amp;quot;] = &amp;quot;qu&amp;quot;,&lt;br /&gt;
	[&amp;quot;roh&amp;quot;] = &amp;quot;rm&amp;quot;,&lt;br /&gt;
	[&amp;quot;ron&amp;quot;] = &amp;quot;ro&amp;quot;,&lt;br /&gt;
	[&amp;quot;run&amp;quot;] = &amp;quot;rn&amp;quot;,&lt;br /&gt;
	[&amp;quot;rus&amp;quot;] = &amp;quot;ru&amp;quot;,&lt;br /&gt;
	[&amp;quot;sag&amp;quot;] = &amp;quot;sg&amp;quot;,&lt;br /&gt;
	[&amp;quot;san&amp;quot;] = &amp;quot;sa&amp;quot;,&lt;br /&gt;
	[&amp;quot;sin&amp;quot;] = &amp;quot;si&amp;quot;,&lt;br /&gt;
	[&amp;quot;slk&amp;quot;] = &amp;quot;sk&amp;quot;,&lt;br /&gt;
	[&amp;quot;slv&amp;quot;] = &amp;quot;sl&amp;quot;,&lt;br /&gt;
	[&amp;quot;sme&amp;quot;] = &amp;quot;se&amp;quot;,&lt;br /&gt;
	[&amp;quot;smo&amp;quot;] = &amp;quot;sm&amp;quot;,&lt;br /&gt;
	[&amp;quot;sna&amp;quot;] = &amp;quot;sn&amp;quot;,&lt;br /&gt;
	[&amp;quot;snd&amp;quot;] = &amp;quot;sd&amp;quot;,&lt;br /&gt;
	[&amp;quot;som&amp;quot;] = &amp;quot;so&amp;quot;,&lt;br /&gt;
	[&amp;quot;sot&amp;quot;] = &amp;quot;st&amp;quot;,&lt;br /&gt;
	[&amp;quot;spa&amp;quot;] = &amp;quot;es&amp;quot;,&lt;br /&gt;
	[&amp;quot;sqi&amp;quot;] = &amp;quot;sq&amp;quot;,&lt;br /&gt;
	[&amp;quot;srd&amp;quot;] = &amp;quot;sc&amp;quot;,&lt;br /&gt;
	[&amp;quot;srp&amp;quot;] = &amp;quot;sr&amp;quot;,&lt;br /&gt;
	[&amp;quot;ssw&amp;quot;] = &amp;quot;ss&amp;quot;,&lt;br /&gt;
	[&amp;quot;sun&amp;quot;] = &amp;quot;su&amp;quot;,&lt;br /&gt;
	[&amp;quot;swa&amp;quot;] = &amp;quot;sw&amp;quot;,&lt;br /&gt;
	[&amp;quot;swe&amp;quot;] = &amp;quot;sv&amp;quot;,&lt;br /&gt;
	[&amp;quot;tah&amp;quot;] = &amp;quot;ty&amp;quot;,&lt;br /&gt;
	[&amp;quot;tam&amp;quot;] = &amp;quot;ta&amp;quot;,&lt;br /&gt;
	[&amp;quot;tat&amp;quot;] = &amp;quot;tt&amp;quot;,&lt;br /&gt;
	[&amp;quot;tel&amp;quot;] = &amp;quot;te&amp;quot;,&lt;br /&gt;
	[&amp;quot;tgk&amp;quot;] = &amp;quot;tg&amp;quot;,&lt;br /&gt;
	[&amp;quot;tgl&amp;quot;] = &amp;quot;tl&amp;quot;,&lt;br /&gt;
	[&amp;quot;tha&amp;quot;] = &amp;quot;th&amp;quot;,&lt;br /&gt;
	[&amp;quot;tir&amp;quot;] = &amp;quot;ti&amp;quot;,&lt;br /&gt;
	[&amp;quot;ton&amp;quot;] = &amp;quot;to&amp;quot;,&lt;br /&gt;
	[&amp;quot;tsn&amp;quot;] = &amp;quot;tn&amp;quot;,&lt;br /&gt;
	[&amp;quot;tso&amp;quot;] = &amp;quot;ts&amp;quot;,&lt;br /&gt;
	[&amp;quot;tuk&amp;quot;] = &amp;quot;tk&amp;quot;,&lt;br /&gt;
	[&amp;quot;tur&amp;quot;] = &amp;quot;tr&amp;quot;,&lt;br /&gt;
	[&amp;quot;twi&amp;quot;] = &amp;quot;tw&amp;quot;,&lt;br /&gt;
	[&amp;quot;uig&amp;quot;] = &amp;quot;ug&amp;quot;,&lt;br /&gt;
	[&amp;quot;ukr&amp;quot;] = &amp;quot;uk&amp;quot;,&lt;br /&gt;
	[&amp;quot;urd&amp;quot;] = &amp;quot;ur&amp;quot;,&lt;br /&gt;
	[&amp;quot;uzb&amp;quot;] = &amp;quot;uz&amp;quot;,&lt;br /&gt;
	[&amp;quot;ven&amp;quot;] = &amp;quot;ve&amp;quot;,&lt;br /&gt;
	[&amp;quot;vie&amp;quot;] = &amp;quot;vi&amp;quot;,&lt;br /&gt;
	[&amp;quot;vol&amp;quot;] = &amp;quot;vo&amp;quot;,&lt;br /&gt;
	[&amp;quot;wln&amp;quot;] = &amp;quot;wa&amp;quot;,&lt;br /&gt;
	[&amp;quot;wol&amp;quot;] = &amp;quot;wo&amp;quot;,&lt;br /&gt;
	[&amp;quot;xho&amp;quot;] = &amp;quot;xh&amp;quot;,&lt;br /&gt;
	[&amp;quot;yid&amp;quot;] = &amp;quot;yi&amp;quot;,&lt;br /&gt;
	[&amp;quot;yor&amp;quot;] = &amp;quot;yo&amp;quot;,&lt;br /&gt;
	[&amp;quot;zha&amp;quot;] = &amp;quot;za&amp;quot;,&lt;br /&gt;
	[&amp;quot;zho&amp;quot;] = &amp;quot;zh&amp;quot;,&lt;br /&gt;
	[&amp;quot;zul&amp;quot;] = &amp;quot;zu&amp;quot;&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Module:Lang/data&amp;diff=15</id>
		<title>Module:Lang/data</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Module:Lang/data&amp;diff=15"/>
		<updated>2024-11-24T04:12:23Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local lang_obj = mw.language.getContentLanguage();&lt;br /&gt;
local this_wiki_lang_tag = lang_obj.code;										-- get this wiki&#039;s language tag&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G _ N A M E _ T A B L E &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
primary table of tables that decode:&lt;br /&gt;
	lang -&amp;gt; language tags and names&lt;br /&gt;
	script -&amp;gt; ISO 15924 script tags&lt;br /&gt;
	region -&amp;gt; ISO 3166 region tags&lt;br /&gt;
	variant -&amp;gt; iana registered variant tags&lt;br /&gt;
	suppressed -&amp;gt; map of scripts tags and their associated language tags&lt;br /&gt;
	&lt;br /&gt;
all of these data come from separate modules that are derived from the IANA language-subtag-registry file&lt;br /&gt;
&lt;br /&gt;
key_to_lower() avoids the metatable trap and sets all keys in the subtables to lowercase. Many language codes&lt;br /&gt;
have multiple associated names; Module:lang is only concerned with the first name so key_to_lower() only fetches&lt;br /&gt;
the first name.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function key_to_lower (module, src_type)&lt;br /&gt;
	local out = {};&lt;br /&gt;
	local source_t = ((&#039;var_sup&#039; == src_type) and require (module)) or mw.loadData (module);		-- fetch data from this module; require() avoids metatable trap for variant data&lt;br /&gt;
&lt;br /&gt;
	if &#039;var_sup&#039; == src_type then&lt;br /&gt;
		for k, v in pairs (source_t) do&lt;br /&gt;
			out[k:lower()] = v;													-- for variant and suppressed everything is needed&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif &#039;lang&#039; == src_type and source_t.active then							-- for ~/iana_languages (active)&lt;br /&gt;
		for k, v in pairs (source_t.active) do&lt;br /&gt;
			out[k:lower()] = v[1];												-- ignore multiple names; take first name only&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif &#039;lang_dep&#039; == src_type and source_t.deprecated then					-- for ~/iana_languages (deprecated)&lt;br /&gt;
		for k, v in pairs (source_t.deprecated) do&lt;br /&gt;
			out[k:lower()] = v[1];												-- ignore multiple names; take first name only&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	else																		-- here for all other sources&lt;br /&gt;
		for k, v in pairs (source_t) do&lt;br /&gt;
			out[k:lower()] = v[1];												-- ignore multiple names; take first name only&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return out;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lang_name_table_t = {&lt;br /&gt;
	lang = key_to_lower (&#039;Module:Lang/data/iana languages&#039;, &#039;lang&#039;),&lt;br /&gt;
	lang_dep = key_to_lower (&#039;Module:Lang/data/iana languages&#039;, &#039;lang_dep&#039;),&lt;br /&gt;
	script = key_to_lower (&#039;Module:Lang/data/iana scripts&#039;),					-- script keys are capitalized; set to lower&lt;br /&gt;
	region = key_to_lower (&#039;Module:Lang/data/iana regions&#039;),					-- region keys are uppercase; set to lower&lt;br /&gt;
	variant = key_to_lower (&#039;Module:Lang/data/iana variants&#039;, &#039;var_sup&#039;),&lt;br /&gt;
	suppressed = key_to_lower (&#039;Module:Lang/data/iana suppressed scripts&#039;, &#039;var_sup&#039;),	-- script keys are capitalized; set to lower&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I 1 8 N   M E D I A W I K I   O V E R R I D E &amp;gt;--------------------------------&lt;br /&gt;
&lt;br /&gt;
For internationalization; not used at en.wiki&lt;br /&gt;
&lt;br /&gt;
The language names taken from the IANA language-subtag-registry file are given in English. That may not be ideal.&lt;br /&gt;
Translating ~8,000 language names is also not ideal.  MediaWiki maintains (much) shorter lists of language names&lt;br /&gt;
in most languages for which there is a Wikipedia edition.  When desired, Module:Lang can use the MediaWiki &lt;br /&gt;
language list for the local language.&lt;br /&gt;
&lt;br /&gt;
Caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all.&lt;br /&gt;
When incomplete, MediaWiki&#039;s list will &#039;fall back&#039; to another language (typically English).  When that happens&lt;br /&gt;
add an appropriate entry to the override table below.&lt;br /&gt;
&lt;br /&gt;
Caveat lector: the list of MediaWiki language names for your language may not be correct.  At en.wiki, the&lt;br /&gt;
MediaWiki language names do not agree with the IANA language names for these ISO 639-1 tags.  Often it is simply&lt;br /&gt;
spelling differences:&lt;br /&gt;
	bh: IANA: Bihari languages MW: Bhojpuri – the ISO 639-3 tag for Bhojpuri is bho&lt;br /&gt;
	bn: IANA: Bengali MW: Bangla – Bengali is the exonym, Bangla is the endonym&lt;br /&gt;
	dv: IANA: Dhivehi MW: Divehi&lt;br /&gt;
	el: IANA: Modern Greek MW: Greek&lt;br /&gt;
	ht: IANA: Haitian MW: Haitian Creole&lt;br /&gt;
	ky: IANA: Kirghiz MW: Kyrgyz&lt;br /&gt;
	li: IANA: Limburgan MW: Limburgish&lt;br /&gt;
	or: IANA: Oriya MW: Odia&lt;br /&gt;
	os: IANA: Ossetian MW: Ossetic&lt;br /&gt;
	&amp;quot;pa: IANA: Panjabi MW: Punjabi&lt;br /&gt;
	&amp;quot;ps: IANA: Pushto MW: Pashto&lt;br /&gt;
	&amp;quot;to: IANA: Tonga MW: Tongan&lt;br /&gt;
	&amp;quot;ug: IANA: Uighur MW: Uyghur&lt;br /&gt;
use the override table to override language names that are incorrect for your project&lt;br /&gt;
&lt;br /&gt;
To see the list of names that MediaWiki has for your language, enter this in the Debug colsole:&lt;br /&gt;
	=mw.dumpObject (mw.language.fetchLanguageNames (&#039;&amp;lt;tag&amp;gt;&#039;, &#039;all&#039;))&lt;br /&gt;
(replacing &amp;lt;tag&amp;gt; with the language tag for your language)&lt;br /&gt;
&lt;br /&gt;
Use of the MediaWiki language names lists is enabled when media_wiki_override_enable is set to boolean true.&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local media_wiki_override_enable = false;										-- set to true to override IANA names with MediaWiki names; always false at en.wiki&lt;br /&gt;
																				-- caveat lector: the list of MediaWiki language names for your language may not be complete or may not exist at all&lt;br /&gt;
	if true == media_wiki_override_enable then&lt;br /&gt;
		local mw_languages_by_tag_t = mw.language.fetchLanguageNames (this_wiki_lang_tag, &#039;all&#039;);	-- get a table of language tag/name pairs known to MediaWiki&lt;br /&gt;
		for tag, name in pairs (mw_languages_by_tag_t) do						-- loop through each tag/name pair in the MediaWiki list&lt;br /&gt;
			if lang_name_table_t.lang[tag] then									-- if the tag is in the main list&lt;br /&gt;
				lang_name_table_t.lang[tag] = name;								-- overwrite exisiting name with the name from MediaWiki&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; O V E R R I D E &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Language codes and names in this table override the BCP47 names in lang_name_table.&lt;br /&gt;
&lt;br /&gt;
indexes in this table shall always be lower case&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local override = {&lt;br /&gt;
------------------------------&amp;lt; I S O _ 6 3 9 - 1 &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;ab&amp;quot;] = &amp;quot;Abkhaz&amp;quot;,                                                          -- to match en.wiki article name&lt;br /&gt;
	[&amp;quot;ca-valencia&amp;quot;] = &amp;quot;Valencian&amp;quot;,&lt;br /&gt;
	[&amp;quot;cu&amp;quot;] = &amp;quot;Church Slavonic&amp;quot;,													-- 2nd IANA name;&lt;br /&gt;
	[&amp;quot;de-at&amp;quot;] = &amp;quot;Austrian German&amp;quot;,												-- these code-region and code-variant tags to match en.wiki article names&lt;br /&gt;
	[&amp;quot;de-ch&amp;quot;] = &amp;quot;Swiss Standard German&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-au&amp;quot;] = &amp;quot;Australian English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-ca&amp;quot;] = &amp;quot;Canadian English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-emodeng&amp;quot;] = &amp;quot;Early Modern English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-gb&amp;quot;] = &amp;quot;British English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-ie&amp;quot;] = &amp;quot;Irish English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-in&amp;quot;] = &amp;quot;Indian English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-nz&amp;quot;] = &amp;quot;New Zealand English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-us&amp;quot;] = &amp;quot;American English&amp;quot;,&lt;br /&gt;
	[&amp;quot;en-za&amp;quot;] = &amp;quot;South African English&amp;quot;,&lt;br /&gt;
	[&amp;quot;fr-ca&amp;quot;] = &amp;quot;Quebec French&amp;quot;,&lt;br /&gt;
	[&amp;quot;fr-gallo&amp;quot;] = &amp;quot;Gallo&amp;quot;,&lt;br /&gt;
	[&amp;quot;fy&amp;quot;] = &amp;quot;West Frisian&amp;quot;,													-- Western Frisian&lt;br /&gt;
	[&amp;quot;mo&amp;quot;] = &amp;quot;Moldovan&amp;quot;,														-- Moldavian (deprecated code); to match en.wiki article title&lt;br /&gt;
	[&amp;quot;nl-be&amp;quot;] = &amp;quot;Flemish&amp;quot;,														-- match MediaWiki&lt;br /&gt;
	[&amp;quot;oc-gascon&amp;quot;] = &amp;quot;Gascon&amp;quot;,&lt;br /&gt;
	[&amp;quot;oc-provenc&amp;quot;] = &amp;quot;Provençal&amp;quot;,&lt;br /&gt;
	[&amp;quot;ps&amp;quot;] = &amp;quot;Pashto&amp;quot;,															-- Pushto&lt;br /&gt;
	[&amp;quot;pt-br&amp;quot;] = &amp;quot;Brazilian Portuguese&amp;quot;,											-- match MediaWiki&lt;br /&gt;
	[&amp;quot;ro-md&amp;quot;] = &amp;quot;Moldovan&amp;quot;,														-- &#039;not deprecated&#039; form&lt;br /&gt;
	[&amp;quot;ro-cyrl-md&amp;quot;] = &amp;quot;Moldovan&amp;quot;,												-- &#039;not deprecated&#039; form&lt;br /&gt;
	[&amp;quot;tw-asante&amp;quot;] = &amp;quot;Asante Twi&amp;quot;,&lt;br /&gt;
	[&amp;quot;ug&amp;quot;] = &amp;quot;Uyghur&amp;quot;,															-- 2nd IANA name; to match en.wiki article name&lt;br /&gt;
&lt;br /&gt;
-- these ISO 639-1 language-name overrides imported from Module:Language/data/wp_languages (since deleted)&lt;br /&gt;
--&amp;lt;begin do-not-edit except to comment out&amp;gt;--&lt;br /&gt;
		[&amp;quot;av&amp;quot;] = &amp;quot;Avar&amp;quot;,														-- Avaric&lt;br /&gt;
		[&amp;quot;bo&amp;quot;] = &amp;quot;Standard Tibetan&amp;quot;,											-- Tibetan&lt;br /&gt;
		[&amp;quot;el&amp;quot;] = &amp;quot;Greek&amp;quot;,														-- Modern Greek&lt;br /&gt;
--		[&amp;quot;en-SA&amp;quot;] = &amp;quot;South African English&amp;quot;,									-- English; no; SA is not South Africa it Saudi Arabia; ZA is South Africa&lt;br /&gt;
		[&amp;quot;ff&amp;quot;] = &amp;quot;Fula&amp;quot;,														-- Fulah&lt;br /&gt;
		[&amp;quot;ht&amp;quot;] = &amp;quot;Haitian Creole&amp;quot;,												-- Haitian&lt;br /&gt;
		[&amp;quot;hz&amp;quot;] = &amp;quot;Otjiherero&amp;quot;,													-- Herero&lt;br /&gt;
		[&amp;quot;ii&amp;quot;] = &amp;quot;Yi&amp;quot;,															-- Sichuan Yi&lt;br /&gt;
		[&amp;quot;ki&amp;quot;] = &amp;quot;Gikuyu&amp;quot;,														-- Kikuyu&lt;br /&gt;
		[&amp;quot;kl&amp;quot;] = &amp;quot;Greenlandic&amp;quot;,													-- Kalaallisut&lt;br /&gt;
		[&amp;quot;ky&amp;quot;] = &amp;quot;Kyrgyz&amp;quot;,														-- Kirghiz&lt;br /&gt;
		[&amp;quot;lg&amp;quot;] = &amp;quot;Luganda&amp;quot;,														-- Ganda&lt;br /&gt;
		[&amp;quot;li&amp;quot;] = &amp;quot;Limburgish&amp;quot;,													-- Limburgan&lt;br /&gt;
		[&amp;quot;mi&amp;quot;] = &amp;quot;Māori&amp;quot;,														-- Maori&lt;br /&gt;
		[&amp;quot;na&amp;quot;] = &amp;quot;Nauruan&amp;quot;,														-- Nauru&lt;br /&gt;
		[&amp;quot;nb&amp;quot;] = &amp;quot;Bokmål&amp;quot;,														-- Norwegian Bokmål&lt;br /&gt;
		[&amp;quot;nd&amp;quot;] = &amp;quot;Northern Ndebele&amp;quot;,											-- North Ndebele&lt;br /&gt;
		[&amp;quot;nn&amp;quot;] = &amp;quot;Nynorsk&amp;quot;,														-- Norwegian Nynorsk&lt;br /&gt;
		[&amp;quot;nr&amp;quot;] = &amp;quot;Southern Ndebele&amp;quot;,											-- South Ndebele&lt;br /&gt;
		[&amp;quot;ny&amp;quot;] = &amp;quot;Chichewa&amp;quot;,													-- Nyanja&lt;br /&gt;
		[&amp;quot;oj&amp;quot;] = &amp;quot;Ojibwe&amp;quot;,														-- Ojibwa&lt;br /&gt;
		[&amp;quot;or&amp;quot;] = &amp;quot;Odia&amp;quot;,														-- Oriya&lt;br /&gt;
		[&amp;quot;pa&amp;quot;] = &amp;quot;Punjabi&amp;quot;,														-- Panjabi&lt;br /&gt;
		[&amp;quot;rn&amp;quot;] = &amp;quot;Kirundi&amp;quot;,														-- Rundi&lt;br /&gt;
		[&amp;quot;sl&amp;quot;] = &amp;quot;Slovene&amp;quot;,														-- Slovenian&lt;br /&gt;
		[&amp;quot;ss&amp;quot;] = &amp;quot;Swazi&amp;quot;,														-- Swati&lt;br /&gt;
		[&amp;quot;st&amp;quot;] = &amp;quot;Sotho&amp;quot;,														-- Southern Sotho&lt;br /&gt;
		[&amp;quot;to&amp;quot;] = &amp;quot;Tongan&amp;quot;,														-- Tonga&lt;br /&gt;
--&amp;lt;end do-not-edit except to comment out&amp;gt;--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------&amp;lt; I S O _ 6 3 9 - 2,   - 3,   - 5 &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;alv&amp;quot;] = &amp;quot;Atlantic–Congo languages&amp;quot;,										-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;arc&amp;quot;] = &amp;quot;Imperial Aramaic (700-300 BCE)&amp;quot;,									-- Official Aramaic (700-300 BCE), Imperial Aramaic (700-300 BCE); to match en.wiki article title uses ISO639-2 &#039;preferred&#039; name&lt;br /&gt;
	[&amp;quot;art&amp;quot;] = &amp;quot;constructed&amp;quot;,													-- to match en.wiki article; lowercase for category name&lt;br /&gt;
	[&amp;quot;ast-es&amp;quot;] = &amp;quot;Leonese&amp;quot;,														-- ast in IANA is Asturian; Leonese is a dialect&lt;br /&gt;
	[&amp;quot;bea&amp;quot;] = &amp;quot;Dane-zaa&amp;quot;,														-- Beaver; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;bhd&amp;quot;] = &amp;quot;Bhadarwahi&amp;quot;,														-- Bhadrawahi; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;bla&amp;quot;] = &amp;quot;Blackfoot&amp;quot;,														-- Siksika; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;blc&amp;quot;] = &amp;quot;Nuxalk&amp;quot;,															-- Bella Coola; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;bua&amp;quot;] = &amp;quot;Buryat&amp;quot;,															-- Buriat; this is a macro language; these four use wp preferred transliteration;&lt;br /&gt;
	[&amp;quot;bxm&amp;quot;] = &amp;quot;Mongolian Buryat&amp;quot;,												-- Mongolia Buriat; these three all redirect to Buryat&lt;br /&gt;
	[&amp;quot;bxr&amp;quot;] = &amp;quot;Russian Buryat&amp;quot;,													-- Russia Buriat;&lt;br /&gt;
	[&amp;quot;bxu&amp;quot;] = &amp;quot;Chinese Buryat&amp;quot;,													-- China Buriat;&lt;br /&gt;
	[&amp;quot;byr&amp;quot;] = &amp;quot;Yipma&amp;quot;,															-- Baruya, Yipma&lt;br /&gt;
	[&amp;quot;clm&amp;quot;] = &amp;quot;Klallam&amp;quot;,														-- Clallam; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;egy&amp;quot;] = &amp;quot;Ancient Egyptian&amp;quot;,												-- Egyptian (Ancient); distinguish from contemporary arz: Egyptian Arabic &lt;br /&gt;
	[&amp;quot;ems&amp;quot;] = &amp;quot;Alutiiq&amp;quot;,														-- Pacific Gulf Yupik; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;esx&amp;quot;] = &amp;quot;Eskimo–Aleut languages&amp;quot;,											-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;frr&amp;quot;] = &amp;quot;North Frisian&amp;quot;,													-- Northern Frisian&lt;br /&gt;
	[&amp;quot;frs&amp;quot;] = &amp;quot;East Frisian Low Saxon&amp;quot;,											-- Eastern Frisian&lt;br /&gt;
	[&amp;quot;gsw-fr&amp;quot;] = &amp;quot;Alsatian&amp;quot;,													-- match MediaWiki&lt;br /&gt;
	[&amp;quot;haa&amp;quot;] = &amp;quot;Hän&amp;quot;,															-- Han; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;hei&amp;quot;] = &amp;quot;Heiltsuk–Oowekyala&amp;quot;,												-- Heiltsuk; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;hmx&amp;quot;] = &amp;quot;Hmong–Mien languages&amp;quot;,											-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;ilo&amp;quot;] = &amp;quot;Ilocano&amp;quot;,														-- Iloko; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;jam&amp;quot;] = &amp;quot;Jamaican Patois&amp;quot;,												-- Jamaican Creole English&lt;br /&gt;
	[&amp;quot;lij-mc&amp;quot;] = &amp;quot;Monégasque&amp;quot;,													-- Ligurian as spoken in Monaco; this one for proper tool tip; also in &amp;lt;article_name&amp;gt; table&lt;br /&gt;
	[&amp;quot;luo&amp;quot;] = &amp;quot;Dholuo&amp;quot;,															-- IANA (primary) /ISO 639-3: Luo (Kenya and Tanzania); IANA (secondary): Dholuo&lt;br /&gt;
	[&amp;quot;mhr&amp;quot;] = &amp;quot;Meadow Mari&amp;quot;,													-- Eastern Mari&lt;br /&gt;
	[&amp;quot;mid&amp;quot;] = &amp;quot;Modern Mandaic&amp;quot;,													-- Mandaic&lt;br /&gt;
	[&#039;mis&#039;] = &amp;quot;uncoded&amp;quot;,														-- Uncoded languages; capitalization; special scope, not collective scope;&lt;br /&gt;
	[&amp;quot;mkh&amp;quot;] = &amp;quot;Mon–Khmer languages&amp;quot;,											-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;mla&amp;quot;] = &amp;quot;Tamambo&amp;quot;,														-- Malo&lt;br /&gt;
	[&#039;mte&#039;] = &amp;quot;Mono-Alu&amp;quot;,														-- Mono (Solomon Islands)&lt;br /&gt;
	[&#039;mul&#039;] = &amp;quot;multiple&amp;quot;,														-- Multiple languages; capitalization; special scope, not collective scope;&lt;br /&gt;
	[&amp;quot;nan-tw&amp;quot;] = &amp;quot;Taiwanese Hokkien&amp;quot;,											-- make room for IANA / 639-3 nan Min Nan Chinese; match en.wiki article title&lt;br /&gt;
	[&amp;quot;new&amp;quot;] = &amp;quot;Newar&amp;quot;,															-- Newari, Nepal Bhasa; to match en,wiki article title&lt;br /&gt;
	[&amp;quot;ngf&amp;quot;] = &amp;quot;Trans–New Guinea languages&amp;quot;,										-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;nic&amp;quot;] = &amp;quot;Niger–Congo languages&amp;quot;,											-- Niger-Kordofanian languages; to match en,wiki article title&lt;br /&gt;
	[&amp;quot;nrf&amp;quot;] = &amp;quot;Norman&amp;quot;,															-- not quite a collective - IANA name: Jèrriais + Guernésiais; categorizes to Norman-language text&lt;br /&gt;
	[&amp;quot;nrf-gg&amp;quot;] = &amp;quot;Guernésiais&amp;quot;,													-- match MediaWiki&lt;br /&gt;
	[&amp;quot;nrf-je&amp;quot;] = &amp;quot;Jèrriais&amp;quot;,													-- match MediaWiki&lt;br /&gt;
	[&amp;quot;nzi&amp;quot;] = &amp;quot;Nzema&amp;quot;,															-- Nzima; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;oma&amp;quot;] = &amp;quot;Omaha–Ponca&amp;quot;,													-- to match en.wiki article title (endash)&lt;br /&gt;
	[&amp;quot;orv&amp;quot;] = &amp;quot;Old East Slavic&amp;quot;,												-- Old Russian&lt;br /&gt;
	[&amp;quot;pfl&amp;quot;] = &amp;quot;Palatine German&amp;quot;,												-- Pfaelzisch; to match en.wiki article&lt;br /&gt;
	[&amp;quot;pie&amp;quot;] = &amp;quot;Piro Pueblo&amp;quot;,													-- Piro; to match en.wiki article&lt;br /&gt;
	[&amp;quot;pms&amp;quot;] = &amp;quot;Piedmontese&amp;quot;,													-- Piemontese; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;pnb&amp;quot;] = &amp;quot;Punjabi (Western)&amp;quot;,												-- Western Panjabi; dab added to override import from ~/wp languages and distinguish pnb from pa in reverse look up tag_from_name()&lt;br /&gt;
	[&#039;qwm&#039;] = &amp;quot;Cuman&amp;quot;,															-- Kuman (Russia); to match en.wiki article name&lt;br /&gt;
	[&amp;quot;rop&amp;quot;] = &amp;quot;Australian Kriol&amp;quot;,												-- Kriol; en.wiki article is a dab; point to correct en.wiki article&lt;br /&gt;
	[&amp;quot;sco-ulster&amp;quot;] = &amp;quot;Ulster Scots&amp;quot;,&lt;br /&gt;
	[&amp;quot;sdo&amp;quot;] = &amp;quot;Bukar–Sadong&amp;quot;,													-- Bukar-Sadung Bidayuh; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;smp&amp;quot;] = &amp;quot;Samaritan Hebrew&amp;quot;,												-- to match en.wiki article title&lt;br /&gt;
	[&amp;quot;stq&amp;quot;] = &amp;quot;Saterland Frisian&amp;quot;,												-- Saterfriesisch&lt;br /&gt;
	[&amp;quot;und&amp;quot;] = &amp;quot;undetermined&amp;quot;,													-- capitalization to match existing category&lt;br /&gt;
	[&amp;quot;wrg&amp;quot;] = &amp;quot;Warrongo&amp;quot;,														-- Warungu&lt;br /&gt;
	[&amp;quot;xal-ru&amp;quot;] = &amp;quot;Kalmyk&amp;quot;,														-- to match en.wiki article title&lt;br /&gt;
	[&amp;quot;xgf&amp;quot;] = &amp;quot;Tongva&amp;quot;,															-- ISO 639-3 is Gabrielino-Fernandeño&lt;br /&gt;
	[&amp;quot;yuf&amp;quot;] = &amp;quot;Havasupai–Hualapai&amp;quot;,												-- Havasupai-Walapai-Yavapai; to match en.wiki article title&lt;br /&gt;
	[&amp;quot;zxx&amp;quot;] = &amp;quot;no linguistic content&amp;quot;,											-- capitalization&lt;br /&gt;
&lt;br /&gt;
-- these ISO 639-2, -3 language-name overrides imported from Module:Language/data/wp_languages (since deleted)&lt;br /&gt;
--&amp;lt;begin do-not-edit except to comment out&amp;gt;--&lt;br /&gt;
		[&amp;quot;ace&amp;quot;] = &amp;quot;Acehnese&amp;quot;,													-- Achinese&lt;br /&gt;
		[&amp;quot;aec&amp;quot;] = &amp;quot;Sa&#039;idi Arabic&amp;quot;,												-- Saidi Arabic&lt;br /&gt;
		[&amp;quot;akl&amp;quot;] = &amp;quot;Aklan&amp;quot;,														-- Aklanon&lt;br /&gt;
		[&amp;quot;alt&amp;quot;] = &amp;quot;Altay&amp;quot;,														-- Southern Altai&lt;br /&gt;
		[&amp;quot;apm&amp;quot;] = &amp;quot;Mescalero-Chiricahua&amp;quot;,										-- Mescalero-Chiricahua Apache&lt;br /&gt;
		[&amp;quot;bal&amp;quot;] = &amp;quot;Balochi&amp;quot;,													-- Baluchi&lt;br /&gt;
--		[&amp;quot;bcl&amp;quot;] = &amp;quot;Central Bicolano&amp;quot;,											-- Central Bikol&lt;br /&gt;
		[&amp;quot;bin&amp;quot;] = &amp;quot;Edo&amp;quot;,														-- Bini&lt;br /&gt;
		[&amp;quot;bpy&amp;quot;] = &amp;quot;Bishnupriya Manipuri&amp;quot;,										-- Bishnupriya&lt;br /&gt;
		[&amp;quot;chg&amp;quot;] = &amp;quot;Chagatay&amp;quot;,													-- Chagatai&lt;br /&gt;
		[&amp;quot;ckb&amp;quot;] = &amp;quot;Sorani Kurdish&amp;quot;,												-- Central Kurdish&lt;br /&gt;
		[&amp;quot;cnu&amp;quot;] = &amp;quot;Shenwa&amp;quot;,														-- Chenoua&lt;br /&gt;
		[&amp;quot;coc&amp;quot;] = &amp;quot;Cocopah&amp;quot;,													-- Cocopa&lt;br /&gt;
		[&amp;quot;diq&amp;quot;] = &amp;quot;Zazaki&amp;quot;,														-- Dimli&lt;br /&gt;
		[&amp;quot;fit&amp;quot;] = &amp;quot;Meänkieli&amp;quot;,													-- Tornedalen Finnish&lt;br /&gt;
		[&amp;quot;fkv&amp;quot;] = &amp;quot;Kven&amp;quot;,														-- Kven Finnish&lt;br /&gt;
		[&amp;quot;frk&amp;quot;] = &amp;quot;Old Frankish&amp;quot;,												-- Frankish&lt;br /&gt;
		[&amp;quot;gez&amp;quot;] = &amp;quot;Ge&#039;ez&amp;quot;,														-- Geez&lt;br /&gt;
		[&amp;quot;gju&amp;quot;] = &amp;quot;Gujari&amp;quot;,														-- Gujari&lt;br /&gt;
		[&amp;quot;gsw&amp;quot;] = &amp;quot;Alemannic German&amp;quot;,											-- Swiss German&lt;br /&gt;
		[&amp;quot;gul&amp;quot;] = &amp;quot;Gullah&amp;quot;,														-- Sea Island Creole English&lt;br /&gt;
		[&amp;quot;hak&amp;quot;] = &amp;quot;Hakka&amp;quot;,														-- Hakka Chinese&lt;br /&gt;
		[&amp;quot;hbo&amp;quot;] = &amp;quot;Biblical Hebrew&amp;quot;,											-- Ancient Hebrew&lt;br /&gt;
		[&amp;quot;hnd&amp;quot;] = &amp;quot;Hindko&amp;quot;,														-- Southern Hindko&lt;br /&gt;
--		[&amp;quot;ikt&amp;quot;] = &amp;quot;Inuvialuk&amp;quot;,													-- Inuinnaqtun&lt;br /&gt;
		[&amp;quot;kaa&amp;quot;] = &amp;quot;Karakalpak&amp;quot;,													-- Kara-Kalpak&lt;br /&gt;
		[&amp;quot;khb&amp;quot;] = &amp;quot;Tai Lü&amp;quot;,														-- Lü&lt;br /&gt;
		[&amp;quot;kmr&amp;quot;] = &amp;quot;Kurmanji Kurdish&amp;quot;,											-- Northern Kurdish&lt;br /&gt;
		[&amp;quot;kpo&amp;quot;] = &amp;quot;Kposo&amp;quot;,														-- Ikposo&lt;br /&gt;
		[&amp;quot;krj&amp;quot;] = &amp;quot;Kinaray-a&amp;quot;,													-- Kinaray-A&lt;br /&gt;
--		[&amp;quot;ktz&amp;quot;] = &amp;quot;Juǀ&#039;hoan&amp;quot;,													-- Juǀʼhoan&lt;br /&gt;
		[&amp;quot;lez&amp;quot;] = &amp;quot;Lezgian&amp;quot;,													-- Lezghian&lt;br /&gt;
		[&amp;quot;liv&amp;quot;] = &amp;quot;Livonian&amp;quot;,													-- Liv&lt;br /&gt;
		[&amp;quot;lng&amp;quot;] = &amp;quot;Lombardic&amp;quot;,													-- Langobardic&lt;br /&gt;
		[&amp;quot;mia&amp;quot;] = &amp;quot;Miami-Illinois&amp;quot;,												-- Miami&lt;br /&gt;
		[&amp;quot;miq&amp;quot;] = &amp;quot;Miskito&amp;quot;,													-- Mískito&lt;br /&gt;
		[&amp;quot;mix&amp;quot;] = &amp;quot;Mixtec&amp;quot;,														-- Mixtepec Mixtec&lt;br /&gt;
		[&amp;quot;mni&amp;quot;] = &amp;quot;Meitei&amp;quot;,														-- Manipuri&lt;br /&gt;
		[&amp;quot;mrj&amp;quot;] = &amp;quot;Hill Mari&amp;quot;,													-- Western Mari&lt;br /&gt;
		[&amp;quot;mww&amp;quot;] = &amp;quot;White Hmong&amp;quot;,												-- Hmong Daw&lt;br /&gt;
		[&amp;quot;nds-nl&amp;quot;] = &amp;quot;Dutch Low Saxon&amp;quot;,											-- Low German&lt;br /&gt;
--		[&amp;quot;new&amp;quot;] = &amp;quot;Nepal Bhasa&amp;quot;,												-- Newari&lt;br /&gt;
		[&amp;quot;nso&amp;quot;] = &amp;quot;Northern Sotho&amp;quot;,												-- Pedi&lt;br /&gt;
--		[&amp;quot;nwc&amp;quot;] = &amp;quot;Classical Nepal Bhasa&amp;quot;,										-- Classical Newari, Classical Nepal Bhasa, Old Newari&lt;br /&gt;
		[&amp;quot;ood&amp;quot;] = &amp;quot;O&#039;odham&amp;quot;,													-- Tohono O&#039;odham&lt;br /&gt;
		[&amp;quot;otk&amp;quot;] = &amp;quot;Old Turkic&amp;quot;,													-- Old Turkish&lt;br /&gt;
		[&amp;quot;pal&amp;quot;] = &amp;quot;Middle Persian&amp;quot;,												-- Pahlavi&lt;br /&gt;
		[&amp;quot;pam&amp;quot;] = &amp;quot;Kapampangan&amp;quot;,												-- Pampanga&lt;br /&gt;
		[&amp;quot;phr&amp;quot;] = &amp;quot;Potwari&amp;quot;,													-- Pahari-Potwari&lt;br /&gt;
		[&amp;quot;pka&amp;quot;] = &amp;quot;Jain Prakrit&amp;quot;,												-- Ardhamāgadhī Prākrit&lt;br /&gt;
--		[&amp;quot;pnb&amp;quot;] = &amp;quot;Punjabi&amp;quot;,													-- Western Panjabi&lt;br /&gt;
		[&amp;quot;psu&amp;quot;] = &amp;quot;Shauraseni&amp;quot;,													-- Sauraseni Prākrit&lt;br /&gt;
		[&amp;quot;rap&amp;quot;] = &amp;quot;Rapa Nui&amp;quot;,													-- Rapanui&lt;br /&gt;
		[&amp;quot;rar&amp;quot;] = &amp;quot;Cook Islands Māori&amp;quot;,											-- Rarotongan&lt;br /&gt;
		[&amp;quot;rmu&amp;quot;] = &amp;quot;Scandoromani&amp;quot;,												-- Tavringer Romani&lt;br /&gt;
		[&amp;quot;rom&amp;quot;] = &amp;quot;Romani&amp;quot;,														-- Romany&lt;br /&gt;
		[&amp;quot;rup&amp;quot;] = &amp;quot;Aromanian&amp;quot;,													-- Macedo-Romanian&lt;br /&gt;
		[&amp;quot;ryu&amp;quot;] = &amp;quot;Okinawan&amp;quot;,													-- Central Okinawan&lt;br /&gt;
		[&amp;quot;sdc&amp;quot;] = &amp;quot;Sassarese&amp;quot;,													-- Sassarese Sardinian&lt;br /&gt;
		[&amp;quot;sdn&amp;quot;] = &amp;quot;Gallurese&amp;quot;,													-- Gallurese Sardinian&lt;br /&gt;
		[&amp;quot;shp&amp;quot;] = &amp;quot;Shipibo&amp;quot;,													-- Shipibo-Conibo&lt;br /&gt;
		[&amp;quot;src&amp;quot;] = &amp;quot;Logudorese&amp;quot;,													-- Logudorese Sardinian&lt;br /&gt;
		[&amp;quot;sro&amp;quot;] = &amp;quot;Campidanese&amp;quot;,												-- Campidanese Sardinian&lt;br /&gt;
		[&amp;quot;tkl&amp;quot;] = &amp;quot;Tokelauan&amp;quot;,													-- Tokelau&lt;br /&gt;
		[&amp;quot;tvl&amp;quot;] = &amp;quot;Tuvaluan&amp;quot;,													-- Tuvalu&lt;br /&gt;
		[&amp;quot;tyv&amp;quot;] = &amp;quot;Tuvan&amp;quot;,														-- Tuvinian&lt;br /&gt;
		[&amp;quot;vls&amp;quot;] = &amp;quot;West Flemish&amp;quot;,												-- Vlaams&lt;br /&gt;
		[&amp;quot;wep&amp;quot;] = &amp;quot;Westphalian&amp;quot;,												-- Westphalien&lt;br /&gt;
		[&amp;quot;xal&amp;quot;] = &amp;quot;Oirat&amp;quot;,														-- Kalmyk&lt;br /&gt;
		[&amp;quot;xcl&amp;quot;] = &amp;quot;Old Armenian&amp;quot;,												-- Classical Armenian&lt;br /&gt;
		[&amp;quot;yua&amp;quot;] = &amp;quot;Yucatec Maya&amp;quot;,												-- Yucateco&lt;br /&gt;
--&amp;lt;end do-not-edit except to comment out&amp;gt;--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
------------------------------&amp;lt; P R I V A T E _ U S E _ T A G S &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
	[&amp;quot;akk-x-latbabyl&amp;quot;] = &amp;quot;Late Babylonian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-midassyr&amp;quot;] = &amp;quot;Middle Assyrian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-midbabyl&amp;quot;] = &amp;quot;Middle Babylonian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-neoassyr&amp;quot;] = &amp;quot;Neo-Assyrian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-neobabyl&amp;quot;] = &amp;quot;Neo-Babylonian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-old&amp;quot;] = &amp;quot;Old Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-oldassyr&amp;quot;] = &amp;quot;Old Assyrian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;akk-x-oldbabyl&amp;quot;] = &amp;quot;Old Babylonian Akkadian&amp;quot;,&lt;br /&gt;
	[&amp;quot;alg-x-proto&amp;quot;] = &amp;quot;Proto-Algonquian&amp;quot;,										-- alg in IANA is Algonquian languages&lt;br /&gt;
	[&amp;quot;ca-x-old&amp;quot;] = &amp;quot;Old Catalan&amp;quot;,&lt;br /&gt;
	[&amp;quot;cel-x-combrit&amp;quot;] = &amp;quot;Common Brittonic&amp;quot;,										-- cel in IANA is Celtic languages&lt;br /&gt;
	[&amp;quot;cel-x-proto&amp;quot;] = &amp;quot;Proto-Celtic&amp;quot;,&lt;br /&gt;
	[&amp;quot;egy-x-demotic&amp;quot;] = &amp;quot;Demotic Egyptian&amp;quot;,&lt;br /&gt;
	[&amp;quot;egy-x-late&amp;quot;] = &amp;quot;Late Egyptian&amp;quot;,&lt;br /&gt;
	[&amp;quot;egy-x-middle&amp;quot;] = &amp;quot;Middle Egyptian&amp;quot;,&lt;br /&gt;
	[&amp;quot;egy-x-old&amp;quot;] = &amp;quot;Old Egyptian&amp;quot;,&lt;br /&gt;
	[&amp;quot;gem-x-proto&amp;quot;] = &amp;quot;Proto-Germanic&amp;quot;,											-- gem in IANA is Germanic languages&lt;br /&gt;
	[&amp;quot;gmw-x-ecg&amp;quot;] = &amp;quot;East Central German&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-aeolic&amp;quot;] = &amp;quot;Aeolic Greek&amp;quot;,											-- these grc-x-... codes are preferred alternates to the non-standard catchall code grc-gre&lt;br /&gt;
	[&amp;quot;grc-x-attic&amp;quot;] = &amp;quot;Attic Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-biblical&amp;quot;] = &amp;quot;Biblical Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-byzant&amp;quot;] = &amp;quot;Byzantine Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-classic&amp;quot;] = &amp;quot;Classical Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-doric&amp;quot;] = &amp;quot;Doric Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-hellen&amp;quot;] = &amp;quot;Hellenistic Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-ionic&amp;quot;] = &amp;quot;Ionic Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-koine&amp;quot;] = &amp;quot;Koinē Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-medieval&amp;quot;] = &amp;quot;Medieval Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grc-x-patris&amp;quot;] = &amp;quot;Patristic Greek&amp;quot;,&lt;br /&gt;
	[&amp;quot;grk-x-proto&amp;quot;] = &amp;quot;Proto-Greek&amp;quot;,											-- grk in IANA is Greek languages&lt;br /&gt;
	[&amp;quot;iir-x-proto&amp;quot;] = &amp;quot;Proto-Indo-Iranian&amp;quot;,										-- iir in IANA is Indo-Iranian Languages&lt;br /&gt;
	[&amp;quot;inc-x-mitanni&amp;quot;] = &amp;quot;Mitanni-Aryan&amp;quot;,										-- inc in IANA is Indic languages&lt;br /&gt;
	[&amp;quot;inc-x-proto&amp;quot;] = &amp;quot;Proto-Indo-Aryan&amp;quot;,&lt;br /&gt;
	[&amp;quot;ine-x-anatolia&amp;quot;] = &amp;quot;Anatolian languages&amp;quot;,&lt;br /&gt;
	[&amp;quot;ine-x-proto&amp;quot;] = &amp;quot;Proto-Indo-European&amp;quot;,&lt;br /&gt;
	[&amp;quot;ira-x-proto&amp;quot;] = &amp;quot;Proto-Iranian&amp;quot;,											-- ira in IANA is Iranian languages&lt;br /&gt;
	[&amp;quot;itc-x-proto&amp;quot;] = &amp;quot;Proto-Italic&amp;quot;,											-- itc in IANA is Italic languages&lt;br /&gt;
	[&amp;quot;ksh-x-colog&amp;quot;] = &amp;quot;Colognian&amp;quot;,												-- en.wiki article is Colognian; ksh (Kölsch) redirects there&lt;br /&gt;
	[&amp;quot;la-x-medieval&amp;quot;] = &amp;quot;Medieval Latin&amp;quot;,&lt;br /&gt;
	[&amp;quot;la-x-new&amp;quot;] = &amp;quot;New Latin&amp;quot;,&lt;br /&gt;
	[&amp;quot;lmo-x-berg&amp;quot;] = &amp;quot;Bergamasque&amp;quot;,												-- lmo in IANA is Lombard; Bergamasque is a dialect&lt;br /&gt;
	[&amp;quot;lmo-x-cremish&amp;quot;] = &amp;quot;Cremish&amp;quot;,												-- lmo in IANA is Lombard; Cremish is a dialect&lt;br /&gt;
	[&amp;quot;lmo-x-milanese&amp;quot;] = &amp;quot;Milanese&amp;quot;,											-- lmo in IANA is Lombard; Milanese is a dialect&lt;br /&gt;
	[&amp;quot;mis-x-ripuar&amp;quot;] = &amp;quot;Ripuarian&amp;quot;,												-- replaces improper use of ksh in wp_languages&lt;br /&gt;
	[&amp;quot;prg-x-old&amp;quot;] = &amp;quot;Old Prussian&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-ammonite&amp;quot;] = &amp;quot;Ammonite&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-aramaic&amp;quot;] = &amp;quot;Aramaic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-canaan&amp;quot;] = &amp;quot;Canaanite languages&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-dumaitic&amp;quot;] = &amp;quot;Dumaitic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-egurage&amp;quot;] = &amp;quot;Eastern Gurage&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-hatran&amp;quot;] = &amp;quot;Hatran Aramaic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-oldsoara&amp;quot;] = &amp;quot;Old South Arabian&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-palmyren&amp;quot;] = &amp;quot;Palmyrene Aramaic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-proto&amp;quot;] = &amp;quot;Proto-Semitic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sem-x-taymanit&amp;quot;] = &amp;quot;Taymanitic&amp;quot;,&lt;br /&gt;
	[&amp;quot;sla-x-proto&amp;quot;] = &amp;quot;Proto-Slavic&amp;quot;,											-- sla in IANA is Slavic languages&lt;br /&gt;
	[&amp;quot;yuf-x-hav&amp;quot;] = &amp;quot;Havasupai&amp;quot;,												-- IANA name for these three is Havasupai-Walapai-Yavapai&lt;br /&gt;
	[&amp;quot;yuf-x-wal&amp;quot;] = &amp;quot;Walapai&amp;quot;,&lt;br /&gt;
	[&amp;quot;yuf-x-yav&amp;quot;] = &amp;quot;Yavapai&amp;quot;,&lt;br /&gt;
	[&amp;quot;xsc-x-pontic&amp;quot;] = &amp;quot;Pontic Scythian&amp;quot;,										-- xsc in IANA is Scythian&lt;br /&gt;
	[&amp;quot;xsc-x-saka&amp;quot;] = &amp;quot;Saka&amp;quot;,&lt;br /&gt;
	[&amp;quot;xsc-x-sarmat&amp;quot;] = &amp;quot;Sarmatian&amp;quot;,&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R T I C L E _ L I N K &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
for those rare occasions when article titles don&#039;t fit with the normal &#039;&amp;lt;language name&amp;gt; language&#039;, this table&lt;br /&gt;
maps language code to article title. Use of this table should be avoided and the use of redirects preferred as&lt;br /&gt;
that is the long-standing method of handling article names that don&#039;t fit with the normal pattern&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local article_name = {&lt;br /&gt;
	[&#039;kue&#039;] = &amp;quot;Kuman language (New Guinea)&amp;quot;,									-- Kuman (Papua New Guinea); to avoid Kuman dab page&lt;br /&gt;
	[&amp;quot;lij-mc&amp;quot;] = &amp;quot;Monégasque dialect&amp;quot;,											-- Ligurian as spoken in Monaco&lt;br /&gt;
	[&#039;mbo&#039;] = &amp;quot;Mbo language (Cameroon)&amp;quot;,										-- Mbo (Cameroon)&lt;br /&gt;
	[&#039;mnh&#039;] = &amp;quot;Mono language (Congo)&amp;quot;,											-- Mono (Democratic Republic of Congo); see Template_talk:Lang#Mono_languages&lt;br /&gt;
	[&#039;mnr&#039;] = &amp;quot;Mono language (California)&amp;quot;,										-- Mono (USA)&lt;br /&gt;
	[&#039;mru&#039;] = &amp;quot;Mono language (Cameroon)&amp;quot;,										-- Mono (Cameroon)&lt;br /&gt;
	[&amp;quot;snq&amp;quot;] = &amp;quot;Sangu language (Gabon)&amp;quot;,											-- Sangu (Gabon)&lt;br /&gt;
	[&amp;quot;toi&amp;quot;] = &amp;quot;Tonga language (Zambia and Zimbabwe)&amp;quot;,                           -- Tonga (Zambia and Zimbabwe); to avoid Tonga language dab page&lt;br /&gt;
	[&amp;quot;vwa&amp;quot;] = &amp;quot;Awa language (China)&amp;quot;,											-- Awa (China); to avoid Awa dab page&lt;br /&gt;
	[&amp;quot;xlg&amp;quot;] = &amp;quot;Ligurian language (ancient)&amp;quot;,									-- see Template_talk:Lang#Ligurian_dab&lt;br /&gt;
	[&amp;quot;zmw&amp;quot;] = &amp;quot;Mbo language (Congo)&amp;quot;,											-- Mbo (Democratic Republic of Congo)&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; R T L _ S C R I P T S &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
ISO 15924 scripts that are written right-to-left. Data in this table taken from [[ISO 15924#List of codes]]&lt;br /&gt;
&lt;br /&gt;
last update to this list: 2017-12-24&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local rtl_scripts = {&lt;br /&gt;
	&#039;adlm&#039;, &#039;arab&#039;, &#039;aran&#039;, &#039;armi&#039;, &#039;avst&#039;, &#039;cprt&#039;, &#039;egyd&#039;, &#039;egyh&#039;, &#039;hatr&#039;, &#039;hebr&#039;,&lt;br /&gt;
	&#039;hung&#039;, &#039;inds&#039;, &#039;khar&#039;, &#039;lydi&#039;, &#039;mand&#039;, &#039;mani&#039;, &#039;mend&#039;, &#039;merc&#039;, &#039;mero&#039;, &#039;narb&#039;,&lt;br /&gt;
	&#039;nbat&#039;, &#039;nkoo&#039;, &#039;orkh&#039;, &#039;palm&#039;, &#039;phli&#039;, &#039;phlp&#039;, &#039;phlv&#039;, &#039;phnx&#039;, &#039;prti&#039;, &#039;rohg&#039;,&lt;br /&gt;
	&#039;samr&#039;, &#039;sarb&#039;, &#039;sogd&#039;, &#039;sogo&#039;, &#039;syrc&#039;, &#039;syre&#039;, &#039;syrj&#039;, &#039;syrn&#039;, &#039;thaa&#039;, &#039;wole&#039;,&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T R A N S L I T _ T I T L E S &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This is a table of tables of transliteration standards and the language codes or language scripts that apply to&lt;br /&gt;
those standards. This table is used to create the tool-tip text associated with the transliterated text displayed&lt;br /&gt;
by some of the {{lang-??}} templates.&lt;br /&gt;
&lt;br /&gt;
These tables are more-or-less copied directly from {{transl}}. The standard &#039;NO_STD&#039; is a construct to allow for&lt;br /&gt;
the cases when no |std= parameter value is provided.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local translit_title_table = {&lt;br /&gt;
	[&#039;ahl&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Academy of the Hebrew Language transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ala&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;American Library Association – Library of Congress transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ala-lc&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;American Library Association – Library of Congress transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;batr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Bikdash Arabic Transliteration Rules&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;bgn/pcgn&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Board on Geographic Names / Permanent Committee on Geographical Names transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;din&#039;] = {&lt;br /&gt;
		[&#039;ar&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;fa&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ku&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ps&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;tg&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ug&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;ur&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
		[&#039;arab&#039;] = &#039;DIN 31635 Arabic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;default&#039;] = &#039;DIN transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;eae&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Encyclopaedia Aethiopica transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;hepburn&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Hepburn transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;hunterian&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Hunterian transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;iast&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;International Alphabet of Sanskrit transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;iso&#039;] = {																	-- when a transliteration standard is supplied&lt;br /&gt;
		[&#039;ab&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;ba&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;be&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;bg&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;kk&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;ky&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;mn&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;ru&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;tg&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;uk&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;bua&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;sah&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;tut&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;xal&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
		[&#039;cyrl&#039;] = &#039;ISO 9 Cyrillic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ar&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ku&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ps&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ug&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;ur&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
		[&#039;arab&#039;] = &#039;ISO 233 Arabic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;he&#039;] = &#039;ISO 259 Hebrew&#039;,&lt;br /&gt;
		[&#039;yi&#039;] = &#039;ISO 259 Hebrew&#039;,&lt;br /&gt;
		[&#039;hebr&#039;] = &#039;ISO 259 Hebrew&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;el&#039;] = &#039;ISO 843 Greek&#039;,&lt;br /&gt;
		[&#039;grc&#039;] = &#039;ISO 843 Greek&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ja&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;hira&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;hrkt&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;jpan&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
		[&#039;kana&#039;] = &#039;ISO 3602 Japanese&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;zh&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;chi&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;cmn&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;zho&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
--		[&#039;han&#039;] = &#039;ISO 7098 Chinese&#039;,											-- unicode alias of Hani? doesn&#039;t belong here? should be Hani?&lt;br /&gt;
		[&#039;hans&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
		[&#039;hant&#039;] = &#039;ISO 7098 Chinese&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ka&#039;] = &#039;ISO 9984 Georgian&#039;,&lt;br /&gt;
		[&#039;kat&#039;] = &#039;ISO 9984 Georgian&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;arm&#039;] = &#039;ISO 9985 Armenian&#039;,&lt;br /&gt;
		[&#039;hy&#039;] = &#039;ISO 9985 Armenian&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;th&#039;] = &#039;ISO 11940 Thai&#039;,&lt;br /&gt;
		[&#039;tha&#039;] = &#039;ISO 11940 Thai&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;ko&#039;] = &#039;ISO 11941 Korean&#039;,&lt;br /&gt;
		[&#039;kor&#039;] = &#039;ISO 11941 Korean&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;awa&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;bho&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;bn&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;bra&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;doi&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;dra&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;gon&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;gu&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;hi&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;hno&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;inc&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;kn&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;kok&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ks&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mag&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mai&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ml&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mr&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ne&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;new&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;or&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;pa&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;pnb&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;raj&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sa&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sat&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sd&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;si&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;skr&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;ta&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;tcy&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;te&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;beng&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;brah&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;deva&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;gujr&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;guru&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;knda&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;mlym&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;orya&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;sinh&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;taml&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
		[&#039;telu&#039;] = &#039;ISO 15919 Indic&#039;,&lt;br /&gt;
&lt;br /&gt;
		[&#039;default&#039;] = &#039;ISO transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;jyutping&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Jyutping transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;mlcts&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Myanmar Language Commission Transcription System&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;mr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;McCune–Reischauer transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;nihon-shiki&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Nihon-shiki transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;no_std&#039;] = {																-- when no transliteration standard is supplied&lt;br /&gt;
		[&#039;akk&#039;] = &#039;Semitic transliteration&#039;,&lt;br /&gt;
		[&#039;sem&#039;] = &#039;Semitic transliteration&#039;,&lt;br /&gt;
		[&#039;phnx&#039;] = &#039;Semitic transliteration&#039;,&lt;br /&gt;
		[&#039;xsux&#039;] = &#039;Cuneiform transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;pinyin&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Pinyin transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;rr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Revised Romanization of Korean transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;rtgs&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Royal Thai General System of Transcription&#039;,&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
	[&#039;satts&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Standard Arabic Technical Transliteration System transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;scientific&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;scientific transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ukrainian&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Ukrainian National system of romanization&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;ungegn&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;United Nations Group of Experts on Geographical Names transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;wadegile&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Wade–Giles transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;wehr&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Hans Wehr transliteration&#039;,&lt;br /&gt;
		},&lt;br /&gt;
	[&#039;yaleko&#039;] = {&lt;br /&gt;
		[&#039;default&#039;] = &#039;Yale romanization of Korean&#039;,&lt;br /&gt;
	}&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E N G _ V A R &amp;gt;----------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Used at en.wiki so that spelling of &#039;romanized&#039; (US, default) can be changed to &#039;romanised&#039; to match the envar&lt;br /&gt;
specified by a {{Use xxx English}}.&lt;br /&gt;
&lt;br /&gt;
This is accomplished by setting |engvar=gb; can, should be omitted in articles that use American English; no&lt;br /&gt;
need for the clutter.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local engvar_sel_t = {															-- select either UK English or US English&lt;br /&gt;
	[&#039;au&#039;] = &#039;gb_t&#039;,															-- these match IANA region codes (except in lower case)&lt;br /&gt;
	[&#039;ca&#039;] = &#039;us_t&#039;,&lt;br /&gt;
	[&#039;gb&#039;] = &#039;gb_t&#039;,&lt;br /&gt;
	[&#039;ie&#039;] = &#039;gb_t&#039;,&lt;br /&gt;
	[&#039;in&#039;] = &#039;gb_t&#039;,&lt;br /&gt;
	[&#039;nz&#039;] = &#039;gb_t&#039;,&lt;br /&gt;
	[&#039;us&#039;] = &#039;us_t&#039;,															-- default engvar&lt;br /&gt;
	[&#039;za&#039;] = &#039;gb_t&#039;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
local engvar_t = {&lt;br /&gt;
	[&#039;gb_t&#039;] = {&lt;br /&gt;
		[&#039;romanisz_lc&#039;] = &#039;romanisation&#039;,										-- lower case&lt;br /&gt;
		[&#039;romanisz_uc&#039;] = &#039;Romanisation&#039;,										-- upper case&lt;br /&gt;
		[&#039;romanisz_pt&#039;] = &#039;romanised&#039;,											-- past tense&lt;br /&gt;
		},&lt;br /&gt;
	[&#039;us_t&#039;] = {																-- default engvar&lt;br /&gt;
		[&#039;romanisz_lc&#039;] = &#039;romanization&#039;,										-- lower case&lt;br /&gt;
		[&#039;romanisz_uc&#039;] = &#039;Romanization&#039;,										-- upper case&lt;br /&gt;
		[&#039;romanisz_pt&#039;] = &#039;romanized&#039;,											-- past tense&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T S &amp;gt;----------------------------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
	{&lt;br /&gt;
	this_wiki_lang_tag = this_wiki_lang_tag,&lt;br /&gt;
	this_wiki_lang_dir = lang_obj:getDir(),										-- wiki&#039;s language direction&lt;br /&gt;
	&lt;br /&gt;
	article_name = article_name,&lt;br /&gt;
	engvar_t = engvar_t,&lt;br /&gt;
	engvar_sel_t = engvar_sel_t,&lt;br /&gt;
	lang_name_table = lang_name_table_t,&lt;br /&gt;
	override = override,&lt;br /&gt;
	rtl_scripts = rtl_scripts,&lt;br /&gt;
	special_tags_table = special_tags_table,&lt;br /&gt;
	translit_title_table = translit_title_table,&lt;br /&gt;
	};&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Module:Unicode_data&amp;diff=13</id>
		<title>Module:Unicode data</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Module:Unicode_data&amp;diff=13"/>
		<updated>2024-11-24T04:12:23Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local floor = math.floor&lt;br /&gt;
&lt;br /&gt;
local function errorf(level, ...)&lt;br /&gt;
	if type(level) == &amp;quot;number&amp;quot; then&lt;br /&gt;
		return error(string.format(...), level + 1)&lt;br /&gt;
	else -- level is actually the format string.&lt;br /&gt;
		return error(string.format(level, ...), 2)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function binary_range_search(codepoint, ranges)&lt;br /&gt;
	local low, mid, high&lt;br /&gt;
	low, high = 1, ranges.length or require &amp;quot;Module:TableTools&amp;quot;.length(ranges)&lt;br /&gt;
	while low &amp;lt;= high do&lt;br /&gt;
		mid = floor((low + high) / 2)&lt;br /&gt;
		local range = ranges[mid]&lt;br /&gt;
		if codepoint &amp;lt; range[1] then&lt;br /&gt;
			high = mid - 1&lt;br /&gt;
		elseif codepoint &amp;lt;= range[2] then&lt;br /&gt;
			return range, mid&lt;br /&gt;
		else&lt;br /&gt;
			low = mid + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return nil, mid&lt;br /&gt;
end&lt;br /&gt;
p.binary_range_search = binary_range_search&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
local function linear_range_search(codepoint, ranges)&lt;br /&gt;
	for i, range in ipairs(ranges) do&lt;br /&gt;
		if range[1] &amp;lt;= codepoint and codepoint &amp;lt;= range[2] then&lt;br /&gt;
			return range&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
-- Load a module by indexing &amp;quot;loader&amp;quot; with the name of the module minus the&lt;br /&gt;
-- &amp;quot;Module:Unicode data/&amp;quot; part. For instance, loader.blocks returns&lt;br /&gt;
-- [[Module:Unicode data/blocks]]. If a module cannot be loaded, false will be&lt;br /&gt;
-- returned.&lt;br /&gt;
local loader = setmetatable({}, {&lt;br /&gt;
	__index = function (self, key)&lt;br /&gt;
		local success, data = pcall(mw.loadData, &amp;quot;Module:Unicode data/&amp;quot; .. key)&lt;br /&gt;
		if not success then&lt;br /&gt;
			data = false&lt;br /&gt;
		end&lt;br /&gt;
		self[key] = data&lt;br /&gt;
		return data&lt;br /&gt;
	end&lt;br /&gt;
})&lt;br /&gt;
&lt;br /&gt;
-- For the algorithm used to generate Hangul Syllable names,&lt;br /&gt;
-- see &amp;quot;Hangul Syllable Name Generation&amp;quot; in section 3.12 of the&lt;br /&gt;
-- Unicode Specification:&lt;br /&gt;
-- https://www.unicode.org/versions/Unicode11.0.0/ch03.pdf&lt;br /&gt;
local name_hooks = {&lt;br /&gt;
	{     0x00,     0x1F, &amp;quot;&amp;lt;control-%04X&amp;gt;&amp;quot; }, -- C0 control characters&lt;br /&gt;
	{     0x7F,     0x9F, &amp;quot;&amp;lt;control-%04X&amp;gt;&amp;quot; }, -- DEL and C1 control characters&lt;br /&gt;
	{   0x3400,   0x4DBF, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension A&lt;br /&gt;
	{   0x4E00,   0x9FFF, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph&lt;br /&gt;
	{   0xAC00,   0xD7A3, function (codepoint) -- Hangul Syllables&lt;br /&gt;
		local Hangul_data = loader.Hangul&lt;br /&gt;
		local syllable_index = codepoint - 0xAC00&lt;br /&gt;
&lt;br /&gt;
		return (&amp;quot;HANGUL SYLLABLE %s%s%s&amp;quot;):format(&lt;br /&gt;
			Hangul_data.leads[floor(syllable_index / Hangul_data.final_count)],&lt;br /&gt;
			Hangul_data.vowels[floor((syllable_index % Hangul_data.final_count)&lt;br /&gt;
				/ Hangul_data.trail_count)],&lt;br /&gt;
			Hangul_data.trails[syllable_index % Hangul_data.trail_count]&lt;br /&gt;
		)&lt;br /&gt;
	end },&lt;br /&gt;
	-- High Surrogates, High Private Use Surrogates, Low Surrogates&lt;br /&gt;
	{   0xD800,   0xDFFF, &amp;quot;&amp;lt;surrogate-%04X&amp;gt;&amp;quot; },&lt;br /&gt;
	{   0xE000,   0xF8FF, &amp;quot;&amp;lt;private-use-%04X&amp;gt;&amp;quot; }, -- Private Use&lt;br /&gt;
	-- CJK Compatibility Ideographs&lt;br /&gt;
	{   0xF900,   0xFA6D, &amp;quot;CJK COMPATIBILITY IDEOGRAPH-%04X&amp;quot; },&lt;br /&gt;
	{   0xFA70,   0xFAD9, &amp;quot;CJK COMPATIBILITY IDEOGRAPH-%04X&amp;quot; },&lt;br /&gt;
	{  0x17000,  0x187F7, &amp;quot;TANGUT IDEOGRAPH-%04X&amp;quot; }, -- Tangut Ideograph&lt;br /&gt;
	{  0x18800,  0x18AFF, function (codepoint)&lt;br /&gt;
		return (&amp;quot;TANGUT COMPONENT-%03d&amp;quot;):format(codepoint - 0x187FF)&lt;br /&gt;
	end },&lt;br /&gt;
	{  0x18D00,  0x18D08, &amp;quot;TANGUT IDEOGRAPH-%04X&amp;quot; }, -- Tangut Ideograph Supplement&lt;br /&gt;
	{  0x1B170,  0x1B2FB, &amp;quot;NUSHU CHARACTER-%04X&amp;quot; }, -- Nushu&lt;br /&gt;
	{  0x20000,  0x2A6DF, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension B&lt;br /&gt;
	{  0x2A700,  0x2B739, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension C&lt;br /&gt;
	{  0x2B740,  0x2B81D, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension D&lt;br /&gt;
	{  0x2B820,  0x2CEA1, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension E&lt;br /&gt;
	{  0x2CEB0,  0x2EBE0, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension F&lt;br /&gt;
	-- CJK Compatibility Ideographs Supplement (Supplementary Ideographic Plane)&lt;br /&gt;
	{  0x2F800,  0x2FA1D, &amp;quot;CJK COMPATIBILITY IDEOGRAPH-%04X&amp;quot; },&lt;br /&gt;
	{  0xE0100,  0xE01EF, function (codepoint) -- Variation Selectors Supplement&lt;br /&gt;
		return (&amp;quot;VARIATION SELECTOR-%d&amp;quot;):format(codepoint - 0xE0100 + 17)&lt;br /&gt;
	end},&lt;br /&gt;
	{  0x30000,  0x3134A, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension G&lt;br /&gt;
	{  0x31350,  0x323AF, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension H&lt;br /&gt;
	{  0x2EBF0,  0x2EE5D, &amp;quot;CJK UNIFIED IDEOGRAPH-%04X&amp;quot; }, -- CJK Ideograph Extension I&lt;br /&gt;
	{  0xF0000,  0xFFFFD, &amp;quot;&amp;lt;private-use-%04X&amp;gt;&amp;quot; }, -- Plane 15 Private Use&lt;br /&gt;
	{ 0x100000, 0x10FFFD, &amp;quot;&amp;lt;private-use-%04X&amp;gt;&amp;quot; }  -- Plane 16 Private Use&lt;br /&gt;
}&lt;br /&gt;
name_hooks.length = #name_hooks&lt;br /&gt;
&lt;br /&gt;
local name_range_cache&lt;br /&gt;
&lt;br /&gt;
local function generate_name(data, codepoint)&lt;br /&gt;
	if type(data) == &amp;quot;string&amp;quot; then&lt;br /&gt;
		return data:format(codepoint)&lt;br /&gt;
	else&lt;br /&gt;
		return data(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
-- Checks that the code point is a number and in range.&lt;br /&gt;
-- Does not check whether code point is an integer.&lt;br /&gt;
-- Not used&lt;br /&gt;
local function check_codepoint(funcName, argIdx, val)&lt;br /&gt;
	require &#039;libraryUtil&#039;.checkType(funcName, argIdx, val, &#039;number&#039;)&lt;br /&gt;
	if codepoint &amp;lt; 0 or 0x10FFFF &amp;lt; codepoint then&lt;br /&gt;
		errorf(&amp;quot;Codepoint %04X out of range&amp;quot;, codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
function p.is_noncharacter(codepoint)&lt;br /&gt;
	-- U+FDD0-U+FDEF and all code points ending in FFFE or FFFF are Unassigned&lt;br /&gt;
	-- (Cn) and specifically noncharacters:&lt;br /&gt;
&lt;br /&gt;
	-- https://www.unicode.org/faq/private_use.html#nonchar4&lt;br /&gt;
	return 0xFDD0 &amp;lt;= codepoint and (codepoint &amp;lt;= 0xFDEF&lt;br /&gt;
			or floor(codepoint % 0x10000) &amp;gt;= 0xFFFE)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- https://www.unicode.org/versions/Unicode11.0.0/ch04.pdf, section 4.8&lt;br /&gt;
function p.lookup_name(codepoint)&lt;br /&gt;
	if p.is_noncharacter(codepoint) then&lt;br /&gt;
		return (&amp;quot;&amp;lt;noncharacter-%04X&amp;gt;&amp;quot;):format(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if name_range_cache -- Check if previously used &amp;quot;name hook&amp;quot; applies to this code point.&lt;br /&gt;
			and codepoint &amp;gt;= name_range_cache[1]&lt;br /&gt;
			and codepoint &amp;lt;= name_range_cache[2] then&lt;br /&gt;
		return generate_name(name_range_cache[3], codepoint)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local range = binary_range_search(codepoint, name_hooks)&lt;br /&gt;
	if range then&lt;br /&gt;
		name_range_cache = range&lt;br /&gt;
		return generate_name(range[3], codepoint)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local data = loader[(&#039;names/%03X&#039;):format(codepoint / 0x1000)]&lt;br /&gt;
	&lt;br /&gt;
	if data and data[codepoint] then&lt;br /&gt;
		return data[codepoint]&lt;br /&gt;
	&lt;br /&gt;
	-- Unassigned (Cn) consists of noncharacters and reserved characters.&lt;br /&gt;
	-- The character has been established not to be a noncharacter,&lt;br /&gt;
	-- and if it were assigned, its name would already been retrieved,&lt;br /&gt;
	-- so it must be reserved.&lt;br /&gt;
	else&lt;br /&gt;
		return (&amp;quot;&amp;lt;reserved-%04X&amp;gt;&amp;quot;):format(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lookup_image(codepoint)&lt;br /&gt;
	local data = loader[(&#039;images/%03X&#039;):format(codepoint / 0x1000)]&lt;br /&gt;
	&lt;br /&gt;
	if data then&lt;br /&gt;
		return data[codepoint]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local planes = {&lt;br /&gt;
	[ 0] = &amp;quot;Basic Multilingual Plane&amp;quot;;&lt;br /&gt;
	[ 1] = &amp;quot;Supplementary Multilingual Plane&amp;quot;;&lt;br /&gt;
	[ 2] = &amp;quot;Supplementary Ideographic Plane&amp;quot;;&lt;br /&gt;
	[ 3] = &amp;quot;Tertiary Ideographic Plane&amp;quot;;&lt;br /&gt;
	[14] = &amp;quot;Supplementary Special-purpose Plane&amp;quot;;&lt;br /&gt;
	[15] = &amp;quot;Supplementary Private Use Area-A&amp;quot;;&lt;br /&gt;
	[16] = &amp;quot;Supplementary Private Use Area-B&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Load [[Module:Unicode data/blocks]] if needed and assign it to this variable.&lt;br /&gt;
local blocks&lt;br /&gt;
&lt;br /&gt;
local function block_iter(blocks, i)&lt;br /&gt;
	i = i + 1&lt;br /&gt;
	local data = blocks[i]&lt;br /&gt;
	if data then&lt;br /&gt;
		 -- Unpack doesn&#039;t work on tables loaded with mw.loadData.&lt;br /&gt;
		return i, data[1], data[2], data[3]&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- An ipairs-type iterator generator for the list of blocks.&lt;br /&gt;
function p.enum_blocks()&lt;br /&gt;
	local blocks = loader.blocks&lt;br /&gt;
	return block_iter, blocks, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lookup_plane(codepoint)&lt;br /&gt;
	local i = floor(codepoint / 0x10000)&lt;br /&gt;
	return planes[i] or (&amp;quot;Plane %u&amp;quot;):format(i)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.lookup_block(codepoint)&lt;br /&gt;
	local blocks = loader.blocks&lt;br /&gt;
	local range = binary_range_search(codepoint, blocks)&lt;br /&gt;
	if range then&lt;br /&gt;
		return range[3]&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;No Block&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.get_block_info(name)&lt;br /&gt;
	for i, block in ipairs(loader.blocks) do&lt;br /&gt;
		if block[3] == name then&lt;br /&gt;
			return block&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_valid_pagename(pagename)&lt;br /&gt;
	local has_nonws = false&lt;br /&gt;
&lt;br /&gt;
	for cp in mw.ustring.gcodepoint(pagename) do&lt;br /&gt;
		if (cp == 0x0023) -- #&lt;br /&gt;
		or (cp == 0x005B) -- [&lt;br /&gt;
		or (cp == 0x005D) -- ]&lt;br /&gt;
		or (cp == 0x007B) -- {&lt;br /&gt;
		or (cp == 0x007C) -- |&lt;br /&gt;
		or (cp == 0x007D) -- }&lt;br /&gt;
		or (cp == 0x180E) -- MONGOLIAN VOWEL SEPARATOR&lt;br /&gt;
		or ((cp &amp;gt;= 0x2000) and (cp &amp;lt;= 0x200A)) -- spaces in General Punctuation block&lt;br /&gt;
		or (cp == 0xFFFD) -- REPLACEMENT CHARACTER&lt;br /&gt;
		then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local printable, result = p.is_printable(cp)&lt;br /&gt;
		if not printable then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if result ~= &amp;quot;space-separator&amp;quot; then&lt;br /&gt;
			has_nonws = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return has_nonws&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function manual_unpack(what, from)&lt;br /&gt;
	if what[from + 1] == nil then&lt;br /&gt;
		return what[from]&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = {}&lt;br /&gt;
	from = from or 1&lt;br /&gt;
	for i, item in ipairs(what) do&lt;br /&gt;
		if i &amp;gt;= from then&lt;br /&gt;
			table.insert(result, item)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return unpack(result)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function compare_ranges(range1, range2)&lt;br /&gt;
	return range1[1] &amp;lt; range2[1]&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Creates a function to look up data in a module that contains &amp;quot;singles&amp;quot; (a&lt;br /&gt;
-- code point-to-data map) and &amp;quot;ranges&amp;quot; (an array containing arrays that contain&lt;br /&gt;
-- the low and high code points of a range and the data associated with that&lt;br /&gt;
-- range).&lt;br /&gt;
-- &amp;quot;loader&amp;quot; loads and returns the &amp;quot;singles&amp;quot; and &amp;quot;ranges&amp;quot; tables.&lt;br /&gt;
-- &amp;quot;match_func&amp;quot; is passed the code point and either the data or the &amp;quot;dots&amp;quot;, and&lt;br /&gt;
-- generates the final result of the function.&lt;br /&gt;
-- The varargs (&amp;quot;dots&amp;quot;) describes the default data to be returned if there wasn&#039;t&lt;br /&gt;
-- a match.&lt;br /&gt;
-- In case the function is used more than once, &amp;quot;cache&amp;quot; saves ranges that have&lt;br /&gt;
-- already been found to match, or a range whose data is the default if there&lt;br /&gt;
-- was no match.&lt;br /&gt;
local function memo_lookup(data_module_subpage, match_func, ...)&lt;br /&gt;
	local dots = { ... }&lt;br /&gt;
	local cache = {}&lt;br /&gt;
	local singles, ranges&lt;br /&gt;
&lt;br /&gt;
	return function (codepoint)&lt;br /&gt;
		if not singles then&lt;br /&gt;
			local data_module = loader[data_module_subpage]&lt;br /&gt;
			singles, ranges = data_module.singles, data_module.ranges&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if singles[codepoint] then&lt;br /&gt;
			return match_func(codepoint, singles[codepoint])&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		local range = binary_range_search(codepoint, cache)&lt;br /&gt;
		if range then&lt;br /&gt;
			return match_func(codepoint, manual_unpack(range, 3))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local range, index = binary_range_search(codepoint, ranges)&lt;br /&gt;
		if range then&lt;br /&gt;
			table.insert(cache, range)&lt;br /&gt;
			table.sort(cache, compare_ranges)&lt;br /&gt;
			return match_func(codepoint, manual_unpack(range, 3))&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if ranges[index] then&lt;br /&gt;
			local dots_range&lt;br /&gt;
			if codepoint &amp;gt; ranges[index][2] then&lt;br /&gt;
				dots_range = {&lt;br /&gt;
					ranges[index][2] + 1,&lt;br /&gt;
					ranges[index + 1] and ranges[index + 1][1] - 1 or 0x10FFFF,&lt;br /&gt;
					unpack(dots)&lt;br /&gt;
				}&lt;br /&gt;
			else -- codepoint &amp;lt; range[index][1]&lt;br /&gt;
				dots_range = {&lt;br /&gt;
					ranges[index - 1] and ranges[index - 1][2] + 1 or 0,&lt;br /&gt;
					ranges[index][1] - 1,&lt;br /&gt;
					unpack(dots)&lt;br /&gt;
				}&lt;br /&gt;
			end&lt;br /&gt;
			table.sort(cache, compare_ranges)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		return match_func(codepoint)&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Get a code point&#039;s combining class value in [[Module:Unicode data/combining]],&lt;br /&gt;
-- and return whether this value is not zero. Zero is assigned as the default&lt;br /&gt;
-- if the combining class value is not found in this data module.&lt;br /&gt;
-- That is, return true if character is combining, or false if it is not.&lt;br /&gt;
-- See https://www.unicode.org/reports/tr44/#Canonical_Combining_Class_Values for&lt;br /&gt;
-- more information.&lt;br /&gt;
p.is_combining = memo_lookup(&lt;br /&gt;
	&amp;quot;combining&amp;quot;,&lt;br /&gt;
	function (codepoint, combining_class)&lt;br /&gt;
		return combining_class and combining_class ~= 0 or false&lt;br /&gt;
	end,&lt;br /&gt;
	0)&lt;br /&gt;
&lt;br /&gt;
function p.add_dotted_circle(str)&lt;br /&gt;
	return (mw.ustring.gsub(str, &amp;quot;.&amp;quot;,&lt;br /&gt;
		function(char)&lt;br /&gt;
			if p.is_combining(mw.ustring.codepoint(char)) then&lt;br /&gt;
				return &#039;◌&#039; .. char&lt;br /&gt;
			end&lt;br /&gt;
		end))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local lookup_control = memo_lookup(&lt;br /&gt;
	&amp;quot;control&amp;quot;,&lt;br /&gt;
	function (codepoint, ccc)&lt;br /&gt;
		return ccc or &amp;quot;assigned&amp;quot;&lt;br /&gt;
	end,&lt;br /&gt;
	&amp;quot;assigned&amp;quot;)&lt;br /&gt;
p.lookup_control = lookup_control&lt;br /&gt;
&lt;br /&gt;
function p.is_assigned(codepoint)&lt;br /&gt;
	return lookup_control(codepoint) ~= &amp;quot;unassigned&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_printable(codepoint)&lt;br /&gt;
	local result = lookup_control(codepoint)&lt;br /&gt;
	return (result == &amp;quot;assigned&amp;quot;) or (result == &amp;quot;space-separator&amp;quot;), result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_whitespace(codepoint)&lt;br /&gt;
	local result = lookup_control(codepoint)&lt;br /&gt;
	return (result == &amp;quot;space-separator&amp;quot;), result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.lookup_category = memo_lookup(&lt;br /&gt;
	&amp;quot;category&amp;quot;,&lt;br /&gt;
	function (codepoint, category)&lt;br /&gt;
		return category&lt;br /&gt;
	end,&lt;br /&gt;
	&amp;quot;Cn&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
local lookup_script = memo_lookup(&lt;br /&gt;
	&amp;quot;scripts&amp;quot;,&lt;br /&gt;
	function (codepoint, script_code)&lt;br /&gt;
		return script_code or &#039;Zzzz&#039;&lt;br /&gt;
	end,&lt;br /&gt;
	&amp;quot;Zzzz&amp;quot;)&lt;br /&gt;
p.lookup_script = lookup_script&lt;br /&gt;
&lt;br /&gt;
function p.get_best_script(str)&lt;br /&gt;
	-- Check type of argument, because mw.text.decode coerces numbers to strings!&lt;br /&gt;
	require &amp;quot;libraryUtil&amp;quot;.checkType(&amp;quot;get_best_script&amp;quot;, 1, str, &amp;quot;string&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- Convert HTML character references (including named character references,&lt;br /&gt;
	-- or character entities) to characters.&lt;br /&gt;
	str = mw.text.decode(str, true)&lt;br /&gt;
	&lt;br /&gt;
	local scripts = {}&lt;br /&gt;
	for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
		local script = lookup_script(codepoint)&lt;br /&gt;
		&lt;br /&gt;
		-- Ignore &amp;quot;Inherited&amp;quot;, &amp;quot;Undetermined&amp;quot;, or &amp;quot;Uncoded&amp;quot; scripts.&lt;br /&gt;
		if not (script == &amp;quot;Zyyy&amp;quot; or script == &amp;quot;Zinh&amp;quot; or script == &amp;quot;Zzzz&amp;quot;) then&lt;br /&gt;
			scripts[script] = true&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- If scripts does not contain two or more keys,&lt;br /&gt;
	-- return first and only key (script code) in table.&lt;br /&gt;
	if not next(scripts, next(scripts)) then&lt;br /&gt;
		return next(scripts)&lt;br /&gt;
	end -- else return majority script, or else &amp;quot;Zzzz&amp;quot;?&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is_Latin(str)&lt;br /&gt;
	require &amp;quot;libraryUtil&amp;quot;.checkType(&amp;quot;get_best_script&amp;quot;, 1, str, &amp;quot;string&amp;quot;)&lt;br /&gt;
	str = mw.text.decode(str, true)&lt;br /&gt;
	&lt;br /&gt;
	-- Search for the leading bytes that introduce the UTF-8 encoding of the&lt;br /&gt;
	-- code points U+0340-U+10FFFF. If they are not found and there is at least&lt;br /&gt;
	-- one Latin-script character, the string counts as Latin, because the rest&lt;br /&gt;
	-- of the characters can only be Zyyy, Zinh, and Zzzz.&lt;br /&gt;
	-- The only scripts found below U+0370 (the first code point of the Greek&lt;br /&gt;
	-- and Coptic block) are Latn, Zyyy, Zinh, and Zzzz.&lt;br /&gt;
	-- See the codepage in the [[UTF-8]] article.&lt;br /&gt;
	if not str:find &amp;quot;[\205-\244]&amp;quot; then&lt;br /&gt;
		for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
			if lookup_script(codepoint) == &amp;quot;Latn&amp;quot; then&lt;br /&gt;
				return true&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local Latn = false&lt;br /&gt;
	&lt;br /&gt;
	for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
		local script = lookup_script(codepoint)&lt;br /&gt;
		&lt;br /&gt;
		if script == &amp;quot;Latn&amp;quot; then&lt;br /&gt;
			Latn = true&lt;br /&gt;
		elseif not (script == &amp;quot;Zyyy&amp;quot; or script == &amp;quot;Zinh&amp;quot;&lt;br /&gt;
				or script == &amp;quot;Zzzz&amp;quot;) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return Latn&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Checks that a string contains only characters belonging to right-to-left&lt;br /&gt;
-- scripts, or characters of ignorable scripts.&lt;br /&gt;
function p.is_rtl(str)&lt;br /&gt;
	require &amp;quot;libraryUtil&amp;quot;.checkType(&amp;quot;get_best_script&amp;quot;, 1, str, &amp;quot;string&amp;quot;)&lt;br /&gt;
	str = mw.text.decode(str, true)&lt;br /&gt;
	&lt;br /&gt;
	-- Search for the leading bytes that introduce the UTF-8 encoding of the&lt;br /&gt;
	-- code points U+0580-U+10FFFF. If they are not found, the string can only&lt;br /&gt;
	-- have characters from a left-to-right script, because the first code point&lt;br /&gt;
	-- in a right-to-left script is U+0591, in the Hebrew block.&lt;br /&gt;
	if not str:find &amp;quot;[\214-\244]&amp;quot; then&lt;br /&gt;
		return false&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = false&lt;br /&gt;
	local rtl = loader.scripts.rtl&lt;br /&gt;
	for codepoint in mw.ustring.gcodepoint(str) do&lt;br /&gt;
		local script = lookup_script(codepoint)&lt;br /&gt;
		&lt;br /&gt;
		if rtl[script] then&lt;br /&gt;
			result = true&lt;br /&gt;
		elseif not (script == &amp;quot;Zyyy&amp;quot; or script == &amp;quot;Zinh&amp;quot;&lt;br /&gt;
				or script == &amp;quot;Zzzz&amp;quot;) then&lt;br /&gt;
			return false&lt;br /&gt;
		end&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;
--[[--------------------------&amp;lt; I S _ R T L _ F R A M E &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
external entry from an {{#invoke:}} to determine if a string of text is rtl.  Strips html and html-like tags so&lt;br /&gt;
that those tags don&#039;t corrupt the is-rtl-is-not-rtl determination; this added for the cases where the rtl text&lt;br /&gt;
has &amp;lt;br /&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function p.is_rtl_frame (frame)&lt;br /&gt;
	local str = frame.args[1];													-- get the string from the {{#invoke:}} frame&lt;br /&gt;
	str = str:gsub (&#039;%b&amp;lt;&amp;gt;&#039;, &#039;&#039;);												-- strip any html and html-like tags&lt;br /&gt;
	return p.is_rtl (str);														-- return if whatever remains rtl; false else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local function get_codepoint(args, arg)&lt;br /&gt;
	local codepoint_string = args[arg]&lt;br /&gt;
		or errorf(2, &amp;quot;Parameter %s is required&amp;quot;, tostring(arg))&lt;br /&gt;
	local codepoint = tonumber(codepoint_string, 16)&lt;br /&gt;
		or errorf(2, &amp;quot;Parameter %s is not a code point in hexadecimal base&amp;quot;,&lt;br /&gt;
			tostring(arg))&lt;br /&gt;
	if not (0 &amp;lt;= codepoint and codepoint &amp;lt;= 0x10FFFF) then&lt;br /&gt;
		errorf(2, &amp;quot;code point in parameter %s out of range&amp;quot;, tostring(arg))&lt;br /&gt;
	end&lt;br /&gt;
	return codepoint&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function get_func(args, arg, prefix)&lt;br /&gt;
	local suffix = args[arg]&lt;br /&gt;
		or errorf(2, &amp;quot;Parameter %s is required&amp;quot;, tostring(arg))&lt;br /&gt;
	suffix = mw.text.trim(suffix)&lt;br /&gt;
	local func_name = prefix .. suffix&lt;br /&gt;
	local func = p[func_name]&lt;br /&gt;
		or errorf(2, &amp;quot;There is no function &#039;%s&#039;&amp;quot;, func_name)&lt;br /&gt;
	return func&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- This function allows any of the &amp;quot;lookup&amp;quot; functions to be invoked. The first&lt;br /&gt;
-- parameter is the word after &amp;quot;lookup_&amp;quot;; the second parameter is the code point&lt;br /&gt;
-- in hexadecimal base.&lt;br /&gt;
function p.lookup(frame)&lt;br /&gt;
	local func = get_func(frame.args, 1, &amp;quot;lookup_&amp;quot;)&lt;br /&gt;
	local codepoint = get_codepoint(frame.args, 2)&lt;br /&gt;
	local result = func(codepoint)&lt;br /&gt;
	if func == p.lookup_name then&lt;br /&gt;
		-- Prevent code point labels such as &amp;lt;control-0000&amp;gt; from being&lt;br /&gt;
		-- interpreted as HTML tags.&lt;br /&gt;
		result = result:gsub(&amp;quot;&amp;lt;&amp;quot;, &amp;quot;&amp;amp;lt;&amp;quot;)&lt;br /&gt;
	end&lt;br /&gt;
	return result&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.is(frame)&lt;br /&gt;
	local func = get_func(frame.args, 1, &amp;quot;is_&amp;quot;)&lt;br /&gt;
	&lt;br /&gt;
	-- is_Latin and is_valid_pagename take strings.&lt;br /&gt;
	if func == p.is_Latin or func == p.is_valid_pagename or func == p.is_rtl then&lt;br /&gt;
		return (func(frame.args[2]))&lt;br /&gt;
	else -- The rest take code points.&lt;br /&gt;
		local codepoint = get_codepoint(frame.args, 2)&lt;br /&gt;
		return (func(codepoint)) -- Adjust to one result.&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Module:Lang&amp;diff=11</id>
		<title>Module:Lang</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Module:Lang&amp;diff=11"/>
		<updated>2024-11-24T04:12:23Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[=[&lt;br /&gt;
&lt;br /&gt;
Lua support for the {{lang}}, {{langx}}, {{lang-??}}, and {{transliteration}} templates and replacement of various supporting templates. &lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
require(&#039;strict&#039;);&lt;br /&gt;
&lt;br /&gt;
local getArgs = require (&#039;Module:Arguments&#039;).getArgs;&lt;br /&gt;
local unicode = require (&amp;quot;Module:Unicode data&amp;quot;);								-- for is_latin() and is_rtl()&lt;br /&gt;
local yesno = require (&#039;Module:Yesno&#039;);&lt;br /&gt;
&lt;br /&gt;
local lang_data =  mw.loadData (&#039;Module:Lang/data&#039;);							-- language name override and transliteration tool-tip tables&lt;br /&gt;
local lang_name_table = lang_data.lang_name_table;								-- language codes, names, regions, scripts, suppressed scripts&lt;br /&gt;
local lang_table = lang_data.lang_name_table.lang;&lt;br /&gt;
local lang_dep_table = lang_data.lang_name_table.lang_dep;&lt;br /&gt;
local script_table = lang_data.lang_name_table.script;&lt;br /&gt;
local region_table = lang_data.lang_name_table.region;&lt;br /&gt;
local variant_table = lang_data.lang_name_table.variant;&lt;br /&gt;
local suppressed_table = lang_data.lang_name_table.suppressed;&lt;br /&gt;
local override_table = lang_data.override;&lt;br /&gt;
&lt;br /&gt;
local synonym_table = mw.loadData (&#039;Module:Lang/ISO 639 synonyms&#039;);				-- ISO 639-2/639-2T code translation to 639-1 code&lt;br /&gt;
&lt;br /&gt;
local namespace = mw.title.getCurrentTitle().namespace;							-- used for categorization&lt;br /&gt;
&lt;br /&gt;
local content_lang = mw.language.getContentLanguage();&lt;br /&gt;
local this_wiki_lang_tag = content_lang.code;									-- get this wiki&#039;s language tag&lt;br /&gt;
local this_wiki_lang_dir = content_lang:getDir();								-- get this wiki&#039;s language direction&lt;br /&gt;
&lt;br /&gt;
local initial_style_state;														-- set by lang_xx_normal() and lang_xx_italic()&lt;br /&gt;
&lt;br /&gt;
local maint_cats = {};															-- maintenance categories go here&lt;br /&gt;
local maint_msgs = {};															-- and their messages go here&lt;br /&gt;
&lt;br /&gt;
local templates = {&lt;br /&gt;
	lang = &#039;Lang&#039;,&lt;br /&gt;
	langx = &#039;Langx&#039;,&lt;br /&gt;
	langxx = &#039;Lang-xx&#039;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C O M M O N _ P A R A M S &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local known_params_t = {&lt;br /&gt;
	[&#039;common_params_all_t&#039;] = {													-- these parameters common to {{lang}}, {{langx}}, and {{lang-xx}}&lt;br /&gt;
		[&#039;code&#039;] = true,&lt;br /&gt;
		[&#039;text&#039;] = true,&lt;br /&gt;
		[&#039;rtl&#039;] = true,&lt;br /&gt;
		[&#039;italic&#039;] = true,&lt;br /&gt;
		[&#039;italics&#039;] = true,&lt;br /&gt;
		[&#039;i&#039;] = true,&lt;br /&gt;
		[&#039;size&#039;] = true,&lt;br /&gt;
		[&#039;proto&#039;] = true,&lt;br /&gt;
		[&#039;nocat&#039;] = true,&lt;br /&gt;
		[&#039;cat&#039;] = true,&lt;br /&gt;
&lt;br /&gt;
		[&#039;template&#039;] = true,													-- supplied by external templates to provide template name for error messaging ({{nihongo}}, etc)&lt;br /&gt;
		},&lt;br /&gt;
	&lt;br /&gt;
	[&#039;params_lang_t&#039;] = {														-- unique to {{lang}}&lt;br /&gt;
		[1] = true,																-- alias of |code=&lt;br /&gt;
		[2] = true,																-- alias of |text=&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;params_x_t&#039;] = {															-- common to {{langx}} and {{lang-xx}}&lt;br /&gt;
		[&#039;translit&#039;] = true,&lt;br /&gt;
		[&#039;translit-std&#039;] = true,&lt;br /&gt;
		[&#039;translit-script&#039;] = true,&lt;br /&gt;
		[&#039;translation&#039;] = true,&lt;br /&gt;
		[&#039;lit=&#039;] = true,&lt;br /&gt;
		[&#039;label&#039;] = true,&lt;br /&gt;
		[&#039;link&#039;] = true,&lt;br /&gt;
		[&#039;links&#039;] = true,&lt;br /&gt;
		[&#039;lit&#039;] = true,&lt;br /&gt;
		[&#039;engvar&#039;] = true,&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;params_langx_t&#039;] = {														-- unique to {{langx}}&lt;br /&gt;
		[1] = true,																-- alias of |code=&lt;br /&gt;
		[2] = true,																-- alias of |text=&lt;br /&gt;
		[3] = true,																-- alias of |translit=&lt;br /&gt;
		[4] = true,																-- alias of |translation=&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	[&#039;params_lang_xx_t&#039;] = {													-- unique to {{lang-xx}}&lt;br /&gt;
		[1] = true,																-- alias of |text=&lt;br /&gt;
		[2] = true,																-- alias of |translit=&lt;br /&gt;
		[3] = true,																-- alias of |translation=&lt;br /&gt;
		[&#039;script&#039;] = true,														-- these needed to override default params in {{lang-??}} templates&lt;br /&gt;
		[&#039;region&#039;] = true,&lt;br /&gt;
		[&#039;variant&#039;] = true,&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; P A R A M E T E R _ V A L I D A T E &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function parameter_validate (args_t, template)&lt;br /&gt;
	local err_msg = &#039;invalid parameter: &amp;amp;#124;%s=&#039;;&lt;br /&gt;
&lt;br /&gt;
	if templates.lang == template then											-- for {{lang}}&lt;br /&gt;
		for param, _ in pairs (args_t) do&lt;br /&gt;
			if not known_params_t.params_lang_t[param] and						-- unique {{lang}} parameters&lt;br /&gt;
				 not known_params_t.common_params_all_t[param] then				-- common to all&lt;br /&gt;
					return string.format (err_msg, param);						-- &amp;lt;param&amp;gt; not found so abandon&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif templates.langx == template then										-- for {{langx}}&lt;br /&gt;
&lt;br /&gt;
		for param, _ in pairs (args_t) do&lt;br /&gt;
			if not known_params_t.params_langx_t[param] and						-- unique {{langx}} parameters&lt;br /&gt;
				not known_params_t.params_x_t[param] and						-- common to {{langx}} and {{lang-xx}}&lt;br /&gt;
					not known_params_t.common_params_all_t[param] then			-- common to all&lt;br /&gt;
						return string.format (err_msg, param);					-- &amp;lt;param&amp;gt; not found so abandon&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	elseif templates.langxx == template then									-- for {{lang-xx}}&lt;br /&gt;
		for param, _ in pairs (args_t) do&lt;br /&gt;
			if not known_params_t.params_lang_xx_t[param] and					-- unique {{lang-xx}} parameters&lt;br /&gt;
				not known_params_t.params_x_t[param] and						-- common to {{langx}} and {{lang-xx}}&lt;br /&gt;
				not known_params_t.common_params_all_t[param] then				-- common to all&lt;br /&gt;
					return string.format (err_msg, param);						-- &amp;lt;param&amp;gt; not found so abandon&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end		&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ S E T &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns true if argument is set; false otherwise. Argument is &#039;set&#039; when it exists (not nil) or when it is not an empty string.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_set( var )&lt;br /&gt;
	return not (var == nil or var == &#039;&#039;);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I N V E R T  _ I T A L I C S &amp;gt;-------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This function attempts to invert the italic markup a args.text by adding/removing leading/trailing italic markup&lt;br /&gt;
in args.text.  Like |italic=unset, |italic=invert disables automatic italic markup.  Individual leading/trailing&lt;br /&gt;
apostrophes are converted to their html numeric entity equivalent so that the new italic markup doesn&#039;t become&lt;br /&gt;
bold markup inadvertently.&lt;br /&gt;
&lt;br /&gt;
Leading and trailing wiki markup is extracted from args.text into separate table elements.  Addition, removal,&lt;br /&gt;
replacement of wiki markup is handled by a string.gsub() replacement table operating only on these separate elements.&lt;br /&gt;
In the string.gsub() matching pattern, &#039;.*&#039; matches empty string as well as the three expected wiki markup patterns.&lt;br /&gt;
&lt;br /&gt;
This function expects that markup in args.text is complete and correct; if it is not, oddness may result.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function invert_italics (source)&lt;br /&gt;
	local invert_pattern_table = {												-- leading/trailing markup add/remove/replace patterns&lt;br /&gt;
		[&amp;quot;&amp;quot;]=&amp;quot;\&#039;\&#039;&amp;quot;,															-- empty string becomes italic markup&lt;br /&gt;
		[&amp;quot;\&#039;\&#039;&amp;quot;]=&amp;quot;&amp;quot;,															-- italic markup becomes empty string&lt;br /&gt;
		[&amp;quot;\&#039;\&#039;\&#039;&amp;quot;]=&amp;quot;\&#039;\&#039;\&#039;\&#039;\&#039;&amp;quot;,												-- bold becomes bold italic&lt;br /&gt;
		[&amp;quot;\&#039;\&#039;\&#039;\&#039;\&#039;&amp;quot;]=&amp;quot;\&#039;\&#039;\&#039;&amp;quot;,												-- bold italic become bold&lt;br /&gt;
		};&lt;br /&gt;
	local seg = {};&lt;br /&gt;
&lt;br /&gt;
	source = source:gsub (&amp;quot;%f[\&#039;]\&#039;%f[^\&#039;]&amp;quot;, &#039;&amp;amp;#39;&#039;);							-- protect single quote marks from being interpreted as bold markup&lt;br /&gt;
&lt;br /&gt;
	seg[1] = source:match (&#039;^(\&#039;\&#039;+%f[^\&#039;]).+&#039;) or &#039;&#039;;							-- get leading markup, if any; ignore single quote&lt;br /&gt;
	seg[3] = source:match (&#039;.+(%f[\&#039;]\&#039;\&#039;+)$&#039;) or &#039;&#039;;							-- get trailing markup, if any; ignore single quote&lt;br /&gt;
&lt;br /&gt;
	if &#039;&#039; ~= seg[1] and &#039;&#039; ~= seg[3] then										-- extract the &#039;text&#039; &lt;br /&gt;
		seg[2] = source:match (&#039;^\&#039;\&#039;+%f[^\&#039;](.+)%f[\&#039;]\&#039;\&#039;+$&#039;)					-- from between leading and trailing markup&lt;br /&gt;
	elseif &#039;&#039; ~= seg[1] then&lt;br /&gt;
		seg[2] = source:match (&#039;^\&#039;\&#039;+%f[^\&#039;](.+)&#039;)								-- following leading markup&lt;br /&gt;
	elseif &#039;&#039; ~= seg[3] then&lt;br /&gt;
		seg[2] = source:match (&#039;(.+)%f[\&#039;]\&#039;\&#039;+$&#039;)								-- preceding trailing markup&lt;br /&gt;
	else&lt;br /&gt;
		seg[2] = source															-- when there is no markup&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	seg[1] = invert_pattern_table[seg[1]] or seg[1];							-- replace leading markup according to pattern table&lt;br /&gt;
	seg[3] = invert_pattern_table[seg[3]] or seg[3];							-- replace leading markup according to pattern table&lt;br /&gt;
&lt;br /&gt;
	return table.concat (seg);													-- put it all back together and done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; V A L I D A T E _ I T A L I C &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
validates |italic= or |italics= assigned values.&lt;br /&gt;
&lt;br /&gt;
When |italic= is set and has an acceptible assigned value, return the matching css font-style property value or,&lt;br /&gt;
for the special case &#039;default&#039;, return nil.&lt;br /&gt;
&lt;br /&gt;
When |italic= is not set, or has an unacceptible assigned value, return nil and a nil error message.&lt;br /&gt;
&lt;br /&gt;
When both |italic= and |italics= are set, returns nil and a &#039;conflicting&#039; error message.&lt;br /&gt;
&lt;br /&gt;
The return value nil causes the calling lang, lang_xx, or transl function to set args.italic according to the template&#039;s&lt;br /&gt;
defined default (&#039;inherit&#039; for {{lang}}, &#039;inherit&#039; or &#039;italic&#039; for {{lang-??}} depending on&lt;br /&gt;
the individual template&#039;s requirements, &#039;italic&#039; for {{transliteration}}) or to the value appropriate to |script=, if set ({{lang}}&lt;br /&gt;
and {{lang-??}} only).&lt;br /&gt;
&lt;br /&gt;
Accepted values and the values that this function returns are are:&lt;br /&gt;
	nil		-	when |italic= absent or not set; returns nil&lt;br /&gt;
	default	-	for completeness, should rarely if ever be used; returns nil&lt;br /&gt;
	yes		-	force args.text to be rendered in italic font; returns &#039;italic&#039;&lt;br /&gt;
	no		-	force args.text to be rendered in normal font; returns &#039;normal&#039;&lt;br /&gt;
	unset	-	disables font control so that font-style applied to text is dictated by markup inside or outside the template; returns &#039;inherit&#039;&lt;br /&gt;
	invert	-	disables font control so that font-style applied to text is dictated by markup outside or inverted inside the template; returns &#039;invert&#039;&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function validate_italic (args)&lt;br /&gt;
	local properties = {[&#039;yes&#039;] = &#039;italic&#039;, [&#039;no&#039;] = &#039;normal&#039;, [&#039;unset&#039;] = &#039;inherit&#039;, [&#039;invert&#039;] = &#039;invert&#039;, [&#039;default&#039;] = nil};&lt;br /&gt;
	&lt;br /&gt;
	local count = 0&lt;br /&gt;
	for _, arg in pairs {&#039;italic&#039;, &#039;italics&#039;, &#039;i&#039;} do&lt;br /&gt;
		if args[arg] then&lt;br /&gt;
			count = count + 1&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if count &amp;gt; 1 then															-- return nil and an error message if more than one is set &lt;br /&gt;
		return nil, &#039;only one of |italic=, |italics=, or |i= can be specified&#039;;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return properties[args.italic or args.italics or args.i], nil;				-- return an appropriate value and a nil error message&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[--------------------------&amp;lt; V A L I D A T E _ C A T _ A R G S &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Default behavior of the {{lang}} and {{lang-??}} templates is to add categorization when the templates are used in mainspace.&lt;br /&gt;
This default functionality may be suppressed by setting |nocat=yes or |cat=no.  This function selects one of these two parameters&lt;br /&gt;
to control categorization.&lt;br /&gt;
&lt;br /&gt;
Because having two parameters with &#039;opposite&#039; names and &#039;opposite&#039; values is confusing, this function accepts only affirmative&lt;br /&gt;
values for |nocat= and only negative values for |cat=; in both cases the &#039;other&#039; sense (and non-sense) is not accepted and the&lt;br /&gt;
parameter is treated as if it were not set in the template.&lt;br /&gt;
&lt;br /&gt;
Sets args.nocat to true if categorization is to be turned off; to nil if the default behavior should apply.&lt;br /&gt;
&lt;br /&gt;
Accepted values for |nocat= are the text strings:&lt;br /&gt;
	&#039;yes&#039;, &#039;y&#039;, &#039;true&#039;, &#039;t&#039;, on, &#039;1&#039;		-- [[Module:Yesno]] returns logical true for all of these; false or nil else&lt;br /&gt;
for |cat=&lt;br /&gt;
	&#039;no&#039;, &#039;n&#039;, &#039;false&#039;, &#039;f&#039;, &#039;off&#039;, &#039;0&#039;		-- [[Module:Yesno]] returns logical false for all of these; true or nil else&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function validate_cat_args (args)&lt;br /&gt;
	if not (args.nocat or args.cat) then										-- both are nil, so categorize&lt;br /&gt;
		return;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if false == yesno (args.cat) or true == yesno (args.nocat) then&lt;br /&gt;
		args.nocat = true;														-- set to true when args.nocat is affirmative; nil else (as if the parameter were not set in the template)&lt;br /&gt;
	else																		-- args.nocat is the parameter actually used.&lt;br /&gt;
		args.nocat = nil;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I N _ A R R A Y &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Whether needle is in haystack&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function in_array ( needle, haystack )&lt;br /&gt;
	if needle == nil then&lt;br /&gt;
		return false;&lt;br /&gt;
	end&lt;br /&gt;
	for n,v in ipairs( haystack ) do&lt;br /&gt;
		if v == needle then&lt;br /&gt;
			return n;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return false;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; F O R M A T _ I E T F _ T A G &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
prettify ietf tags to use recommended subtag formats:&lt;br /&gt;
	code: lower case&lt;br /&gt;
	script: sentence case&lt;br /&gt;
	region: upper case&lt;br /&gt;
	variant: lower case&lt;br /&gt;
	private: lower case prefixed with -x-&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function format_ietf_tag (code, script, region, variant, private)&lt;br /&gt;
	local out = {};&lt;br /&gt;
&lt;br /&gt;
	if is_set (private) then&lt;br /&gt;
		return table.concat ({code:lower(), &#039;x&#039;, private:lower()}, &#039;-&#039;);		-- if private, all other tags ignored&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert (out, code:lower());&lt;br /&gt;
	if is_set (script) then&lt;br /&gt;
		script = script:lower():gsub (&#039;^%a&#039;, string.upper);&lt;br /&gt;
		table.insert (out, script);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (region) then&lt;br /&gt;
		table.insert (out, region:upper());&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if is_set (variant) then&lt;br /&gt;
		table.insert (out, variant:lower());&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat (out, &#039;-&#039;);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; G E T _ I E T F _ P A R T S &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
extracts and returns IETF language tag parts:&lt;br /&gt;
	primary language subtag (required) - 2 or 3 character IANA language code&lt;br /&gt;
	script subtag - four character IANA script code&lt;br /&gt;
	region subtag - two-letter or three digit IANA region code&lt;br /&gt;
	variant subtag - four digit or 5-8 alnum variant code; only one variant subtag supported&lt;br /&gt;
	private subtag - x- followed by 1-8 alnum private code; only supported with the primary language tag&lt;br /&gt;
&lt;br /&gt;
in any one of these forms&lt;br /&gt;
	lang					lang-variant&lt;br /&gt;
	lang-script				lang-script-variant&lt;br /&gt;
	lang-region				lang-region-variant&lt;br /&gt;
	lang-script-region		lang-script-region-variant&lt;br /&gt;
	lang-x-private	&lt;br /&gt;
	&lt;br /&gt;
each of lang, script, region, variant, and private, when used, must be valid&lt;br /&gt;
&lt;br /&gt;
Languages with both two- and three-character code synonyms are promoted to the two-character synonym because&lt;br /&gt;
the IANA registry file omits the synonymous three-character code; we cannot depend on browsers understanding&lt;br /&gt;
the synonymous three-character codes in the lang= attribute.&lt;br /&gt;
&lt;br /&gt;
For {{lang-??}} templates, the parameters |script=, |region=, and |variant= are supported (not supported in {{lang}}&lt;br /&gt;
because those parameters are superfluous to the IETF subtags in |code=)&lt;br /&gt;
&lt;br /&gt;
returns six  values; all lower case.  Valid parts are returned as themselves; omitted parts are returned as empty strings, invalid&lt;br /&gt;
parts are returned as nil; the sixth returned item is an error message (if an error detected) or nil.&lt;br /&gt;
&lt;br /&gt;
see http://www.rfc-editor.org/rfc/bcp/bcp47.txt section 2.1&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function get_ietf_parts (source, args_script, args_region, args_variant)&lt;br /&gt;
	local code, script, region, variant, private;								-- ietf tag parts&lt;br /&gt;
&lt;br /&gt;
	if not is_set (source) then&lt;br /&gt;
		return nil, nil, nil, nil, nil, &#039;missing language tag&#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local pattern = {															-- table of tables holding acceptibe ietf tag patterns and short names of the ietf part captured by the pattern&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%d%d%d%d)$&#039;, &#039;s&#039;, &#039;r&#039;, &#039;v&#039;}, 				-- 1 -  ll-Ssss-RR-variant (where variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%d%d%d%d)$&#039;, &#039;s&#039;, &#039;r&#039;, &#039;v&#039;},				-- 2 -  ll-Ssss-DDD-variant (where region is 3 digits; variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;s&#039;, &#039;r&#039;, &#039;v&#039;},		-- 3 -  ll-Ssss-RR-variant (where variant is 5-8 alnum characters)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;s&#039;, &#039;r&#039;, &#039;v&#039;},	-- 4 -  ll-Ssss-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)&lt;br /&gt;
		&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d%d)$&#039;, &#039;s&#039;, &#039;v&#039;},						-- 5 -  ll-Ssss-variant (where variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;s&#039;, &#039;v&#039;},			-- 6 -  ll-Ssss-variant (where variant is 5-8 alnum characters)&lt;br /&gt;
		&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a)%-(%d%d%d%d)$&#039;, &#039;r&#039;, &#039;v&#039;},							-- 7 -  ll-RR-variant (where variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%d%d%d)%-(%d%d%d%d)$&#039;, &#039;r&#039;, &#039;v&#039;},						-- 8 -  ll-DDD-variant (where region is 3 digits; variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;r&#039;, &#039;v&#039;},				-- 9 -  ll-RR-variant (where variant is 5-8 alnum characters)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%d%d%d)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;r&#039;, &#039;v&#039;},				-- 10 - ll-DDD-variant (where region is 3 digits; variant is 5-8 alnum characters)&lt;br /&gt;
		&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%d%d%d%d)$&#039;, &#039;v&#039;},										-- 11 - ll-variant (where variant is 4 digits)&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%w%w%w%w%w%w?%w?%w?)$&#039;, &#039;v&#039;},							-- 12 - ll-variant (where variant is 5-8 alnum characters)&lt;br /&gt;
		&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%a%a)$&#039;, &#039;s&#039;, &#039;r&#039;},							-- 13 - ll-Ssss-RR&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)%-(%d%d%d)$&#039;, &#039;s&#039;, &#039;r&#039;},						-- 14 - ll-Ssss-DDD (region is 3 digits)&lt;br /&gt;
		&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a%a%a)$&#039;, &#039;s&#039;},										-- 15 - ll-Ssss&lt;br /&gt;
		&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%a%a)$&#039;, &#039;r&#039;},											-- 16 - ll-RR&lt;br /&gt;
		{&#039;^(%a%a%a?)%-(%d%d%d)$&#039;, &#039;r&#039;},											-- 17 - ll-DDD (region is 3 digits)&lt;br /&gt;
		&lt;br /&gt;
		{&#039;^(%a%a%a?)$&#039;},														-- 18 - ll&lt;br /&gt;
		&lt;br /&gt;
		{&#039;^(%a%a%a?)%-x%-(%w%w?%w?%w?%w?%w?%w?%w?)$&#039;, &#039;p&#039;},						-- 19 - ll-x-pppppppp (private is 1-8 alnum characters)&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
	local t = {};																-- table of captures; serves as a translator between captured ietf tag parts and named variables&lt;br /&gt;
&lt;br /&gt;
	for i, v in ipairs (pattern) do												-- spin through the pattern table looking for a match&lt;br /&gt;
		local c1, c2, c3, c4;													-- captures in the &#039;pattern&#039; from the pattern table go here&lt;br /&gt;
	&lt;br /&gt;
		c1, c2, c3, c4 = source:match (pattern[i][1]);							-- one or more captures set if source matches pattern[i])&lt;br /&gt;
			if c1 then															-- c1 always set on match&lt;br /&gt;
				code = c1;														-- first capture is always code&lt;br /&gt;
				t = {&lt;br /&gt;
					[pattern[i][2] or &#039;x&#039;] = c2,								-- fill the table of captures with the rest of the captures&lt;br /&gt;
					[pattern[i][3] or &#039;x&#039;] = c3,								-- take index names from pattern table and assign sequential captures&lt;br /&gt;
					[pattern[i][4] or &#039;x&#039;] = c4,								-- index name may be nil in pattern[i] table so &amp;quot;or &#039;x&#039;&amp;quot; spoofs a name for this index in this table&lt;br /&gt;
					};&lt;br /&gt;
				script = t.s or &#039;&#039;;												-- translate table contents to named variables;&lt;br /&gt;
				region = t.r or &#039;&#039;;												-- absent table entries are nil so set named ietf parts to empty string for concatenation&lt;br /&gt;
				variant= t.v or &#039;&#039;;&lt;br /&gt;
				private = t.p or &#039;&#039;;&lt;br /&gt;
				break;															-- and done&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if not code then&lt;br /&gt;
		return nil, nil, nil, nil, nil, table.concat ({&#039;unrecognized language tag: &#039;, source});		-- don&#039;t know what we got but it is malformed&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	code = code:lower();														-- ensure that we use and return lower case version of this&lt;br /&gt;
	&lt;br /&gt;
	if not (override_table[code] or lang_table[code] or synonym_table[code] or lang_dep_table[code]) then&lt;br /&gt;
		return nil, nil, nil, nil, nil, table.concat ({&#039;unrecognized language code: &#039;, code});		-- invalid language code, don&#039;t know about the others (don&#039;t care?)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if synonym_table[code] then													-- if 639-2/639-2T code has a 639-1 synonym&lt;br /&gt;
		table.insert (maint_cats, table.concat ({&#039;Lang and lang-xx code promoted to ISO 639-1|&#039;, code}));&lt;br /&gt;
		table.insert (maint_msgs, table.concat ({&#039;code: &#039;, code, &#039; promoted to code: &#039;, synonym_table[code]}));&lt;br /&gt;
		code = synonym_table[code];												-- use the synonym&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (script) then&lt;br /&gt;
		if is_set (args_script) then&lt;br /&gt;
			return code, nil, nil, nil, nil, &#039;redundant script tag&#039;;			-- both code with script and |script= not allowed&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		script = args_script or &#039;&#039;;												-- use args.script if provided&lt;br /&gt;
	end &lt;br /&gt;
&lt;br /&gt;
	if is_set (script) then&lt;br /&gt;
		script = script:lower();												-- ensure that we use and return lower case version of this&lt;br /&gt;
		if not script_table[script] then&lt;br /&gt;
			return code, nil, nil, nil, nil, table.concat ({&#039;unrecognized script: &#039;, script, &#039; for code: &#039;, code});	-- language code ok, invalid script, don&#039;t know about the others (don&#039;t care?)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if suppressed_table[script] then											-- ensure that code-script does not use a suppressed script&lt;br /&gt;
		if in_array (code, suppressed_table[script]) then&lt;br /&gt;
			return code, nil, nil, nil, nil, table.concat ({&#039;script: &#039;, script, &#039; not supported for code: &#039;, code});	-- language code ok, script is suppressed for this code&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (region) then&lt;br /&gt;
		if is_set (args_region) then&lt;br /&gt;
			return code, nil, nil, nil, nil, &#039;redundant region tag&#039;;			-- both code with region and |region= not allowed&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		region = args_region or &#039;&#039;;												-- use args.region if provided&lt;br /&gt;
	end &lt;br /&gt;
&lt;br /&gt;
	if is_set (region) then&lt;br /&gt;
		region = region:lower();												-- ensure that we use and return lower case version of this&lt;br /&gt;
		if not region_table[region] then&lt;br /&gt;
			return code, script, nil, nil, nil, table.concat ({&#039;unrecognized region: &#039;, region, &#039; for code: &#039;, code});&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if is_set (variant) then&lt;br /&gt;
		if is_set (args_variant) then&lt;br /&gt;
			return code, nil, nil, nil, nil, &#039;redundant variant tag&#039;;			-- both code with variant and |variant= not allowed&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		variant = args_variant or &#039;&#039;;											-- use args.variant if provided&lt;br /&gt;
	end &lt;br /&gt;
&lt;br /&gt;
	if is_set (variant) then&lt;br /&gt;
		variant = variant:lower();												-- ensure that we use and return lower case version of this&lt;br /&gt;
		if not variant_table[variant] then										-- make sure variant is valid&lt;br /&gt;
			return code, script, region, nil, nil, table.concat ({&#039;unrecognized variant: &#039;, variant});&lt;br /&gt;
		end																		-- does this duplicate/replace tests in lang() and lang_xx()?&lt;br /&gt;
		if is_set (script) then													-- if script set it must be part of the &#039;prefix&#039;&lt;br /&gt;
			if not in_array (table.concat ({code, &#039;-&#039;, script}), variant_table[variant][&#039;prefixes&#039;]) then&lt;br /&gt;
				return code, script, region, nil, nil, table.concat ({&#039;unrecognized variant: &#039;, variant, &#039; for code-script pair: &#039;, code, &#039;-&#039;, script});&lt;br /&gt;
			end&lt;br /&gt;
		elseif is_set (region) then												-- if region set, there are some prefixes that require lang code and region (en-CA-newfound)&lt;br /&gt;
			if not in_array (code, variant_table[variant][&#039;prefixes&#039;]) then		-- first see if lang code is all that&#039;s required (en-oxendict though en-GB-oxendict is preferred)&lt;br /&gt;
				if not in_array (table.concat ({code, &#039;-&#039;, region}), variant_table[variant][&#039;prefixes&#039;]) then		-- now try for lang code and region (en-CA-newfound)&lt;br /&gt;
					return code, script, region, nil, nil, table.concat ({&#039;unrecognized variant: &#039;, variant, &#039; for code-region pair: &#039;, code, &#039;-&#039;, region});&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		else																	-- cheap way to determine if there are prefixes; fonipa and others don&#039;t have prefixes; # operator always returns 0&lt;br /&gt;
			if variant_table[variant][&#039;prefixes&#039;][1] and not in_array (code, variant_table[variant][&#039;prefixes&#039;]) then&lt;br /&gt;
				return code, script, region, nil, nil, table.concat ({&#039;unrecognized variant: &#039;, variant, &#039; for code: &#039;, code});&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (private) then&lt;br /&gt;
		private = private:lower();												-- ensure that we use and return lower case version of this&lt;br /&gt;
		if not override_table[table.concat ({code, &#039;-x-&#039;, private})] then		-- make sure private tag is valid; note that index &lt;br /&gt;
			return code, script, region, nil, nil, table.concat ({&#039;unrecognized private tag: &#039;, private});&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return code, script, region, variant, private, nil;							-- return the good bits; make sure that msg is nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S U B S T I T U T E &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
substitutes $1, $2, etc in &amp;lt;message&amp;gt; with data from &amp;lt;data_t&amp;gt;.  Returns plain-text substituted string when&lt;br /&gt;
&amp;lt;data_t&amp;gt; not nil; returns &amp;lt;message&amp;gt; else&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function substitute (message, data_t)&lt;br /&gt;
	return data_t and mw.message.newRawMessage (message, data_t):plain() or message;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A K E _ E R R O R _ M S G &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
assembles an error message from template name, message text, help link, and error category.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function make_error_msg (msg, args_t, template)&lt;br /&gt;
	local category;&lt;br /&gt;
	local text;																	-- handle the oddity that is {{langx}}&lt;br /&gt;
	if templates.langxx == template then&lt;br /&gt;
		text = args_t.text or args_t[1];										-- for {{lang-xx}}&lt;br /&gt;
	else&lt;br /&gt;
		text = args_t.text or args_t[2];										-- for {{lang}}, {{langx}}, and {{transliteration}}&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if &#039;Transliteration&#039; == template then&lt;br /&gt;
		category = &#039;Transliteration&#039;;&lt;br /&gt;
	else&lt;br /&gt;
		category = &#039;Lang and lang-xx&#039;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local category_link = ((0 == namespace or 10 == namespace) and not args_t.nocat) and table.concat ({&#039;[[Category:&#039;, category, &#039; template errors]]&#039;}) or &#039;&#039;;&lt;br /&gt;
	return substitute (&#039;[$1] &amp;lt;span style=&amp;quot;color:#d33&amp;quot;&amp;gt;Error: {{$2}}: $3 ([[:Category:$4 template errors|help]])&amp;lt;/span&amp;gt;$5&#039;,&lt;br /&gt;
		{&lt;br /&gt;
		text or &#039;undefined&#039;,&lt;br /&gt;
		template,&lt;br /&gt;
		msg,&lt;br /&gt;
		category,&lt;br /&gt;
		category_link&lt;br /&gt;
		})&lt;br /&gt;
end&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; M A K E _ W I K I L I N K &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Makes a wikilink; when both link and display text is provided, returns a wikilink in the form [[L|D]]; if only&lt;br /&gt;
link is provided, returns a wikilink in the form [[L]]; if neither are provided or link is omitted, returns an&lt;br /&gt;
empty string.&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function make_wikilink (link, display)&lt;br /&gt;
	if is_set (link) then&lt;br /&gt;
		if is_set (display) then&lt;br /&gt;
			return table.concat ({&#039;[[&#039;, link, &#039;|&#039;, display, &#039;]]&#039;});&lt;br /&gt;
		else&lt;br /&gt;
			return table.concat ({&#039;[[&#039;, link, &#039;]]&#039;});&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return &#039;&#039;;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; D I V _ M A R K U P _ A D D &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
adds &amp;lt;i&amp;gt; and &amp;lt;/i&amp;gt; tags to list-item text or to implied &amp;lt;p&amp;gt;..&amp;lt;/p&amp;gt; text.  mixed not supported&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function div_markup_add (text, style)&lt;br /&gt;
local implied_p = {};&lt;br /&gt;
&lt;br /&gt;
	if text:find (&#039;^\n[%*:;#]&#039;) then											-- look for list markup; list markup must begin at start of text&lt;br /&gt;
		if &#039;italic&#039; == style then&lt;br /&gt;
			return text:gsub (&#039;(\n[%*:;#]+)([^\n]+)&#039;, &#039;%1&amp;lt;i&amp;gt;%2&amp;lt;/i&amp;gt;&#039;);			-- insert italic markup at each list item&lt;br /&gt;
		else&lt;br /&gt;
			return text;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if text:find (&#039;\n+&#039;) then													-- look for any number of \n characters in text&lt;br /&gt;
		text = text:gsub (&#039;([^\n])\n([^\n])&#039;, &#039;%1 %2&#039;);							-- replace single newline characters with a space character which mimics mediawiki&lt;br /&gt;
&lt;br /&gt;
		if &#039;italic&#039; == style then&lt;br /&gt;
			text = text:gsub(&#039;[^\n]+&#039;, &#039;&amp;lt;p&amp;gt;&amp;lt;i&amp;gt;%1&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&#039;);						-- insert p and italic markup tags at each impled p (two or more consecutive &#039;\n\n&#039; sequences)&lt;br /&gt;
		else&lt;br /&gt;
			text = text:gsub (&#039;[^\n]+&#039;, &#039;&amp;lt;p&amp;gt;%1&amp;lt;/p&amp;gt;&#039;);							-- insert p markup at each impled p&lt;br /&gt;
			text = text:gsub (&#039;\n&#039;, &#039;&#039;);										-- strip newline characters&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return text;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T I T L E _ W R A P P E R _ M A K E &amp;gt;------------------------------------------&lt;br /&gt;
&lt;br /&gt;
makes a &amp;lt;span title=&amp;quot;&amp;lt;title text&amp;gt;&amp;quot;&amp;gt;&amp;lt;content_text&amp;gt;&amp;lt;/span&amp;gt; or &amp;lt;div title=&amp;quot;&amp;lt;title text&amp;gt;&amp;quot;&amp;gt;&amp;lt;content_text&amp;gt;&amp;lt;/div&amp;gt; where&lt;br /&gt;
&amp;lt;title text&amp;gt; is in the tool-tip in the wiki&#039;s local language and &amp;lt;content_text&amp;gt; is non-local-language text in&lt;br /&gt;
html markup.  This because the lang= attibute applies to the content of its enclosing tag.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tag&amp;gt; holds a string &#039;div&#039; or &#039;span&#039; used to choose the correct wrapping tag&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function title_wrapper_make (title_text, content_text, tag)&lt;br /&gt;
	local wrapper_t = {};&lt;br /&gt;
	&lt;br /&gt;
	table.insert (wrapper_t, table.concat ({&#039;&amp;lt;&#039;, tag}));						-- open opening wrapper tag&lt;br /&gt;
	table.insert (wrapper_t, &#039; title=\&amp;quot;&#039;);										-- begin title attribute&lt;br /&gt;
	table.insert (wrapper_t, title_text);										-- add &amp;lt;title_text&amp;gt;&lt;br /&gt;
	table.insert (wrapper_t, &#039;\&amp;quot;&amp;gt;&#039;);											-- end title attribute and close opening wrapper tag&lt;br /&gt;
	table.insert (wrapper_t, content_text);										-- add &amp;lt;content_text&amp;gt;&lt;br /&gt;
	table.insert (wrapper_t, table.concat ({&#039;&amp;lt;/&#039;, tag, &#039;&amp;gt;&#039;}));					-- add closing wrapper tag&lt;br /&gt;
&lt;br /&gt;
	return table.concat (wrapper_t);											-- make a big string and done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A K E _ T E X T _ H T M L &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Add the html markup to text according to the type of content that it is: &amp;lt;span&amp;gt; or &amp;lt;i&amp;gt; tags for inline content or&lt;br /&gt;
&amp;lt;div&amp;gt; tags for block content&lt;br /&gt;
&lt;br /&gt;
The lang= attribute also applies to the content of the tag where it is placed so this is wrong because &#039;Spanish&lt;br /&gt;
language text&#039; is English:&lt;br /&gt;
	&amp;lt;i lang=&amp;quot;es&amp;quot; title=&amp;quot;Spanish language text&amp;quot;&amp;gt;casa&amp;lt;/i&amp;gt;&lt;br /&gt;
should be:&lt;br /&gt;
	&amp;lt;span title=&amp;quot;Spanish language text&amp;quot;&amp;gt;&amp;lt;i lang=&amp;quot;es&amp;quot;&amp;gt;casa&amp;lt;/i&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
or for &amp;lt;div&amp;gt;...&amp;lt;/div&amp;gt;:&lt;br /&gt;
	&amp;lt;div title=&amp;quot;Spanish language text&amp;quot;&amp;gt;&amp;lt;div lang=&amp;quot;es&amp;quot;&amp;gt;&amp;lt;spanish-language-text&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function make_text_html (code, text, tag, rtl, style, size, language)&lt;br /&gt;
	local html_t = {};&lt;br /&gt;
	local style_added = &#039;&#039;;&lt;br /&gt;
	local wrapper_tag = tag;													-- &amp;lt;tag&amp;gt; gets modified so save a copy for use when/if we create a wrapper span or div&lt;br /&gt;
&lt;br /&gt;
	if text:match (&#039;^%*&#039;) then&lt;br /&gt;
		table.insert (html_t, &#039;&amp;amp;#42;&#039;);											-- move proto language text prefix outside of italic markup if any; use numeric entity because plain splat confuses MediaWiki&lt;br /&gt;
		text = text:gsub (&#039;^%*&#039;, &#039;&#039;);											-- remove the splat from the text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if &#039;span&#039; == tag then														-- default html tag for inline content&lt;br /&gt;
		if &#039;italic&#039; == style then												-- but if italic&lt;br /&gt;
			tag = &#039;i&#039;;															-- change to &amp;lt;i&amp;gt; tags&lt;br /&gt;
		end&lt;br /&gt;
	else																		-- must be div so go&lt;br /&gt;
		text = div_markup_add (text, style);									-- handle implied &amp;lt;p&amp;gt;, implied &amp;lt;p&amp;gt; with &amp;lt;i&amp;gt;, and list markup (*;:#) with &amp;lt;i&amp;gt;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert (html_t, table.concat ({&#039;&amp;lt;&#039;, tag}));							-- open the &amp;lt;i&amp;gt;, &amp;lt;span&amp;gt;, or &amp;lt;div&amp;gt; html tag&lt;br /&gt;
	code = code:gsub (&#039;%-x%-.*&#039;, &#039;&#039;);											-- strip private use subtag from code tag because meaningless outside of wikipedia&lt;br /&gt;
	table.insert (html_t, table.concat ({&#039; lang=&amp;quot;&#039;, code, &#039;\&amp;quot;&#039;}));				-- add language attribute&lt;br /&gt;
&lt;br /&gt;
	if (rtl or unicode.is_rtl(text)) and (&#039;ltr&#039; == this_wiki_lang_dir) then		-- text is right-to-left on a left-to-right wiki&lt;br /&gt;
		table.insert (html_t, &#039; dir=&amp;quot;rtl&amp;quot;&#039;);									-- add direction attribute for right-to-left languages&lt;br /&gt;
	elseif not (rtl or unicode.is_rtl(text)) and (&#039;rtl&#039; == this_wiki_lang_dir) then	-- text is left-to-right on a right-to-left wiki&lt;br /&gt;
		table.insert (html_t, &#039; dir=&amp;quot;ltr&amp;quot;&#039;);									-- add direction attribute for left-to-right languages&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if &#039;normal&#039; == style then													-- when |italic=no&lt;br /&gt;
		table.insert (html_t, &#039; style=\&amp;quot;font-style: normal;&#039;);					-- override external markup, if any&lt;br /&gt;
		style_added = &#039;\&amp;quot;&#039;;														-- remember that style attribute added and is not yet closed&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (size) then														-- when |size=&amp;lt;something&amp;gt;&lt;br /&gt;
		if is_set (style_added) then&lt;br /&gt;
			table.insert (html_t, table.concat ({&#039; font-size: &#039;, size, &#039;;&#039;}));	-- add when style attribute already inserted&lt;br /&gt;
		else&lt;br /&gt;
			table.insert (html_t, table.concat ({&#039; style=\&amp;quot;font-size: &#039;, size, &#039;;&#039;}));	-- create style attribute&lt;br /&gt;
			style_added = &#039;\&amp;quot;&#039;;													-- remember that style attribute added and is not yet closed&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert (html_t, table.concat ({style_added, &#039;&amp;gt;&#039;}));					-- close the opening html tag&lt;br /&gt;
	table.insert (html_t, text);												-- insert the text&lt;br /&gt;
&lt;br /&gt;
	table.insert (html_t, table.concat ({&#039;&amp;lt;/&#039;, tag, &#039;&amp;gt;&#039;}));						-- close the &#039;text&#039; &amp;lt;i&amp;gt;, &amp;lt;span&amp;gt;, or &amp;lt;div&amp;gt; html tag&lt;br /&gt;
&lt;br /&gt;
	if is_set (language) then													-- create a &amp;lt;title_text&amp;gt; string for the title= attribute in a wrapper span or div&lt;br /&gt;
		local title_text;&lt;br /&gt;
			if &#039;zxx&#039; == code then												-- special case for this tag &#039;no linguistic content&#039;&lt;br /&gt;
				title_text = table.concat ({language, &#039; text&#039;});				-- not a language so don&#039;t use &#039;language&#039; in title text&lt;br /&gt;
			elseif mw.ustring.find (language, &#039;languages&#039;, 1, true) then&lt;br /&gt;
				title_text = table.concat ({language, &#039; collective text&#039;});		-- for collective languages&lt;br /&gt;
			else&lt;br /&gt;
				title_text = table.concat ({language, &#039;-language text&#039;});		-- for individual languages&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		return title_wrapper_make (title_text, table.concat (html_t), wrapper_tag);&lt;br /&gt;
	else&lt;br /&gt;
		return table.concat (html_t);&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; M A K E _ C A T E G O R Y &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
For individual language, &amp;lt;language&amp;gt;, returns:&lt;br /&gt;
	[[Category:Articles containing &amp;lt;language&amp;gt;-language text]]&lt;br /&gt;
&lt;br /&gt;
for English:&lt;br /&gt;
	[[Category:Articles containing explicitly cited English-language text]]&lt;br /&gt;
	&lt;br /&gt;
for ISO 639-2 collective languages (and for 639-1 bh):&lt;br /&gt;
	[[Category:Articles with text in &amp;lt;language&amp;gt; languages]]&lt;br /&gt;
&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function make_category (code, language_name, nocat, name_get)&lt;br /&gt;
	local cat = {};&lt;br /&gt;
	local retval;&lt;br /&gt;
&lt;br /&gt;
	if ((0 ~= namespace) or nocat) and not name_get then						-- only categorize in article space&lt;br /&gt;
		return &#039;&#039;;																-- return empty string for concatenation&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if mw.ustring.find (language_name, &#039;languages&#039;, 1, true) then&lt;br /&gt;
		return table.concat ({&#039;[[Category:Articles with text in &#039;, language_name, &#039;]]&#039;});&lt;br /&gt;
	end&lt;br /&gt;
		&lt;br /&gt;
	table.insert (cat, &#039;[[Category:Articles containing &#039;);&lt;br /&gt;
&lt;br /&gt;
	if this_wiki_lang_tag == code then&lt;br /&gt;
		table.insert (cat, &#039;explicitly cited &#039; .. language_name);				-- unique category name for the local language&lt;br /&gt;
	else&lt;br /&gt;
		table.insert (cat, language_name);&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert (cat, &#039;-language text]]&#039;);&lt;br /&gt;
&lt;br /&gt;
	return table.concat (cat);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; M A K E _ T R A N S L I T &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return translit &amp;lt;i lang=xx-Latn&amp;gt;...&amp;lt;/i&amp;gt; where xx is the language code; else return empty string&lt;br /&gt;
&lt;br /&gt;
The value |script= is not used in {{transliteration}} for this purpose; instead it uses |code.  Because language scripts&lt;br /&gt;
are listed in the {{transliteration}} switches they are included in the data tables.  The script parameter is introduced&lt;br /&gt;
at {{Language with name and transliteration}}.  If |script= is set, this function uses it in preference to code.&lt;br /&gt;
&lt;br /&gt;
To avoid confusion, in this module and the templates that use it, the transliteration script parameter is renamed&lt;br /&gt;
to be |translit-script= (in this function, tscript)&lt;br /&gt;
&lt;br /&gt;
This function is used by both lang_xx() and transl()&lt;br /&gt;
	lang_xx() always provides code, language_name, and translit; may provide tscript; never provides style&lt;br /&gt;
	transl() always provides language_name, translit, and one of code or tscript, never both; always provides style&lt;br /&gt;
&lt;br /&gt;
For {{transliteration}}, style only applies when a language code is provided&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function make_translit (code, language_name, translit, std, tscript, style, engvar)&lt;br /&gt;
	local title;&lt;br /&gt;
	local out_t = {};&lt;br /&gt;
	local title_t = lang_data.translit_title_table;								-- table of transliteration standards and the language codes and scripts that apply to those standards&lt;br /&gt;
	local title_text = &#039;&#039;;														-- tool tip text for title= attribute&lt;br /&gt;
	&lt;br /&gt;
	std = std and std:lower();													-- lower case for table indexing&lt;br /&gt;
	&lt;br /&gt;
	if not is_set (std) and not is_set (tscript) then							-- when neither standard nor script specified&lt;br /&gt;
		title_text = language_name;												-- write a generic tool tip&lt;br /&gt;
		if not mw.ustring.find (language_name, &#039;languages&#039;, 1, true) then		-- collective language names (plural &#039;languages&#039; is part of the name)&lt;br /&gt;
			title_text = title_text .. &#039;-language&#039;;								-- skip this text (individual and macro languages only)&lt;br /&gt;
		end&lt;br /&gt;
		title_text = substitute (&#039;$1 $2&#039;, {title_text, lang_data.engvar_t[engvar][&#039;romanisz_lc&#039;]});	-- finish the tool tip; use romanization when neither script nor standard supplied&lt;br /&gt;
&lt;br /&gt;
	elseif is_set (std) and is_set (tscript) then								-- when both are specified&lt;br /&gt;
		if title_t[std] then													-- and if standard is legitimate&lt;br /&gt;
			if title_t[std][tscript] then										-- and if script for that standard is legitimate&lt;br /&gt;
				if script_table[tscript] then&lt;br /&gt;
					title_text = title_text .. table.concat ({title_t[std][tscript:lower()], &#039; (&#039;, script_table[tscript], &#039; script) transliteration&#039;});	-- add the appropriate text to the tool tip&lt;br /&gt;
				else&lt;br /&gt;
					title_text = title_text .. title_t[std][&#039;default&#039;];			-- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				title_text = title_text .. title_t[std][&#039;default&#039;];				-- use the default if script not in std table; TODO: maint cat? error message because script not found for this standard?&lt;br /&gt;
			end&lt;br /&gt;
		else&lt;br /&gt;
			return &#039;&#039;;															-- invalid standard, setup for error message&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif is_set (std) then													-- translit-script not set, use language code&lt;br /&gt;
		if not title_t[std] then return &#039;&#039;; end									-- invalid standard, setup for error message&lt;br /&gt;
		&lt;br /&gt;
		if title_t[std][code] then												-- if language code is in the table (transl may not provide a language code)&lt;br /&gt;
			title_text = title_text .. table.concat ({title_t[std][code:lower()], &#039; (&#039;, language_name, &#039; language) transliteration&#039;});	-- add the appropriate text to the tool tip&lt;br /&gt;
		else																	-- code doesn&#039;t match&lt;br /&gt;
			title_text = title_text .. title_t[std][&#039;default&#039;];					-- so use the standard&#039;s default&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	else																		-- here if translit-script set but translit-std not set&lt;br /&gt;
		if title_t[&#039;no_std&#039;][tscript] then&lt;br /&gt;
			title_text = title_text .. title_t[&#039;no_std&#039;][tscript];				-- use translit-script if set&lt;br /&gt;
		elseif title_t[&#039;no_std&#039;][code] then&lt;br /&gt;
			title_text = title_text .. title_t[&#039;no_std&#039;][code];					-- use language code&lt;br /&gt;
		else&lt;br /&gt;
			if is_set (tscript) then&lt;br /&gt;
				title_text = title_text .. table.concat ({language_name, &#039;-script transliteration&#039;});	-- write a script tool tip&lt;br /&gt;
			elseif is_set (code) then&lt;br /&gt;
				if not mw.ustring.find (language_name, &#039;languages&#039;, 1, true) then	-- collective language names (plural &#039;languages&#039; is part of the name)&lt;br /&gt;
					title_text = title_text .. &#039;-language&#039;;						-- skip this text (individual and macro languages only)&lt;br /&gt;
				end&lt;br /&gt;
				title_text = title_text .. &#039; transliteration&#039;;					-- finish the tool tip&lt;br /&gt;
			else&lt;br /&gt;
				title_text = title_text .. &#039; transliteration&#039;;					-- generic tool tip (can we ever get here?)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local close_tag;&lt;br /&gt;
	if is_set (code) then														-- when a language code is provided (always with {{lang-??}} templates, not always with {{transliteration}})&lt;br /&gt;
		code = code:match (&#039;^(%a%a%a?)&#039;);										-- strip all subtags leaving only the language subtag&lt;br /&gt;
&lt;br /&gt;
		if not style then														-- nil for the default italic style&lt;br /&gt;
			table.insert (out_t, &amp;quot;&amp;lt;i lang=\&amp;quot;&amp;quot;);									-- so use &amp;lt;i&amp;gt; tag&lt;br /&gt;
			close_tag = &#039;&amp;lt;/i&amp;gt;&#039;;													-- tag to be used when closing&lt;br /&gt;
		else&lt;br /&gt;
			table.insert (out_t, table.concat ({&#039;&amp;lt;span style=\&amp;quot;font-style: &#039;, style, &#039;\&amp;quot; lang=\&amp;quot;&#039;}));	-- non-standard style, construct a span tag for it&lt;br /&gt;
			close_tag = &#039;&amp;lt;/span&amp;gt;&#039;;												-- tag to be used when closing&lt;br /&gt;
		end&lt;br /&gt;
		table.insert (out_t, code);&lt;br /&gt;
		table.insert (out_t, &amp;quot;-Latn\&amp;quot;&amp;gt;&amp;quot;);										-- transliterations are always Latin script&lt;br /&gt;
	else&lt;br /&gt;
		table.insert (out_t, &amp;quot;&amp;lt;span&amp;gt;&amp;quot;);											-- when no language code: no lang= attribute, not italic ({{transliteration}} only)&lt;br /&gt;
		close_tag = &#039;&amp;lt;/span&amp;gt;&#039;;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	table.insert (out_t, translit);												-- add the translit text&lt;br /&gt;
	table.insert (out_t, close_tag);											-- and add the appropriate &amp;lt;/i&amp;gt; or &amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	if &#039;&#039; == title_text then													-- when there is no need for a tool-tip&lt;br /&gt;
		return table.concat (out_t);											-- make a string and done&lt;br /&gt;
	else&lt;br /&gt;
		title_text = &#039;gb_t&#039; == engvar and title_text:gsub (&#039;([Rr]omani)z&#039;, &#039;%1s&#039;) or title_text;	-- gb eng when engvar specifies gb eng; us eng else&lt;br /&gt;
		return title_wrapper_make (title_text, table.concat (out_t), &#039;span&#039;);	-- wrap with a tool-tip span and done&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; V A L I D A T E _ T E X T &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This function checks the content of args.text and returns empty string if nothing is amiss else it returns an&lt;br /&gt;
error message.  The tests are for empty or missing text and for improper or disallowed use of apostrophe markup.&lt;br /&gt;
&lt;br /&gt;
Italic rendering is controlled by the |italic= template parameter so italic markup should never appear in args.text&lt;br /&gt;
either as &#039;&#039;itself&#039;&#039; or as &#039;&#039;&#039;&#039;&#039;bold italic&#039;&#039;&#039;&#039;&#039; unless |italic=unset or |italic=invert.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function validate_text (template, args)&lt;br /&gt;
	if not is_set (args.text) then&lt;br /&gt;
		return make_error_msg (&#039;no text&#039;, args, template);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.text:find (&amp;quot;%f[\&#039;]\&#039;\&#039;\&#039;\&#039;%f[^\&#039;]&amp;quot;) or args.text:find (&amp;quot;\&#039;\&#039;\&#039;\&#039;\&#039;[\&#039;]+&amp;quot;) then	-- because we&#039;re looking, look for 4 appostrophes or 6+ appostrophes&lt;br /&gt;
		return make_error_msg (&#039;text has malformed markup&#039;, args, template);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local style = args.italic;&lt;br /&gt;
&lt;br /&gt;
	if (&#039;unset&#039; ~= style) and (&#039;invert&#039; ~=style) then&lt;br /&gt;
		if args.text:find (&amp;quot;%f[\&#039;]\&#039;\&#039;%f[^\&#039;]&amp;quot;) or args.text:find (&amp;quot;%f[\&#039;]\&#039;\&#039;\&#039;\&#039;\&#039;%f[^\&#039;]&amp;quot;) then	-- italic but not bold, or bold italic&lt;br /&gt;
			return make_error_msg (&#039;text has italic markup&#039;, args, template);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; R E N D E R _ M A I N T &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
render mainenance messages and categories&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function render_maint (nocat)&lt;br /&gt;
	local maint = {};&lt;br /&gt;
	&lt;br /&gt;
	if 0 &amp;lt; #maint_msgs then														-- when there are maintenance messages&lt;br /&gt;
		table.insert (maint, table.concat ({&#039;&amp;lt;span class=&amp;quot;lang-comment&amp;quot; style=&amp;quot;font-style: normal; display: none; color: #33aa33; margin-left: 0.3em;&amp;quot;&amp;gt;&#039;}));	-- opening &amp;lt;span&amp;gt; tag&lt;br /&gt;
		for _, msg in ipairs (maint_msgs) do&lt;br /&gt;
			table.insert (maint, table.concat ({msg, &#039; &#039;}));					-- add message strings&lt;br /&gt;
		end&lt;br /&gt;
		table.insert (maint, &#039;&amp;lt;/span&amp;gt;&#039;);										-- close the span&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if (0 &amp;lt; #maint_cats) and (0 == namespace) and not nocat then				-- when there are maintenance categories; article namespace only&lt;br /&gt;
		for _, cat in ipairs (maint_cats) do&lt;br /&gt;
			table.insert (maint, table.concat ({&#039;[[Category:&#039;, cat, &#039;]]&#039;}));	-- format and add the categories&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return table.concat (maint);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; P R O T O _ P R E F I X &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
for proto languages, text is prefixed with a splat.  We do that here as a flag for make_text_html() so that a splat&lt;br /&gt;
will be rendered outside of italic markup (if used).  If the first character in text here is already a splat, we&lt;br /&gt;
do nothing&lt;br /&gt;
&lt;br /&gt;
proto_param is boolean or nil; true adds splat prefix regardless of language name; false removes and / or inhibits&lt;br /&gt;
regardless of language name; nil does nothing; presumes that the value in text is correct but removes extra splac&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function proto_prefix (text, language_name, proto_param)&lt;br /&gt;
	if false == proto_param then												-- when forced by |proto=no&lt;br /&gt;
		return text:gsub (&#039;^%**&#039;, &#039;&#039;);											-- return text without splat prefix regardless of language name or existing splat prefix in text&lt;br /&gt;
	elseif (language_name:find (&#039;^Proto%-&#039;) or (true == proto_param)) then		-- language is a proto or forced by |proto=yes&lt;br /&gt;
		return text:gsub (&#039;^%**&#039;, &#039;*&#039;);											-- prefix proto-language text with a splat; also removes duplicate prefixing splats&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return text:gsub (&#039;^%*+&#039;, &#039;*&#039;);												-- return text unmolested except multiple splats reduced to one splat&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H A S _ P O E M _ T A G &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
looks for a poem strip marker in text; returns true when found; false else&lt;br /&gt;
&lt;br /&gt;
auto-italic detection disabled when text has poem stripmarker because it is not possible for this code to know&lt;br /&gt;
the content that will replace the stripmarker.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function has_poem_tag (text)&lt;br /&gt;
	return text:find (&#039;\127[^\127]*UNIQ%-%-poem%-[%a%d]+%-QINU[^\127]*\127&#039;) and true or false;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H T M L _ T A G _ S E L E C T &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Inspects content of and selectively trims text.  Returns text and the name of an appropriate html tag for text.&lt;br /&gt;
&lt;br /&gt;
If text contains:&lt;br /&gt;
	\n\n	text has implied &amp;lt;p&amp;gt;..&amp;lt;/p&amp;gt; tags - trim leading and trailing whitespace and return &lt;br /&gt;
If text begins with list markup:&lt;br /&gt;
	\n*		unordered&lt;br /&gt;
	\n;		definition&lt;br /&gt;
	\n:		definition&lt;br /&gt;
	\n#		ordered&lt;br /&gt;
trim all leading whitespace except  \n and trim all trailing whitespace&lt;br /&gt;
&lt;br /&gt;
If text contains &amp;lt;poem&amp;gt;...&amp;lt;/poem&amp;gt; stripmarker, return text unmodified and choose &amp;lt;div&amp;gt;..&amp;lt;/div&amp;gt; tags because &lt;br /&gt;
the stripmarker is replaced with text wrapped in &amp;lt;div&amp;gt;..&amp;lt;/div&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
If the text contains any actual &amp;lt;div&amp;gt;...&amp;lt;/div&amp;gt; tags, then it&#039;s again returned unmodified and &amp;lt;div&amp;gt;...&amp;lt;/div&amp;gt;&lt;br /&gt;
tags are used to wrap it, to prevent div/span inversion.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function html_tag_select (text)&lt;br /&gt;
	local tag;&lt;br /&gt;
	&lt;br /&gt;
	if has_poem_tag (text) then													-- contains poem stripmarker (we can&#039;t know the content of that)&lt;br /&gt;
		tag = &#039;div&#039;;															-- poem replacement is in div tags so lang must use div tags&lt;br /&gt;
	elseif text:find (&#039;&amp;lt;div&#039;) then												-- reductive; if the text contains a div tag, we must use div tags&lt;br /&gt;
		tag = &#039;div&#039;;&lt;br /&gt;
	elseif mw.text.trim (text):find (&#039;\n\n+&#039;) then								-- contains implied p tags&lt;br /&gt;
		text = mw.text.trim (text);												-- trim leading and trailing whitespace characters&lt;br /&gt;
		tag = &#039;div&#039;;															-- must be div because span may not contain p tags (added later by MediaWiki); poem replacement is in div tags&lt;br /&gt;
	elseif text:find (&#039;\n[%*:;%#]&#039;) then										-- if text has list markup&lt;br /&gt;
		text = text:gsub (&#039;^[\t\r\f ]*&#039;, &#039;&#039;):gsub (&#039;%s*$&#039;, &#039;&#039;);					-- trim all whitespace except leading newline character &#039;\n&#039;&lt;br /&gt;
		tag = &#039;div&#039;;															-- must be div because span may not contain ul, dd, dl, ol tags (added later by MediaWiki)&lt;br /&gt;
	else&lt;br /&gt;
		text = mw.text.trim (text);												-- plain text&lt;br /&gt;
		tag = &#039;span&#039;;															-- so span is fine&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return text, tag;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; V A L I D A T E _ P R O T O &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
validates value assigned to |proto=; permitted values are yes and no; yes returns as true, no returns as false,&lt;br /&gt;
empty string (or parameter omitted) returns as nil; any other value returns as nil with a second return value of&lt;br /&gt;
true indicating that some other value has been assigned to |proto=&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function validate_proto (proto_param)&lt;br /&gt;
	if &#039;yes&#039; == proto_param then&lt;br /&gt;
		return true;&lt;br /&gt;
	elseif &#039;no&#039; == proto_param then&lt;br /&gt;
		return false;&lt;br /&gt;
	elseif is_set (proto_param) then&lt;br /&gt;
		return nil, true;														-- |proto= something other than &#039;yes&#039; or &#039;no&#039;&lt;br /&gt;
	else&lt;br /&gt;
		return nil;																-- missing or empty&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G U A G E _ N A M E _ G E T &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
common function to return language name from the data set according to IETF tag&lt;br /&gt;
&lt;br /&gt;
returns language name if found in data tables; nil else&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function language_name_get (ietf, code, cat)&lt;br /&gt;
	ietf = ietf:lower();														-- ietf:lower() because format_ietf_tag() returns mixed case&lt;br /&gt;
	&lt;br /&gt;
	local name;																	-- remains nil if not found&lt;br /&gt;
	&lt;br /&gt;
	if override_table[ietf] then												-- look for whole IETF tag in override table&lt;br /&gt;
		name = override_table[ietf];&lt;br /&gt;
	elseif override_table[code] then											-- not there so try basic language tag&lt;br /&gt;
		name = override_table[code];&lt;br /&gt;
	elseif lang_table[code] then												-- shift to iana active tag/name table&lt;br /&gt;
		name = lang_table[code];&lt;br /&gt;
	elseif lang_dep_table[code] then											-- try the iana deprecated tag/name table&lt;br /&gt;
		name = lang_dep_table[code];&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if lang_dep_table[code] and cat then										-- because deprecated code may have been overridden to en.wiki preferred name&lt;br /&gt;
		table.insert (maint_cats, table.concat ({&#039;Lang and lang-xx using deprecated ISO 639 codes|&#039;, code}));&lt;br /&gt;
		table.insert (maint_msgs, table.concat ({&#039;code: &#039;, code, &#039; is deprecated&#039;}));&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return name;																-- name from data tables or nil&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E X T _ S C R I P T _ M A T C H _ T E X T &amp;gt;----------------------------------&lt;br /&gt;
&lt;br /&gt;
IETF script subtag should match the script of the &amp;lt;text&amp;gt;.  This module does not attempt to know all scripts and&lt;br /&gt;
what they look like.  It does know what Latn script look like so when &amp;lt;text&amp;gt; is written using other than the Latn&lt;br /&gt;
script, the IETF script, if present, should not be Latn.&lt;br /&gt;
&lt;br /&gt;
Conversely, when &amp;lt;text&amp;gt; is written using the Latn script, the IETF script, if present, should be Latn.&lt;br /&gt;
&lt;br /&gt;
returns an error message when mismatch detected; nil else&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function text_script_match_test (script, is_latn_text)&lt;br /&gt;
&lt;br /&gt;
--error (script)&lt;br /&gt;
	if is_set (script) then														-- don&#039;t bother with the rest of this if &amp;lt;script&amp;gt; is nil or empty string&lt;br /&gt;
		if is_latn_text then													-- when text is wholly Latn script&lt;br /&gt;
			if (&#039;Latn&#039; ~= script and &#039;latn&#039; ~= script) then						-- but a non-Latn script is specified&lt;br /&gt;
				return &#039;Latn text/non-Latn script subtag mismatch&#039;;				-- emit an error message&lt;br /&gt;
			end&lt;br /&gt;
		else																	-- when text is not wholly Latn script&lt;br /&gt;
			if (&#039;Latn&#039; == script or &#039;latn&#039; == script) then						-- but Latn script is specified&lt;br /&gt;
				return &#039;Non-latn text/Latn script subtag mismatch&#039;;				-- emit an error message&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ L A N G &amp;gt;--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
entry point for {{lang}}&lt;br /&gt;
&lt;br /&gt;
there should be no reason to set parameters in the {{lang}} {{#invoke:}}&lt;br /&gt;
	&amp;lt;includeonly&amp;gt;{{#invoke:lang|lang}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
parameters are received from the template&#039;s frame (parent frame)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _lang (args)&lt;br /&gt;
	local out = {};&lt;br /&gt;
	local language_name;														-- used to make category names&lt;br /&gt;
	local category_name;														-- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set&lt;br /&gt;
	local subtags = {};															-- IETF subtags script, region, variant, and private&lt;br /&gt;
	local code;																	-- the language code&lt;br /&gt;
	local msg;																	-- for error messages&lt;br /&gt;
	local tag = &#039;span&#039;;															-- initial value for make_text_html()&lt;br /&gt;
	local template = args.template or templates.lang;&lt;br /&gt;
&lt;br /&gt;
	maint_cats = {};															-- initialize because when this module required into another module, these only declared once so only initialzed once&lt;br /&gt;
	maint_msgs = {};&lt;br /&gt;
	&lt;br /&gt;
	validate_cat_args (args);													-- determine if categorization should be suppressed&lt;br /&gt;
&lt;br /&gt;
	if args[1] and args.code then&lt;br /&gt;
		return make_error_msg (&#039;conflicting: {{{1}}} and |code=&#039;, args, template);&lt;br /&gt;
	else&lt;br /&gt;
		args.code = args[1] or args.code;										-- prefer args.code&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args[2] and args.text then&lt;br /&gt;
		return make_error_msg (&#039;conflicting: {{{2}}} and |text=&#039;, args, template);&lt;br /&gt;
	else&lt;br /&gt;
		args.text = args[2] or args.text;										-- prefer args.text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--	msg = parameter_validate (args, templates.lang);&lt;br /&gt;
--	if msg then&lt;br /&gt;
--		return make_error_msg (msg, args, templates.lang);&lt;br /&gt;
--	end&lt;br /&gt;
&lt;br /&gt;
	msg = validate_text (template, args);										-- ensure that |text= is set&lt;br /&gt;
	if is_set (msg) then														-- msg is an already-formatted error message&lt;br /&gt;
		return msg;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	args.text, tag = html_tag_select (args.text);								-- inspects text; returns appropriate html tag with text trimmed accordingly&lt;br /&gt;
&lt;br /&gt;
	args.rtl = args.rtl == &#039;yes&#039;;												-- convert to boolean: &#039;yes&#039; -&amp;gt; true, other values -&amp;gt; false&lt;br /&gt;
&lt;br /&gt;
	args.proto, msg = validate_proto (args.proto);								-- return boolean, or nil, or nil and error message flag&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg (table.concat ({&#039;invalid |proto=: &#039;, args.proto}), args, template);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code);	-- |script=, |region=, |variant= not supported because they should be part of args.code ({{{1}}} in {{lang}})&lt;br /&gt;
&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg ( msg, args, template);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local is_latn_text = unicode.is_Latin (args.text);							-- make a boolean&lt;br /&gt;
&lt;br /&gt;
	msg = text_script_match_test (subtags.script, is_latn_text)&lt;br /&gt;
	if msg then																	-- if an error detected then there is an error message&lt;br /&gt;
		return make_error_msg (msg, args, template);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.italic, msg = validate_italic (args);&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg (msg, args, template);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if nil == args.italic then													-- nil when |italic= absent or not set or |italic=default; args.italic controls&lt;br /&gt;
		if (&#039;latn&#039; == subtags.script) or								 		-- script is latn&lt;br /&gt;
			(this_wiki_lang_tag ~= code and not is_set (subtags.script) and not has_poem_tag (args.text) and is_latn_text) then -- text not this wiki&#039;s language, no script specified and not in poem markup but is wholly latn script (auto-italics)&lt;br /&gt;
				args.italic = &#039;italic&#039;;											-- DEFAULT for {{lang}} templates is upright; but if latn script set for font-style:italic&lt;br /&gt;
		else&lt;br /&gt;
			args.italic = &#039;inherit&#039;;											-- italic not set; script not latn; inherit current style&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if is_set (subtags.script) then												-- if script set, override rtl setting&lt;br /&gt;
		if in_array (subtags.script, lang_data.rtl_scripts) then&lt;br /&gt;
			args.rtl = true;													-- script is an rtl script&lt;br /&gt;
		else&lt;br /&gt;
			args.rtl = false;													-- script is not an rtl script&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private);	-- format to recommended subtag styles&lt;br /&gt;
	language_name = language_name_get (args.code, code, true);					-- get language name; try ietf tag first, then code w/o variant then code w/ variant&lt;br /&gt;
&lt;br /&gt;
	if &#039;invert&#039; == args.italic and &#039;span&#039; == tag then							-- invert only supported for in-line content&lt;br /&gt;
		args.text = invert_italics (args.text)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.text = proto_prefix (args.text, language_name, args.proto);			-- prefix proto-language text with a splat&lt;br /&gt;
&lt;br /&gt;
	table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, language_name));&lt;br /&gt;
	table.insert (out, make_category (code, language_name, args.nocat));&lt;br /&gt;
	table.insert (out, render_maint (args.nocat));								-- maintenance messages and categories&lt;br /&gt;
&lt;br /&gt;
	return table.concat (out);													-- put it all together and done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
entry point for {{lang}}&lt;br /&gt;
&lt;br /&gt;
there should be no reason to set parameters in the {{lang}} {{#invoke:}}&lt;br /&gt;
	&amp;lt;includeonly&amp;gt;{{#invoke:lang|lang}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
parameters are received from the template&#039;s frame (parent frame)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function lang (frame)&lt;br /&gt;
	local args_t = getArgs (frame, {												-- this code so that we can detect and handle wiki list markup in text&lt;br /&gt;
		valueFunc = function (key, value)&lt;br /&gt;
			if 2 == key or &#039;text&#039; == key then									-- the &#039;text&#039; parameter; do not trim wite space&lt;br /&gt;
				return value;													-- return untrimmed &#039;text&#039;&lt;br /&gt;
			elseif value then													-- all other values: if the value is not nil&lt;br /&gt;
				value = mw.text.trim (value);									-- trim whitespace&lt;br /&gt;
				if &#039;&#039; ~= value then												-- empty string when value was only whitespace&lt;br /&gt;
					return value;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return nil;															-- value was empty or contained only whitespace&lt;br /&gt;
		end																		-- end of valueFunc&lt;br /&gt;
		});&lt;br /&gt;
&lt;br /&gt;
	args_t.fn = nil;															-- unset because not supported but this function might have been called by {{lang|fn=lang|...}}&lt;br /&gt;
&lt;br /&gt;
	local msg = parameter_validate (args_t, templates.lang);					-- verify that all supplied parameters are supported by {{lang-??}}&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg (msg, args_t, templates.lang);					-- when template has unsupported params, abandon with error message&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return _lang (args_t);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T R A N S L A T I O N _ M A K E &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
stand-alone function to create literal translation of main text&lt;br /&gt;
&lt;br /&gt;
Also used by {{lang-x2}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function translation_make (args_t)&lt;br /&gt;
	local translation_t = {&#039;, &#039;};												-- initialize output&lt;br /&gt;
&lt;br /&gt;
	if &#039;none&#039; ~= args_t.label then												-- if we want a label&lt;br /&gt;
		table.insert (translation_t, &#039;&amp;lt;small&amp;gt;&#039;);								-- open the &amp;lt;small&amp;gt; html tag&lt;br /&gt;
		if &#039;no&#039; == args_t.link then&lt;br /&gt;
			table.insert (translation_t, &#039;&amp;lt;abbr title=&amp;quot;literal translation&amp;quot;&amp;gt;lit.&amp;lt;/abbr&amp;gt;&#039;);	-- unlinked form&lt;br /&gt;
		else&lt;br /&gt;
			table.insert (translation_t, make_wikilink (&#039;Literal translation&#039;, &#039;lit.&#039;));	-- linked form&lt;br /&gt;
		end&lt;br /&gt;
		table.insert (translation_t, &amp;quot;&amp;amp;thinsp;&amp;lt;/small&amp;gt;&amp;quot;);						-- close the &amp;lt;small&amp;gt; html tag&lt;br /&gt;
	end&lt;br /&gt;
	table.insert (translation_t, table.concat ({&#039;&amp;amp;#39;&#039;, args_t.translation, &#039;&amp;amp;#39;&#039;}));	-- use html entities to avoid wiki markup confusion&lt;br /&gt;
	return table.concat (translation_t);										-- make a big string and done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ L A N G _ X X &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
For the {{lang-??}} templates, the only parameter required to be set in the template is the language code.  All&lt;br /&gt;
other parameters can, usually should, be written in the template call.  For {{lang-??}} templates for languages&lt;br /&gt;
that can have multiple writing systems, it may be appropriate to set |script= as well.&lt;br /&gt;
&lt;br /&gt;
For each {{lang-??}} template choose the appropriate entry-point function so that this function knows the default&lt;br /&gt;
styling that should be applied to text.&lt;br /&gt;
&lt;br /&gt;
For normal, upright style:&lt;br /&gt;
	&amp;lt;includeonly&amp;gt;{{#invoke:lang|lang_xx_inherit|code=xx}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
For italic style:&lt;br /&gt;
	&amp;lt;includeonly&amp;gt;{{#invoke:lang|lang_xx_italic|code=xx}}&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All other parameters should be received from the template&#039;s frame (parent frame)&lt;br /&gt;
&lt;br /&gt;
Supported parameters are:&lt;br /&gt;
	|code = (required) the IANA language code&lt;br /&gt;
	|script = IANA script code; especially for use with languages that use multiple writing systems&lt;br /&gt;
	|region = IANA region code&lt;br /&gt;
	|variant = IANA variant code&lt;br /&gt;
	|text = (required) the displayed text in language specified by code&lt;br /&gt;
	|link = boolean false (&#039;no&#039;) does not link code-spcified language name to associated language article&lt;br /&gt;
	|rtl = boolean true (&#039;yes&#039;) identifies the language specified by code as a right-to-left language&lt;br /&gt;
	|nocat = boolean true (&#039;yes&#039;) inhibits normal categorization; error categories are not affected&lt;br /&gt;
	|cat = boolian false (&#039;no&#039;) opposite form of |nocat=&lt;br /&gt;
	|italic = boolean true (&#039;yes&#039;) renders displayed text in italic font; boolean false (&#039;no&#039;) renders displayed text in normal font; not set renders according to initial_style_state&lt;br /&gt;
	|lit = text that is a literal translation of text&lt;br /&gt;
	|label = &#039;none&#039; to suppress all labeling (language name, &#039;translit.&#039;, &#039;lit.&#039;)&lt;br /&gt;
				any other text replaces language-name label - automatic wikilinking disabled&lt;br /&gt;
	&lt;br /&gt;
	for those {{lang-??}} templates that support transliteration (those templates where |text= is not entirely latn script):&lt;br /&gt;
	|translit = text that is a transliteration of text&lt;br /&gt;
	|translit-std = the standard that applies to the transliteration&lt;br /&gt;
	|translit-script = ISO 15924 script name; falls back to code&lt;br /&gt;
&lt;br /&gt;
For {{lang-??}}, the positional parameters are:&lt;br /&gt;
	{{{1}}}	text&lt;br /&gt;
	{{{2}}}	transliterated text&lt;br /&gt;
	{{{3}}}	literal translation text&lt;br /&gt;
no other positional parameters are allowed&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _lang_xx (args, base_template)									-- base_template will be either of &#039;Langx&#039; or &#039;Lang-xx&#039;&lt;br /&gt;
	local out = {};&lt;br /&gt;
	local language_name;														-- used to make display text, article links&lt;br /&gt;
	local category_name;														-- same as language_name except that it retains any parenthetical disambiguators (if any) from the data set&lt;br /&gt;
	local subtags = {};															-- IETF subtags script, region, and variant&lt;br /&gt;
	local code;																	-- the language code&lt;br /&gt;
&lt;br /&gt;
	local translit_script_name;													-- name associated with IANA (ISO 15924) script code&lt;br /&gt;
	local translit;&lt;br /&gt;
	local translit_title;&lt;br /&gt;
	local msg;																	-- for error messages&lt;br /&gt;
	local tag = &#039;span&#039;;															-- initial value for make_text_html()&lt;br /&gt;
	local template = args.template or base_template;&lt;br /&gt;
&lt;br /&gt;
	maint_cats = {};															-- initialize because when this module required into another module, these only declared once so only initialzed once&lt;br /&gt;
	maint_msgs = {};&lt;br /&gt;
	&lt;br /&gt;
	local text_idx = (templates.langx == base_template) and 2 or 1;						-- for {{langx}} &#039;text&#039; positional parameter is &#039;2&#039;&lt;br /&gt;
	local translit_idx = (templates.langx == base_template) and 3 or 2;&lt;br /&gt;
	local xlate_idx = (templates.langx == base_template) and 4 or 3;&lt;br /&gt;
&lt;br /&gt;
	if args[text_idx] and args.text then&lt;br /&gt;
		return make_error_msg (&#039;conflicting: {{{&#039; .. text_idx .. &#039;}}} and |text=&#039;, args, template);&lt;br /&gt;
	else&lt;br /&gt;
		args.text = args[text_idx] or args.text;								-- prefer positional &#039;text&#039; parameter&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	msg = validate_text (template, args);										-- ensure that |text= is set, does not contain italic markup and is protected from improper bolding&lt;br /&gt;
	if is_set (msg) then&lt;br /&gt;
		return msg;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.text, tag = html_tag_select (args.text);								-- inspects text; returns appropriate html tag with text trimmed accordingly&lt;br /&gt;
&lt;br /&gt;
	if args[translit_idx] and args.translit then&lt;br /&gt;
		return make_error_msg (&#039;conflicting: {{{&#039;.. translit_idx .. &#039;}}} and |translit=&#039;, args, template);&lt;br /&gt;
	else&lt;br /&gt;
		args.translit = args[translit_idx] or args.translit						-- prefer positional &#039;translit&#039; parameter&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.engvar = lang_data.engvar_sel_t[args.engvar] or &#039;us_t&#039;;				-- either &#039;gb_t&#039; or &#039;us_t&#039; when |engvar= valid; &#039;us_t&#039; else&lt;br /&gt;
&lt;br /&gt;
	if args[xlate_idx] and (args.translation or args.lit) then&lt;br /&gt;
		return make_error_msg (&#039;conflicting: {{{&#039;.. xlate_idx ..&#039;}}} and |lit= or |translation=&#039;, args, template);&lt;br /&gt;
	elseif args.translation and args.lit then&lt;br /&gt;
		return make_error_msg (&#039;conflicting: |lit= and |translation=&#039;, args, template);&lt;br /&gt;
	else&lt;br /&gt;
		args.translation = args[xlate_idx] or args.translation or args.lit;		-- prefer positional &#039;translation&#039; parameter&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.links and args.link then&lt;br /&gt;
		return make_error_msg (&#039;conflicting: |links= and |link=&#039;, args, template);&lt;br /&gt;
	else&lt;br /&gt;
		args.link = args.link or args.links;									-- prefer args.link&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	validate_cat_args (args);													-- determine if categorization should be suppressed&lt;br /&gt;
&lt;br /&gt;
	args.rtl = args.rtl == &#039;yes&#039;;												-- convert to boolean: &#039;yes&#039; -&amp;gt; true, other values -&amp;gt; false&lt;br /&gt;
&lt;br /&gt;
	code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (args.code, args.script, args.region, args.variant);	-- private omitted because private&lt;br /&gt;
&lt;br /&gt;
	if msg then																	-- if an error detected then there is an error message&lt;br /&gt;
		return make_error_msg (msg, args, template);&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local is_latn_text = unicode.is_Latin (args.text);							-- make a boolean&lt;br /&gt;
&lt;br /&gt;
	msg = text_script_match_test (subtags.script, is_latn_text)&lt;br /&gt;
	if msg then																	-- if an error detected then there is an error message&lt;br /&gt;
		return make_error_msg (msg, args, template);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.italic, msg = validate_italic (args);&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg (msg, args, template);&lt;br /&gt;
	end&lt;br /&gt;
																				&lt;br /&gt;
	if templates.langx == base_template then											-- auto-italics  for {{langx}} templates; adapted from {{lang}} (no support for poem tag) &lt;br /&gt;
		if nil == args.italic then												-- nil when |italic= absent or not set or |italic=default; args.italic controls&lt;br /&gt;
			if (&#039;latn&#039; == subtags.script) or								 	-- script is latn&lt;br /&gt;
				(this_wiki_lang_tag ~= code and not is_set (subtags.script) and is_latn_text) then -- text is not this wiki&#039;s language, no script specified and is wholly latn script (auto-italics)&lt;br /&gt;
					args.italic = &#039;italic&#039;;										-- set font-style:italic&lt;br /&gt;
			else&lt;br /&gt;
				args.italic = &#039;inherit&#039;;										-- italic not set; script not latn; inherit current style&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	&lt;br /&gt;
	else																		-- {{lang-xx}} does not do auto italics; retained for those wikis that don&#039;t support {{langx}}&lt;br /&gt;
		if nil == args.italic then												-- args.italic controls&lt;br /&gt;
			if is_set (subtags.script) then&lt;br /&gt;
				if &#039;latn&#039; == subtags.script then&lt;br /&gt;
					args.italic = &#039;italic&#039;;										-- |script=Latn; set for font-style:italic&lt;br /&gt;
				else&lt;br /&gt;
					args.italic = initial_style_state;							-- italic not set; script is not latn; set for font-style:&amp;lt;initial_style_state&amp;gt;&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				args.italic = initial_style_state;								-- here when |italic= and |script= not set; set for font-style:&amp;lt;initial_style_state&amp;gt;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if is_set (subtags.script) then												-- if script set override rtl setting&lt;br /&gt;
		if in_array (subtags.script, lang_data.rtl_scripts) then&lt;br /&gt;
			args.rtl = true;													-- script is an rtl script&lt;br /&gt;
		else&lt;br /&gt;
			args.rtl = false;													-- script is not an rtl script&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.proto, msg = validate_proto (args.proto);								-- return boolean, or nil, or nil and error message flag&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg (table.concat ({&#039;invalid |proto=: &#039;, args.proto}), args, template);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private);	-- format to recommended subtag styles&lt;br /&gt;
	language_name = language_name_get (args.code, code, true);					-- get language name; try ietf tag first, then code w/o variant then code w/ variant&lt;br /&gt;
&lt;br /&gt;
	category_name = language_name;												-- category names retain IANA parenthetical diambiguators (if any)&lt;br /&gt;
	language_name = language_name:gsub (&#039;%s+%b()&#039;, &#039;&#039;);							-- remove IANA parenthetical disambiguators or qualifiers from names that have them&lt;br /&gt;
&lt;br /&gt;
	if args.label then&lt;br /&gt;
		if &#039;none&#039; ~= args.label then&lt;br /&gt;
			table.insert (out, table.concat ({args.label, &#039;: &#039;}));				-- custom label&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if &#039;no&#039; == args.link then&lt;br /&gt;
			table.insert (out, language_name);									-- language name without wikilink&lt;br /&gt;
		else&lt;br /&gt;
			if mw.ustring.find (language_name, &#039;languages&#039;, 1, true) then&lt;br /&gt;
				table.insert (out, make_wikilink (language_name));				-- collective language name uses simple wikilink&lt;br /&gt;
			elseif lang_data.article_name[args.code:lower()] then				-- is ietf tag in article name over ride?&lt;br /&gt;
				table.insert (out, make_wikilink (lang_data.article_name[args.code:lower()], language_name));	-- language name with wikilink from override data&lt;br /&gt;
			elseif lang_data.article_name[code] then							-- is language tag in article override&lt;br /&gt;
				table.insert (out, make_wikilink (lang_data.article_name[code], language_name));	-- language name with wikilink from override data&lt;br /&gt;
			else&lt;br /&gt;
				table.insert (out, make_wikilink (language_name .. &#039; language&#039;, language_name));	-- language name with wikilink&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		table.insert (out, &#039;: &#039;);												-- separator&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if &#039;invert&#039; == args.italic then&lt;br /&gt;
		args.text = invert_italics (args.text)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	args.text = proto_prefix (args.text, language_name, args.proto);			-- prefix proto-language text with a splat&lt;br /&gt;
&lt;br /&gt;
	table.insert (out, make_text_html (args.code, args.text, tag, args.rtl, args.italic, args.size, (&#039;none&#039; == args.label) and language_name or nil))&lt;br /&gt;
&lt;br /&gt;
	if is_set (args.translit) and not is_latn_text then							-- transliteration; not supported when args.text is wholly latn text (this is an imperfect test)&lt;br /&gt;
		table.insert (out, &#039;, &#039;);												-- comma to separate text from translit&lt;br /&gt;
		if &#039;none&#039; ~= args.label then&lt;br /&gt;
			table.insert (out, &#039;&amp;lt;small&amp;gt;&#039;);&lt;br /&gt;
			if script_table[args[&#039;translit-script&#039;]] then						-- when |translit-script= is set, try to use the script&#039;s name&lt;br /&gt;
				translit_script_name = script_table[args[&#039;translit-script&#039;]];&lt;br /&gt;
			else&lt;br /&gt;
				translit_script_name = language_name;							-- fall back on language name&lt;br /&gt;
			end&lt;br /&gt;
			translit_title = mw.title.makeTitle (0, table.concat ({&#039;Romanization of &#039;, translit_script_name}));		-- make a title object; no engvar, article titles use US spelling&lt;br /&gt;
			if translit_title.exists and (&#039;no&#039; ~= args.link) then&lt;br /&gt;
				table.insert (out, make_wikilink (&#039;Romanization of &#039; .. translit_script_name or language_name,&lt;br /&gt;
					substitute (&#039;$1&#039;, {lang_data.engvar_t[args.engvar][&#039;romanisz_pt&#039;]})) .. &#039;:&#039;);	-- make a wikilink if there is an article to link to; engvar the display text&lt;br /&gt;
&lt;br /&gt;
			else&lt;br /&gt;
				table.insert (out, substitute (&#039;$1:&#039;, {lang_data.engvar_t[args.engvar][&#039;romanisz_pt&#039;]}));	-- else plain text per engvar&lt;br /&gt;
&lt;br /&gt;
			end&lt;br /&gt;
			table.insert (out, &#039;&amp;amp;nbsp;&amp;lt;/small&amp;gt;&#039;);								-- close the small tag&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		translit = make_translit (args.code, language_name, args.translit, args[&#039;translit-std&#039;], args[&#039;translit-script&#039;], nil, args.engvar)&lt;br /&gt;
		if is_set (translit) then&lt;br /&gt;
			table.insert (out, translit);&lt;br /&gt;
		else&lt;br /&gt;
			return make_error_msg (table.concat ({&#039;invalid translit-std: \&#039;&#039;, args[&#039;translit-std&#039;] or &#039;[missing]&#039;}), args, template);&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if is_set (args.translation) then											-- translation (not supported in {{lang}})&lt;br /&gt;
		table.insert (out, translation_make (args));&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.insert (out, make_category (code, category_name, args.nocat));&lt;br /&gt;
	table.insert (out, render_maint(args.nocat));								-- maintenance messages and categories&lt;br /&gt;
&lt;br /&gt;
	return table.concat (out);													-- put it all together and done&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G _ X X _ A R G S _ G E T &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
common function to get args table from {{lang-??}} templates&lt;br /&gt;
&lt;br /&gt;
returns table of args&lt;br /&gt;
&lt;br /&gt;
text positional parameters are not trimmed here but are selectively trimmed at html_tag_select()&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function lang_xx_args_get (frame, base_template)&lt;br /&gt;
	local args_t = getArgs(frame,&lt;br /&gt;
		{&lt;br /&gt;
		parentFirst= true,														-- parameters in the template override parameters set in the {{#invoke:}}&lt;br /&gt;
		valueFunc = function (key, value)&lt;br /&gt;
			if ((templates.langx == base_template) and 2 or 1) == key then				-- the &#039;text&#039; positional parameter; 1 for {{lang-??}}, 2 for {{langx}}; do not trim wite space&lt;br /&gt;
				return value;													-- return untrimmed &#039;text&#039; positional parameter&lt;br /&gt;
			elseif value then													-- all other values: if the value is not nil&lt;br /&gt;
				value = mw.text.trim (value);									-- trim whitespace&lt;br /&gt;
				if &#039;&#039; ~= value then												-- empty string when value was only whitespace&lt;br /&gt;
					return value;&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			return nil;															-- value was empty or contained only whitespace&lt;br /&gt;
		end																		-- end of valueFunc&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	return args_t;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G _ X X _ I T A L I C &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point for those {{lang-??}} templates that call lang_xx_italic().  Sets the initial style state to italic.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function lang_xx_italic (frame)&lt;br /&gt;
	local args = lang_xx_args_get (frame, templates.langxx);&lt;br /&gt;
	args.fn = nil;																-- unset because not supported but this function might have been called by {{lang|fn=lang_xx_italic|...}}&lt;br /&gt;
	&lt;br /&gt;
	local msg = parameter_validate (args, templates.langxx);					-- verify that all supplied parameters are supported by {{lang-??}}&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg (msg, args, templates.langxx);					-- when template has unsupported params, abandon with error message&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	initial_style_state = &#039;italic&#039;;&lt;br /&gt;
	return _lang_xx (args, templates.langxx) .. &#039;[[Category:Pages using Lang-xx templates]]&#039;;	-- temporary category&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ L A N G _ X X _ I T A L I C &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point from another module.  Sets the initial style state to italic.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _lang_xx_italic (args)&lt;br /&gt;
	initial_style_state = &#039;italic&#039;;&lt;br /&gt;
	return _lang_xx (args, templates.langxx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G _ X X _ I N H E R I T &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point for those {{lang-??}} templates that call lang_xx_inherit().  Sets the initial style state to inherit.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function lang_xx_inherit (frame)&lt;br /&gt;
	local args = lang_xx_args_get (frame, templates.langxx);&lt;br /&gt;
	args.fn = nil;																-- unset because not supported but this function might have been called by {{lang|fn=lang_xx_inherit|...}}&lt;br /&gt;
&lt;br /&gt;
	local msg = parameter_validate (args, templates.langxx);					-- verify that all supplied parameters are supported by {{lang-??}}&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg (msg, args, templates.langxx);					-- when template has unsupported params, abandon with error message&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	initial_style_state = &#039;inherit&#039;;&lt;br /&gt;
	return _lang_xx (args, templates.langxx) .. &#039;[[Category:Pages using Lang-xx templates]]&#039;;	-- temporary category&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ L A N G _ X X _ I N H E R I T &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point from another module.  Sets the initial style state to inherit.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _lang_xx_inherit (args)&lt;br /&gt;
	initial_style_state = &#039;inherit&#039;;&lt;br /&gt;
	return _lang_xx (args, templates.langxx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ L A N G X &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point from another module.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _langx (args_t)&lt;br /&gt;
	local langx_data = mw.loadData (&#039;Module:Lang/langx&#039;);						-- get necessary data &lt;br /&gt;
	local rtl_t = langx_data.rtl_t;												-- get list of language tags for languages that are rendered right-to-left&lt;br /&gt;
--	local script_t = langx_data.script_t;										-- get list of language tags for {{lang-??}} templates that set |script=&amp;lt;something&amp;gt;; disabled because causes deprecated param message&lt;br /&gt;
	local link_t = langx_data.link_t;											-- get list of language tags for {{lang-??}} templates that set |link=&amp;lt;something&amp;gt;&lt;br /&gt;
	local size_t = langx_data.size_t;											-- get list of language tags for {{lang-??}} templates that set |size=&amp;lt;something&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	local msg = parameter_validate (args_t, templates.langx);&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg (msg, args_t, templates.langx);&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args_t.code = args_t[1] or args_t.code;										-- get the language tag; must be {{{1}}} or |code=&lt;br /&gt;
	if not args_t.code then&lt;br /&gt;
		return make_error_msg (&#039;missing language tag&#039;, args_t, templates.langx);&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	args_t.rtl = args_t.rtl or (rtl_t[args_t.code] and &#039;yes&#039;);					-- prefer |rtl= in template call, use rtl_t else&lt;br /&gt;
--	args_t.script = args_t.script or script_t[args_t.code];						-- prefer |script= in template call, use script_t else; disabled because causes deprecated param message&lt;br /&gt;
	args_t.link = args_t.link or link_t[args_t.code];							-- prefer |link= in template call, use link_t felse&lt;br /&gt;
	args_t.size = args_t.size or size_t[args_t.code];							-- prefer |size= in template call, use size_t else&lt;br /&gt;
	&lt;br /&gt;
	args_t[1] = nil;															-- unset to mimic {{lang-??}} templates which set |code=xx&lt;br /&gt;
&lt;br /&gt;
	local lang_subtag = args_t.code;											-- use only the base language subtag for unsupported tag test; some args_t.code are modified by |script= etc&lt;br /&gt;
	return _lang_xx (args_t, templates.langx);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L A N G X &amp;gt;--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Entry point for {{langx}}.&lt;br /&gt;
&lt;br /&gt;
this function calls _lang_xx() to render non-English text.  The {{lang-??}} templates have three positional paramters&lt;br /&gt;
but {{langx}} has four:&lt;br /&gt;
&lt;br /&gt;
				|  1	|  2		|  3		|  4	&lt;br /&gt;
	{{lang-xx	|&amp;lt;text&amp;gt;	|&amp;lt;transl&amp;gt;	|&amp;lt;xlate&amp;gt;			}}&lt;br /&gt;
	{{langx		|&amp;lt;tag&amp;gt;	|&amp;lt;text&amp;gt;		|&amp;lt;transl&amp;gt;	|&amp;lt;xlate&amp;gt;	}}&lt;br /&gt;
&lt;br /&gt;
The calls to lang_xx_args_get() and _lang_xx() use &#039;Langx&#039; as a flag for those functions to select the proper&lt;br /&gt;
positional parameters.&lt;br /&gt;
&lt;br /&gt;
{{lang-??}} depends on the calling template to select &#039;inherit&#039; or &#039;italic&#039; to establish the default rendering.&lt;br /&gt;
&lt;br /&gt;
{{langx}} can&#039;t do that.  The initial version of {{langx}} relied on a list of language tags (inherit_t in ~/langx)&lt;br /&gt;
scraped from those {{lang-??}} templates that call lang_xx_inherit() to render text in upright font.  Langx now&lt;br /&gt;
uses auto-italics code adapted from {{lang}} (doesn&#039;t support poem tags)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function langx (frame)&lt;br /&gt;
	local args_t = lang_xx_args_get (frame, templates.langx);					-- get the arguments; &#039;Langx&#039; is the &amp;lt;base_template&amp;gt; used to decide which positional param is &#039;text&#039;, &#039;translit&#039;, &#039;lit&#039;&lt;br /&gt;
	&lt;br /&gt;
	return _langx (args_t);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ I S _ I E T F _ T A G &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns true when a language name associated with IETF language tag exists; nil else.  IETF language tag must be valid.&lt;br /&gt;
&lt;br /&gt;
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.&lt;br /&gt;
&lt;br /&gt;
Module entry point from another module&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _is_ietf_tag (tag)												-- entry point when this module is require()d into another&lt;br /&gt;
	local c, s, r, v, p, err;													-- code, script, region, variant, private, error message&lt;br /&gt;
	c, s, r, v, p, err = get_ietf_parts (tag);									-- disassemble tag into constituent part and validate&lt;br /&gt;
&lt;br /&gt;
	return ((c and not err) and true) or nil;									-- return true when code portion has a value without error message; nil else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ I E T F _ T A G &amp;gt;--------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_ietf_tag (frame)&lt;br /&gt;
	return _is_ietf_tag (getArgs (frame)[1]);									-- args[1] is the ietf language tag to be tested; also get parent frame&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ I E T F _ T A G _ F R A M E &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}; same as is_ietf_tag() except does not get parameters from the parent&lt;br /&gt;
(template) frame.  This function not useful when called by {{lang|fn=is_ietf_tag_frame|&amp;lt;tag&amp;gt;}} because &amp;lt;tag&amp;gt;&lt;br /&gt;
is in the parent frame.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_ietf_tag_frame (frame)&lt;br /&gt;
	return _is_ietf_tag (getArgs (frame, {frameOnly = true,})[1]);				-- args[1] is the ietf language tag to be tested; do not get parent frame&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ N A M E _ F R O M _ T A G &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns language name associated with IETF language tag if valid; error message else.&lt;br /&gt;
&lt;br /&gt;
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.&lt;br /&gt;
&lt;br /&gt;
Set invoke&#039;s |link= parameter to yes to get wikilinked version of the language name.&lt;br /&gt;
&lt;br /&gt;
Module entry point from another module&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _name_from_tag (args)&lt;br /&gt;
	local subtags = {};															-- IETF subtags script, region, variant, and private&lt;br /&gt;
	local raw_code = args[1];													-- save a copy of the input IETF subtag&lt;br /&gt;
	local link = &#039;yes&#039; == args[&#039;link&#039;];											-- make a boolean&lt;br /&gt;
	local label = args.label;&lt;br /&gt;
	local code;																	-- the language code&lt;br /&gt;
	local msg;																	-- gets an error message if IETF language tag is malformed or invalid&lt;br /&gt;
	local language_name = &#039;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);&lt;br /&gt;
	if msg then&lt;br /&gt;
		local template = (args[&#039;template&#039;] and table.concat ({&#039;{{&#039;, args[&#039;template&#039;], &#039;}}: &#039;})) or &#039;&#039;;	-- make template name (if provided by the template)&lt;br /&gt;
		return table.concat ({&#039;&amp;lt;span style=\&amp;quot;color:#d33\&amp;quot;&amp;gt;Error: &#039;, template, msg, &#039;&amp;lt;/span&amp;gt;&#039;});&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private);	-- format to recommended subtag styles; private omitted because private&lt;br /&gt;
	language_name = language_name_get (raw_code, code);							-- get language name; try ietf tag first, then code w/o variant then code w/ variant&lt;br /&gt;
&lt;br /&gt;
	language_name = language_name:gsub (&#039;%s+%b()&#039;, &#039;&#039;);							-- remove IANA parenthetical disambiguators or qualifiers from names that have them&lt;br /&gt;
&lt;br /&gt;
	if link then																-- when |link=yes, wikilink the language name&lt;br /&gt;
		if mw.ustring.find (language_name, &#039;languages&#039;, 1, true) then&lt;br /&gt;
			language_name = make_wikilink (language_name, label);				-- collective language name uses simple wikilink&lt;br /&gt;
		elseif lang_data.article_name[raw_code:lower()] then					-- is ietf tag in article name override?&lt;br /&gt;
			language_name = make_wikilink (lang_data.article_name[raw_code:lower()], label or language_name);	-- language name with wikilink from override data&lt;br /&gt;
		elseif lang_data.article_name[code] then								-- is language tag in article name override?&lt;br /&gt;
			language_name = make_wikilink (lang_data.article_name[code], label or language_name);	-- language name with wikilink from override data&lt;br /&gt;
		else&lt;br /&gt;
			language_name = make_wikilink (language_name .. &#039; language&#039;, label or language_name);	-- language name with wikilink&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return language_name;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; N A M E _ F R O M _ T A G &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function name_from_tag (frame)											-- entry point from an {{#invoke:Lang|name_from_tag|&amp;lt;ietf tag&amp;gt;|link=&amp;lt;yes&amp;gt;|template=&amp;lt;template name&amp;gt;}}&lt;br /&gt;
	return _name_from_tag (getArgs(frame))										-- pass-on the args table, nothing else; getArgs() so we also get parent frame&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ T A G _ F R O M _ N A M E &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns the ietf language tag associated with the language name.  Spelling of language name must be correct&lt;br /&gt;
according to the spelling in the source tables.  When a standard language name has a parenthetical disambiguator,&lt;br /&gt;
that disambiguator must be omitted (they are not present in the data name-to-tag tables).&lt;br /&gt;
&lt;br /&gt;
Module entry point from another module&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _tag_from_name (args)											-- entry point from another module&lt;br /&gt;
	local msg;&lt;br /&gt;
&lt;br /&gt;
	if args[1] and &#039;&#039; ~= args[1] then&lt;br /&gt;
		local data = mw.loadData (&#039;Module:Lang/tag from name&#039;);					-- get the reversed data tables TODO: change when going live&lt;br /&gt;
		local lang = args[1]:lower();											-- allow any-case for the language name (speeling must till be correct)&lt;br /&gt;
		local tag = data.rev_override_table[lang] or data.rev_lang_table[lang] or data.rev_lang_dep_table[lang];	-- get the code; look first in the override then in the standard&lt;br /&gt;
&lt;br /&gt;
		if tag then&lt;br /&gt;
			return tag, true;													-- language name found so return tag and done; second return used by is_lang_name()&lt;br /&gt;
		else&lt;br /&gt;
			msg = &#039;language: &#039; .. args[1] .. &#039; not found&#039;						-- language name not found, error message&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		msg = &#039;missing language name&#039;											-- language name not provided, error message&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local template = &#039;&#039;;&lt;br /&gt;
	if args.template and &#039;&#039; ~= args.template then&lt;br /&gt;
		template = table.concat ({&#039;{{&#039;, args[&#039;template&#039;], &#039;}}: &#039;});				-- make template name (if provided by the template)&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat ({&#039;&amp;lt;span style=\&amp;quot;color:#d33\&amp;quot;&amp;gt;Error: &#039;, template, msg, &#039;&amp;lt;/span&amp;gt;&#039;});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T A G _ F R O M _ N A M E &amp;gt;----------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function tag_from_name (frame)											-- entry point from an {{#invoke:Lang|tag_from_name|&amp;lt;language name&amp;gt;|link=&amp;lt;yes&amp;gt;|template=&amp;lt;template name&amp;gt;}}&lt;br /&gt;
	local result, _ = _tag_from_name (getArgs(frame))							-- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by is_lang_name()&lt;br /&gt;
	return result;		&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ L A N G _ N A M E &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function is_lang_name (frame)&lt;br /&gt;
	local _, result = _tag_from_name (getArgs(frame))							-- pass-on the args table, nothing else; getArgs() so we also get parent frame; supress second return used by tag_from_name()&lt;br /&gt;
	return result and true or nil;		&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; _ T R A N S L &amp;gt;----------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from another module&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _transl (args)&lt;br /&gt;
	local title_table = lang_data.translit_title_table;							-- table of transliteration standards and the language codes and scripts that apply to those standards&lt;br /&gt;
	local language_name;														-- language name that matches language code; used for tool tip&lt;br /&gt;
	local translit;																-- transliterated text to display&lt;br /&gt;
	local script;																-- IANA script&lt;br /&gt;
	local msg;																	-- for when called functions return an error message&lt;br /&gt;
&lt;br /&gt;
	maint_cats = {};															-- initialize because when this module required into another module, these only declared once so only initialzed once&lt;br /&gt;
	maint_msgs = {};&lt;br /&gt;
	&lt;br /&gt;
	if is_set (args[3]) then													-- [3] set when {{transliteration|code|standard|text}}&lt;br /&gt;
		args.text = args[3];													-- get the transliterated text&lt;br /&gt;
		args.translit_std = args[2] and args[2]:lower();						-- get the standard; lower case for table indexing&lt;br /&gt;
&lt;br /&gt;
		if not title_table[args.translit_std] then&lt;br /&gt;
			return make_error_msg (table.concat ({&#039;unrecognized transliteration standard: &#039;, args.translit_std}), args, &#039;Transliteration&#039;);&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		if is_set (args[2]) then												-- [2] set when {{transliteration|code|text}}&lt;br /&gt;
			args.text = args[2];												-- get the transliterated text&lt;br /&gt;
		else&lt;br /&gt;
			if args[1] and (args[1]:match (&#039;^%a%a%a?%a?$&#039;) or					-- args[2] missing; is args[1] a language or script tag or is it the transliterated text?&lt;br /&gt;
				args[1]:match (&#039;^%a%a%a?%-x%-&#039;)) then							-- or is args[1] a private-use tag&lt;br /&gt;
					return make_error_msg (&#039;no text&#039;, args, &#039;Transliteration&#039;);	-- args[1] is a code so we&#039;re missing text&lt;br /&gt;
			else&lt;br /&gt;
				args.text = args[1];											-- args[1] is not a code so we&#039;re missing that; assign args.text for error message&lt;br /&gt;
				return make_error_msg (&#039;missing language / script code&#039;, args, &#039;Transliteration&#039;);&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if is_set (args[1]) then													-- IANA language code used for html lang= attribute; or ISO 15924 script code&lt;br /&gt;
		if args[1]:match (&#039;^%a%a%a?%a?$&#039;) or args[1]:match (&#039;^%a%a%a?%-x%-&#039;) then	-- args[1] has correct form?&lt;br /&gt;
			args.code = args[1]:lower();										-- use the language/script code; only (2, 3, or 4 alpha characters) or private-use; lower case because table indexes are lower case&lt;br /&gt;
		else&lt;br /&gt;
			return make_error_msg (table.concat ({&#039;unrecognized language / script code: &#039;, args[1]}), args, &#039;Transliteration&#039;);	-- invalid language / script code&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		return make_error_msg (&#039;missing language / script code&#039;, args, &#039;Transliteration&#039;);	-- missing language / script code so quit&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.italic, msg = validate_italic (args);&lt;br /&gt;
	if msg then&lt;br /&gt;
		return make_error_msg (msg, args, &#039;Transliteration&#039;);&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if &#039;italic&#039; == args.italic then												-- &#039;italic&#039; when |italic=yes; because that is same as absent or not set and |italic=default&lt;br /&gt;
		args.italic = nil;														-- set to nil; &lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	args.engvar = lang_data.engvar_sel_t[args.engvar] or &#039;us_t&#039;;				-- either &#039;gb_t&#039; or &#039;us_t&#039; when |engvar= valid; &#039;us_t&#039; else&lt;br /&gt;
&lt;br /&gt;
	if override_table[args.code] then											-- is code a language code defined in the override table?&lt;br /&gt;
		language_name = override_table[args.code];&lt;br /&gt;
		args.code = args.code:match (&#039;^%a%a%a?&#039;);								-- if private use, strip all but language subtag&lt;br /&gt;
	elseif lang_table[args.code] then											-- is code a language code defined in the standard language code tables?&lt;br /&gt;
		language_name = lang_table[args.code];&lt;br /&gt;
	elseif lang_dep_table[args.code] then										-- is code a language code defined in the deprecated language code tables?&lt;br /&gt;
		language_name = lang_dep_table[args.code];&lt;br /&gt;
	elseif script_table[args.code] then											-- if here, code is not a language code; is it a script code?&lt;br /&gt;
		language_name = script_table[args.code];&lt;br /&gt;
		script = args.code;														-- code was an ISO 15924 script so use that instead&lt;br /&gt;
		args.code = &#039;&#039;;															-- unset because not a language code&lt;br /&gt;
	else&lt;br /&gt;
		return make_error_msg (table.concat ({&#039;unrecognized language / script code: &#039;, args.code}), args, &#039;Transliteration&#039;);	-- invalid language / script code&lt;br /&gt;
	end&lt;br /&gt;
																				-- here only when all parameters passed to make_translit() are valid&lt;br /&gt;
	return make_translit (args.code, language_name, args.text, args.translit_std, script, args.italic, args.engvar);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T R A N S L &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function transl (frame)&lt;br /&gt;
	return _transl (getArgs(frame));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C A T E G O R Y _ F R O M _ T A G &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns category name associated with IETF language tag if valid; error message else&lt;br /&gt;
&lt;br /&gt;
All code combinations supported by {{lang}} and the {{lang-??}} templates are supported by this function.&lt;br /&gt;
&lt;br /&gt;
Module entry point from another module&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function _category_from_tag (args_t)&lt;br /&gt;
	local subtags = {};															-- IETF subtags script, region, variant, and private&lt;br /&gt;
	local raw_code = args_t[1];													-- save a copy of the input IETF subtag&lt;br /&gt;
	local link = &#039;yes&#039; == args_t.link;											-- make a boolean&lt;br /&gt;
	local label = args_t.label;&lt;br /&gt;
	local code;																	-- the language code&lt;br /&gt;
	local msg;																	-- gets an error message if IETF language tag is malformed or invalid&lt;br /&gt;
	local category_name = &#039;&#039;;&lt;br /&gt;
	&lt;br /&gt;
	code, subtags.script, subtags.region, subtags.variant, subtags.private, msg = get_ietf_parts (raw_code);&lt;br /&gt;
	if msg then&lt;br /&gt;
		local template = (args_t.template and table.concat ({&#039;{{&#039;, args_t.template, &#039;}}: &#039;})) or &#039;&#039;;	-- make template name (if provided by the template)&lt;br /&gt;
		return table.concat ({&#039;&amp;lt;span style=&amp;quot;color:#d33&amp;quot;&amp;gt;Error: &#039;, template, msg, &#039;&amp;lt;/span&amp;gt;&#039;});&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	raw_code = format_ietf_tag (code, subtags.script, subtags.region, subtags.variant, subtags.private);	-- format to recommended subtag styles; private omitted because private&lt;br /&gt;
	category_name = language_name_get (raw_code, code);							-- get language name; try ietf tag first, then code w/o variant then code w/ variant&lt;br /&gt;
	category_name = make_category (code, category_name, nil, true):gsub (&#039;[%[%]]&#039;, &#039;&#039;);&lt;br /&gt;
&lt;br /&gt;
	if link then&lt;br /&gt;
		return table.concat ({&#039;[[:&#039;, category_name, &#039;]]&#039;});&lt;br /&gt;
	else&lt;br /&gt;
		return category_name;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C A T E G O R Y _ F R O M _ T A G &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Module entry point from an {{#invoke:}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function category_from_tag (frame)										-- entry point from an {{#invoke:Lang|category_from_tag|&amp;lt;ietf tag&amp;gt;|template=&amp;lt;template name&amp;gt;}}&lt;br /&gt;
	return _category_from_tag (getArgs (frame));								-- pass-on the args table, nothing else; getArgs() so we also get parent frame&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N S &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	category_from_tag = category_from_tag,&lt;br /&gt;
	lang = lang,																-- entry point for {{lang}}&lt;br /&gt;
	langx = langx,																-- entry point for {{langx}}&lt;br /&gt;
	lang_xx_inherit = lang_xx_inherit,											-- entry points for {{lang-??}}&lt;br /&gt;
	lang_xx_italic = lang_xx_italic,&lt;br /&gt;
	is_ietf_tag = is_ietf_tag,&lt;br /&gt;
	is_ietf_tag_frame = is_ietf_tag_frame,&lt;br /&gt;
	is_lang_name = is_lang_name,&lt;br /&gt;
	tag_from_name = tag_from_name,												-- returns ietf tag associated with language name&lt;br /&gt;
	name_from_tag = name_from_tag,												-- used for template documentation; possible use in ISO 639 name from code templates&lt;br /&gt;
	transl = transl,															-- entry point for {{transliteration}}&lt;br /&gt;
	&lt;br /&gt;
	_category_from_tag = _category_from_tag,									-- entry points when this module is require()d into other modules&lt;br /&gt;
	_lang = _lang,&lt;br /&gt;
	_langx = _langx,&lt;br /&gt;
	_lang_xx_inherit = _lang_xx_inherit,&lt;br /&gt;
	_lang_xx_italic = _lang_xx_italic,&lt;br /&gt;
	_is_ietf_tag = _is_ietf_tag,&lt;br /&gt;
	get_ietf_parts = get_ietf_parts,&lt;br /&gt;
	_tag_from_name = _tag_from_name, &lt;br /&gt;
	_name_from_tag = _name_from_tag,&lt;br /&gt;
	_transl = _transl,&lt;br /&gt;
	_translation_make = translation_make,&lt;br /&gt;
	};&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Template:Nowrap&amp;diff=9</id>
		<title>Template:Nowrap</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Template:Nowrap&amp;diff=9"/>
		<updated>2024-11-24T02:02:55Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span class=&amp;quot;nowrap&amp;quot;&amp;gt;{{{1}}}&amp;lt;/span&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Categories go on the /doc page; interwikis go to Wikidata. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Template:Infobox_country&amp;diff=7</id>
		<title>Template:Infobox country</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Template:Infobox_country&amp;diff=7"/>
		<updated>2024-11-24T02:02:55Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: 1 revision imported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Infobox|infoboxTemplate&lt;br /&gt;
|templatestyles = Template:Infobox country/styles.css&lt;br /&gt;
| bodyclass = ib-country vcard&lt;br /&gt;
| aboveclass = adr&lt;br /&gt;
| above = &lt;br /&gt;
{{#if:{{{conventional_long_name|}}}{{{native_name|}}}{{{name|}}}&lt;br /&gt;
     | {{#if:{{{conventional_long_name|}}}&lt;br /&gt;
               |&amp;lt;div class=&amp;quot;fn org country-name&amp;quot;&amp;gt;{{{conventional_long_name|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
        }}{{#if:{{{native_name|}}}{{{name|}}}&lt;br /&gt;
               |&amp;lt;div class=&amp;quot;ib-country-names&amp;quot;&amp;gt;&amp;lt;!--&lt;br /&gt;
                 --&amp;gt;{{br separated entries&lt;br /&gt;
                     |{{{native_name|}}}&lt;br /&gt;
                     |{{#if:{{{name|}}}&lt;br /&gt;
                       |&amp;lt;div class=&amp;quot;ib-country-name-style fn org country-name&amp;quot;&amp;gt;{{{name|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
                 }}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
               }}&amp;lt;!--&lt;br /&gt;
           --&amp;gt;{{#ifeq:{{{micronation|}}}|yes&lt;br /&gt;
               |&amp;lt;span class=&amp;quot;fn org&amp;quot;&amp;gt;[[Micronation]]&amp;lt;/span&amp;gt;&lt;br /&gt;
        }}&lt;br /&gt;
     |&amp;lt;div class=&amp;quot;fn org country-name&amp;quot;&amp;gt;{{PAGENAMEBASE}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
| subheader = {{#if:{{{life_span|}}} | {{{life_span}}} | {{#if:{{{year_start|}}}|{{{year_start}}}{{#if:{{{year_end|}}}|–{{{year_end}}} }} }} }}&lt;br /&gt;
&lt;br /&gt;
| image1 = {{#if:{{{image_coat|}}}{{{image_symbol|}}}{{{image_flag|}}}{{{image_flag2|}}}&lt;br /&gt;
  |{{infobox country/imagetable&lt;br /&gt;
    |image1a = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag|}}}|sizedefault=125px|size={{{flag_width|{{{flag_size|}}}}}}|maxsize=250|border={{yesno |{{{flag_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag|{{{flag_alt|}}}}}}|title=Flag of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}&lt;br /&gt;
    |image1b = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{{image_flag2|}}}|sizedefault=125px|size={{{flag_width|}}}|maxsize=250|border={{yesno |{{{flag2_border|}}}|yes=yes|blank=yes}}|alt={{{alt_flag2|{{{flag_alt2|}}}}}}}}&lt;br /&gt;
    |caption1= {{#ifexist:{{if empty |{{{flag_type_article|}}} |{{{flag|}}} | {{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{flag_type_article|}}} |{{{flag|}}} |{{if empty |{{{flag_type|}}} |Flag}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }}|{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}}]] |{{if empty |{{{flag_caption|}}} |{{{flag_type|}}} |Flag}} }}&lt;br /&gt;
    |image2  = {{#invoke:InfoboxImage|InfoboxImage|suppressplaceholder={{main other||no}}|image={{if empty|{{{image_coat|}}}|{{{image_symbol|}}}}} |size={{{symbol_width|{{{coa_size|}}}}}}|sizedefault=85px|alt={{#if:{{{image_coat|}}}|{{{alt_coat|{{{coat_alt|}}}}}}|{{{alt_symbol|}}}}}|title={{{symbol_type|Coat of arms}}} of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}}}}}}}}}}}}}&lt;br /&gt;
    |caption2= {{#ifexist:{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} |[[{{if empty |{{{symbol_type_article|}}} |{{{symbol|}}} |{{if empty |{{{symbol_type|}}} |Coat of arms}} of {{if empty |{{{linking_name|}}} |{{{common_name|}}} |{{{name|}}} |{{PAGENAME}} }} }} | {{if empty |{{{symbol_type|}}} |Coat of arms}}]] |{{if empty |{{{symbol_type|}}} |Coat of arms}} }}&lt;br /&gt;
    }} }}&lt;br /&gt;
&lt;br /&gt;
| data1 = {{#if:{{{national_motto|}}}{{{motto|}}}&lt;br /&gt;
     |&#039;&#039;&#039;Motto:&amp;amp;nbsp;&#039;&#039;&#039;{{if empty|{{{motto|}}}|{{{national_motto|}}}}}&amp;lt;!--&lt;br /&gt;
           --&amp;gt;{{#if:{{{englishmotto|}}}|&amp;lt;div&amp;gt;{{{englishmotto}}}&amp;lt;/div&amp;gt; }}&lt;br /&gt;
    }}&lt;br /&gt;
&lt;br /&gt;
| class2 = anthem&lt;br /&gt;
| data2 = {{#if:{{{national_anthem|}}}{{{anthem|}}}&lt;br /&gt;
        |&#039;&#039;&#039;Anthem:&#039;&#039;&#039;&amp;amp;nbsp;{{if empty|{{{national_anthem|}}}|{{{anthem|}}}}}&lt;br /&gt;
        }}{{#if:{{{anthems|}}}&lt;br /&gt;
        |&#039;&#039;&#039;Anthems:&#039;&#039;&#039;&amp;amp;nbsp;{{{anthems}}}&lt;br /&gt;
        }}{{#if:{{{royal_anthem|}}}&lt;br /&gt;
        |&lt;br /&gt;
&amp;lt;div class=&amp;quot;ib-country-anthem&amp;quot;&amp;gt;&#039;&#039;&#039;[[Royal anthem]]:&#039;&#039;&#039;&amp;amp;nbsp;{{{royal_anthem}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
        }}{{#if:{{{flag_anthem|}}}&lt;br /&gt;
        |&lt;br /&gt;
&amp;lt;div class=&amp;quot;ib-country-anthem&amp;quot;&amp;gt;&#039;&#039;&#039;[[Flag anthem]]:&#039;&#039;&#039;&amp;amp;nbsp;{{{flag_anthem}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
        }}{{#if:{{{national_march|}}}&lt;br /&gt;
        |&lt;br /&gt;
&amp;lt;div class=&amp;quot;ib-country-anthem&amp;quot;&amp;gt;&#039;&#039;&#039;National march:&#039;&#039;&#039;&amp;amp;nbsp;{{{national_march}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
        }}{{#if:{{{territorial_anthem|}}}&lt;br /&gt;
        |&lt;br /&gt;
&amp;lt;div class=&amp;quot;ib-country-anthem&amp;quot;&amp;gt;&#039;&#039;&#039;Territorial anthem:&#039;&#039;&#039;&amp;amp;nbsp;{{{territorial_anthem}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
        }}{{#if:{{{regional_anthem|}}}&lt;br /&gt;
        |&lt;br /&gt;
&amp;lt;div class=&amp;quot;ib-country-anthem&amp;quot;&amp;gt;&#039;&#039;&#039;Regional anthem:&#039;&#039;&#039;&amp;amp;nbsp;{{{regional_anthem}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
        }}{{#if:{{{state_anthem|}}}&lt;br /&gt;
        |&lt;br /&gt;
&amp;lt;div class=&amp;quot;ib-country-anthem&amp;quot;&amp;gt;&#039;&#039;&#039;State anthem:&#039;&#039;&#039;&amp;amp;nbsp;{{{state_anthem}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
        }}{{#if:{{{march|}}}&lt;br /&gt;
        |&lt;br /&gt;
&amp;lt;div class=&amp;quot;ib-country-anthem&amp;quot;&amp;gt;&#039;&#039;&#039;March:&#039;&#039;&#039;&amp;amp;nbsp;{{{march}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
        }}&lt;br /&gt;
&lt;br /&gt;
| data3 = {{#if:{{{other_symbol|}}}{{{text_symbol|}}}&lt;br /&gt;
     |{{#if:{{{other_symbol_type|}}}{{{text_symbol_type|}}}&lt;br /&gt;
               | &#039;&#039;&#039;{{if empty|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}&#039;&#039;&#039;&amp;lt;br/&amp;gt;}}&amp;lt;!--&lt;br /&gt;
                 --&amp;gt;{{if empty|{{{other_symbol|}}}|{{{text_symbol|}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
&lt;br /&gt;
| data4 = {{#if:{{{image_map|}}}&lt;br /&gt;
   |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map|}}}|size={{{map_width|{{{image_map_size|}}}}}}|upright=1.15|alt={{{alt_map|{{{image_map_alt|}}}}}}|title={{{map_caption|{{{image_map_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#if:{{{map_caption|{{{image_map_caption|}}}}}}|&amp;lt;div class=&amp;quot;ib-country-map-caption&amp;quot;&amp;gt;{{{map_caption|{{{image_map_caption|}}}}}}&amp;lt;/div&amp;gt;}} }}&lt;br /&gt;
&lt;br /&gt;
| data5 = {{#if:{{{image_map2|}}}&lt;br /&gt;
   |{{#invoke:InfoboxImage|InfoboxImage|image={{{image_map2|}}}|size={{{map2_width|{{{image_map2_size|}}}}}}|upright=1.15|alt={{{alt_map2|{{{image_map2_alt|}}}}}}|title={{{map_caption2|{{{image_map2_caption|Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}} }}} }}&amp;lt;!--&lt;br /&gt;
  --&amp;gt;{{#if:{{{map_caption2|{{{image_map2_caption|}}}}}}|&amp;lt;div class=&amp;quot;ib-country-map-caption&amp;quot;&amp;gt;{{{map_caption2|{{{image_map2_caption|}}}}}}&amp;lt;/div&amp;gt;}} }}&lt;br /&gt;
&lt;br /&gt;
| label6 = Status&lt;br /&gt;
| data6 = {{#if:{{{status|}}}|{{Infobox country/status text|status={{{status|}}}|status_text={{{status_text|}}}|empire={{{empire|}}}|year_end={{{year_end|}}}|year_exile_start={{{year_exile_start|}}}|year_exile_end={{{year_exile_end|}}} }} }}&lt;br /&gt;
&lt;br /&gt;
| label7 = Location&lt;br /&gt;
| data7 = {{{loctext|}}}&lt;br /&gt;
&lt;br /&gt;
| label8 = {{#if:{{{capital_type|}}} | {{{capital_type}}} | Capital }}{{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital&lt;br /&gt;
                         |capital&amp;lt;!--&lt;br /&gt;
                      --&amp;gt;|{{#switch:{{{capital}}}&lt;br /&gt;
                           | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital&lt;br /&gt;
                           | {{{largest_city|}}}{{{largest_settlement|}}} = capital&lt;br /&gt;
                           | not capital&lt;br /&gt;
                          }}&amp;lt;!--&lt;br /&gt;
                    --&amp;gt;}}|capital &amp;lt;!--&lt;br /&gt;
    (#ifeq:)--&amp;gt;|&amp;lt;!------------------------------------------&lt;br /&gt;
                     capital is largest_city/_settlement:&lt;br /&gt;
                 -------------------------------------------&lt;br /&gt;
             --&amp;gt;&amp;lt;div class=&amp;quot;ib-country-largest&amp;quot;&amp;gt;and {{{largest_settlement_type|largest city}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
              }}&lt;br /&gt;
| data8  = {{#if:{{{capital|}}}|{{{capital}}}{{#if:{{{coordinates|}}}|&amp;lt;br/&amp;gt;{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass9 = {{#if:{{{capital|}}}|mergedrow}}&lt;br /&gt;
| label9 = Capital-in-exile&lt;br /&gt;
| data9 = {{#ifexist:{{{capital_exile|}}}|[[{{{capital_exile|}}}]]|{{{capital_exile|}}}}}&lt;br /&gt;
&lt;br /&gt;
| rowclass10 = {{#if:{{{capital|}}}|mergedrow}}&lt;br /&gt;
| label10 = {{#if:{{{admin_center_type|}}}| {{{admin_center_type}}} | Administrative&amp;amp;nbsp;center }}&lt;br /&gt;
| data10 = {{#switch:{{{admin_center|}}}&lt;br /&gt;
  |capital | =&lt;br /&gt;
  |[[{{{capital|}}}]] =&lt;br /&gt;
  |{{{capital|}}} =&lt;br /&gt;
  |#default = {{{admin_center}}}{{#if:{{{capital|}}}||{{#if:{{{coordinates|}}}|&amp;lt;br/&amp;gt;{{#invoke:Coordinates|coordinsert|{{{coordinates}}}|type:city}}}} }} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass11 = {{#if:{{{capital|}}}{{{admin_center|}}}|mergedbottomrow}}&lt;br /&gt;
| label11 = Largest {{{largest_settlement_type|city}}}&lt;br /&gt;
| data11 = {{#ifeq: {{#ifeq:{{{largest_city|}}}{{{largest_settlement|}}}|capital&lt;br /&gt;
                         |capital&amp;lt;!--&lt;br /&gt;
                      --&amp;gt;|{{#switch:{{{capital}}}&lt;br /&gt;
                           | [[{{{largest_city|}}}{{{largest_settlement|}}}]] = capital&lt;br /&gt;
                           | {{{largest_city|}}}{{{largest_settlement|}}} = capital&lt;br /&gt;
                           | not capital&lt;br /&gt;
                          }}&amp;lt;!--&lt;br /&gt;
                    --&amp;gt;}}|capital &amp;lt;!--&lt;br /&gt;
    (#ifeq:)--&amp;gt;|&amp;lt;!-- nothing already appears above --&amp;gt;&lt;br /&gt;
               | {{if empty| {{{largest_city|}}} | {{{largest_settlement|}}} }}&lt;br /&gt;
               }}&lt;br /&gt;
&lt;br /&gt;
| rowclass12 = mergedtoprow&lt;br /&gt;
| label12 = Official&amp;amp;nbsp;languages&lt;br /&gt;
| data12 = {{{official_languages|}}}&lt;br /&gt;
| rowclass13 = mergedrow&lt;br /&gt;
| label13 = &amp;lt;span class=&amp;quot;ib-country-lang&amp;quot;&amp;gt;{{#if:{{{recognized_languages|}}}|Recognized|Recognised}}&amp;amp;nbsp;languages&amp;lt;/span&amp;gt;&lt;br /&gt;
| data13 = {{if empty| {{{recognized_languages|}}} | {{{recognised_languages|}}} }}&lt;br /&gt;
| rowclass14 = mergedrow&lt;br /&gt;
| label14 = &amp;lt;span class=&amp;quot;ib-country-lang&amp;quot;&amp;gt;{{#if:{{{recognized_national_languages|}}}|Recognized|Recognised}} national&amp;amp;nbsp;languages&amp;lt;/span&amp;gt;&lt;br /&gt;
| data14 = {{if empty| {{{recognized_national_languages|}}} | {{{recognised_national_languages|}}} | {{{national_languages|}}} }}&lt;br /&gt;
| rowclass15 = mergedrow&lt;br /&gt;
| label15 = &amp;lt;span class=&amp;quot;ib-country-lang&amp;quot;&amp;gt;{{#if:{{{recognized_regional_languages|}}}|Recognized|Recognised}} regional&amp;amp;nbsp;languages&amp;lt;/span&amp;gt;&lt;br /&gt;
| data15 = {{if empty| {{{recognized_regional_languages|}}} | {{{recognised_regional_languages|}}} | {{{regional_languages|}}} }}&lt;br /&gt;
| label16 = Common&amp;amp;nbsp;languages&lt;br /&gt;
| data16  = {{{common_languages|}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| rowclass17 = {{#ifeq:{{{languages2_sub|}}}|yes&lt;br /&gt;
           |{{#ifeq:{{{languages_sub|}}}|yes |mergedrow}}&lt;br /&gt;
           |{{#ifeq:{{{languages_sub|}}}|yes |mergedbottomrow}} }}&lt;br /&gt;
| label17 ={{#ifeq:{{{languages_sub|}}}|yes&lt;br /&gt;
  |&amp;lt;div class=&amp;quot;ib-country-lang&amp;quot;&amp;gt;{{if empty| {{{languages_type|}}} | Other&amp;amp;nbsp;languages }}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |{{if empty| {{{languages_type|}}} | Other&amp;amp;nbsp;languages }}&lt;br /&gt;
  }}&lt;br /&gt;
| data17 = {{{languages|}}}&lt;br /&gt;
&lt;br /&gt;
| rowclass18 = {{#ifeq:{{{languages2_sub|}}}|yes |mergedbottomrow}}&lt;br /&gt;
| label18 = {{#ifeq:{{{languages2_sub|}}}|yes&lt;br /&gt;
  |&amp;lt;div class=&amp;quot;ib-country-lang&amp;quot;&amp;gt;{{if empty|{{{languages2_type|}}} | Other&amp;amp;nbsp;languages }}&amp;lt;/div&amp;gt;&lt;br /&gt;
  |{{if empty|{{{languages2_type|}}} | Other&amp;amp;nbsp;languages }}&lt;br /&gt;
  }}&lt;br /&gt;
| data18 = {{{languages2|}}}&lt;br /&gt;
  &lt;br /&gt;
| label19 = [[Ethnic group|Ethnic&amp;amp;nbsp;groups]] &amp;lt;!--&lt;br /&gt;
           --&amp;gt;{{#if:{{{ethnic_groups_year|}}} |&amp;lt;div class=&amp;quot;ib-country-ethnic&amp;quot;&amp;gt; ({{{ethnic_groups_year}}}){{{ethnic_groups_ref|}}}&amp;lt;/div&amp;gt;|&amp;lt;div class=&amp;quot;ib-country-ethnic&amp;quot;&amp;gt;{{{ethnic_groups_ref|}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
| data19 = {{{ethnic_groups|}}}&lt;br /&gt;
&lt;br /&gt;
| label20 = Religion &amp;lt;!--&lt;br /&gt;
           --&amp;gt;{{#if:{{{religion_year|}}} |&amp;lt;div class=&amp;quot;ib-country-religion&amp;quot;&amp;gt; ({{{religion_year}}}){{{religion_ref|}}}&amp;lt;/div&amp;gt;|&amp;lt;div class=&amp;quot;ib-country-religion&amp;quot;&amp;gt;{{{religion_ref|}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
| data20 = {{{religion|}}}&lt;br /&gt;
&lt;br /&gt;
| label21 = [[Demonym|Demonym(s)]]&lt;br /&gt;
| data21 = {{#if:{{{demonym|}}}&lt;br /&gt;
  |{{#ifexist:{{{demonym}}} people&lt;br /&gt;
     | [[{{{demonym}}} people|{{{demonym}}}]]&lt;br /&gt;
     | {{{demonym}}}&lt;br /&gt;
    }}&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
| label22 = Type&lt;br /&gt;
| data22 = {{{org_type|}}}&lt;br /&gt;
&lt;br /&gt;
| label23 = {{if empty|{{{membership_type|}}} | Membership }}&lt;br /&gt;
| data23 = {{{membership|}}}&lt;br /&gt;
&lt;br /&gt;
| label24 = {{#if:{{{government_type|}}}&lt;br /&gt;
     | {{#if:{{{politics_link|}}}&lt;br /&gt;
               | [[{{{politics_link}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]&amp;lt;!--&lt;br /&gt;
            --&amp;gt;| {{#ifexist:Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}&lt;br /&gt;
                  | [[Politics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|{{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}]]&amp;lt;!--&lt;br /&gt;
               --&amp;gt;| {{#ifeq:{{{micronation|}}}|yes|Organizational structure|Government}}&amp;lt;!--&lt;br /&gt;
              --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
           --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
      --&amp;gt;}}&lt;br /&gt;
| data24 = {{{government_type|}}}&lt;br /&gt;
&lt;br /&gt;
| header25 = {{#if:{{{government_type|}}} || {{#if:{{{leader_title1|}}}{{{leader_name1|}}}&lt;br /&gt;
        | {{#if:{{{name|}}}{{{membership|}}}&lt;br /&gt;
           | &amp;lt;!--template being used for geopolitical org:--&amp;gt;Leaders          &lt;br /&gt;
           | &amp;lt;!--template being used for country/territory: --&amp;gt;Government &lt;br /&gt;
          }} &lt;br /&gt;
        }} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass26 = mergedrow&lt;br /&gt;
| data26 = {{#if:{{{leader_name1|}}}|{{Infobox country/multirow|{{{leader_title1|}}} |{{{leader_name1|}}} |{{{leader_title2|}}} |{{{leader_name2|}}} |{{{leader_title3|}}} |{{{leader_name3|}}} |{{{leader_title4|}}} |{{{leader_name4|}}} |{{{leader_title5|}}} |{{{leader_name5|}}} |{{{leader_title6|}}} |{{{leader_name6|}}} |{{{leader_title7|}}} |{{{leader_name7|}}} |{{{leader_title8|}}} |{{{leader_name8|}}} |{{{leader_title9|}}} |{{{leader_name9|}}} |{{{leader_title10|}}} |{{{leader_name10|}}} |{{{leader_title11|}}} |{{{leader_name11|}}} |{{{leader_title12|}}} |{{{leader_name12|}}} |{{{leader_title13|}}} |{{{leader_name13|}}} |{{{leader_title14|}}} |{{{leader_name14|}}} |{{{leader_title15|}}} |{{{leader_name15|}}} }} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass27 = mergedrow&lt;br /&gt;
| label27 = {{#if:{{{title_leader|}}}| {{{title_leader}}} }}&lt;br /&gt;
| data27 = {{#if:{{{title_leader|}}}|&amp;amp;nbsp;}}&lt;br /&gt;
| rowclass28 = mergedrow&lt;br /&gt;
| data28 = {{#if:{{{year_leader1|}}} | {{Infobox country/multirow|{{{year_leader1|}}} |{{{leader1|}}} |{{{year_leader2|}}} |{{{leader2|}}} |{{{year_leader3|}}} |{{{leader3|}}} |{{{year_leader4|}}} |{{{leader4|}}} |{{{year_leader5|}}} |{{{leader5|}}} |{{{year_leader6|}}} |{{{leader6|}}} |{{{year_leader7|}}} |{{{leader7|}}} |{{{year_leader8|}}} |{{{leader8|}}} |{{{year_leader9|}}} |{{{leader9|}}} |{{{year_leader10|}}} |{{{leader10|}}} |{{{year_leader11|}}} |{{{leader11|}}}|{{{year_leader12|}}} |{{{leader12|}}}|{{{year_leader13|}}} |{{{leader13|}}}|{{{year_leader14|}}} |{{{leader14|}}}|{{{year_leader15|}}} |{{{leader15|}}} }} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass29 = mergedrow&lt;br /&gt;
| label29 = {{#if:{{{title_representative|}}}| {{{title_representative}}} }}&lt;br /&gt;
| data29 = {{#if:{{{title_representative|}}}|&amp;amp;nbsp;}}&lt;br /&gt;
| rowclass30 = mergedrow&lt;br /&gt;
| data30 = {{#if:{{{year_representative1|}}}|{{Infobox country/multirow|{{{year_representative1|}}} |{{{representative1|}}} |{{{year_representative2|}}} |{{{representative2|}}} |{{{year_representative3|}}} |{{{representative3|}}} |{{{year_representative4|}}} |{{{representative4|}}} |{{{year_representative5|}}} |{{{representative5|}}}|{{{year_representative6|}}} |{{{representative6|}}}|{{{year_representative7|}}} |{{{representative7|}}}|{{{year_representative8|}}} |{{{representative8|}}} }} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass31 = mergedrow&lt;br /&gt;
| label31 = {{#if:{{{title_deputy|}}}|{{{title_deputy}}} }}&lt;br /&gt;
| data31 = {{#if:{{{title_deputy|}}}|&amp;amp;nbsp;}}&lt;br /&gt;
| rowclass32 = mergedrow&lt;br /&gt;
| data32 = {{#if:{{{year_deputy1|}}}|{{Infobox country/multirow|{{{year_deputy1|}}} |{{{deputy1|}}} |{{{year_deputy2|}}} |{{{deputy2|}}} |{{{year_deputy3|}}} |{{{deputy3|}}} |{{{year_deputy4|}}} |{{{deputy4|}}} |{{{year_deputy5|}}} |{{{deputy5|}}} |{{{year_deputy6|}}} |{{{deputy6|}}}|{{{year_deputy7|}}} |{{{deputy7|}}}|{{{year_deputy8|}}} |{{{deputy8|}}}|{{{year_deputy9|}}} |{{{deputy9|}}}|{{{year_deputy10|}}} |{{{deputy10|}}}|{{{year_deputy11|}}} |{{{deputy11|}}}|{{{year_deputy12|}}} |{{{deputy12|}}}|{{{year_deputy13|}}} |{{{deputy13|}}}|{{{year_deputy14|}}} |{{{deputy14|}}}|{{{year_deputy15|}}} |{{{deputy15|}}} }} }}&lt;br /&gt;
&lt;br /&gt;
| label40 = Legislature&lt;br /&gt;
| data40 = {{{legislature|}}}&lt;br /&gt;
| rowclass41 = mergedrow&lt;br /&gt;
| label41 = &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;{{#if:{{{type_house1|}}}|{{{type_house1}}}|[[Upper house]]}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data41 = {{{upper_house|{{{house1|}}}}}}&lt;br /&gt;
| rowclass42 = mergedbottomrow&lt;br /&gt;
| label42 = &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;{{#if:{{{type_house2|}}}|{{{type_house2}}}|[[Lower house]]}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data42 = {{{lower_house|{{{house2|}}}}}}&lt;br /&gt;
&lt;br /&gt;
| rowclass43 = {{#if:{{{established_event1|}}} |mergedtoprow}}&lt;br /&gt;
| header43 = {{#if:{{{established_event1|}}}{{{sovereignty_type|}}}&lt;br /&gt;
   |{{#if:{{{sovereignty_type|}}}&lt;br /&gt;
      | {{{sovereignty_type}}}&amp;lt;!--&lt;br /&gt;
               --&amp;gt;{{#if:{{{sovereignty_note|}}} |&amp;amp;nbsp;&amp;lt;div class=&amp;quot;ib-country-sovereignty&amp;quot;&amp;gt;{{{sovereignty_note}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
      | {{#if:{{{established|}}}| | Establishment }}&lt;br /&gt;
  }} }}&lt;br /&gt;
&lt;br /&gt;
| label44 = Establishment&lt;br /&gt;
| data44 = {{#if:{{{sovereignty_type|}}}&lt;br /&gt;
      |&lt;br /&gt;
      |{{{established|}}}&lt;br /&gt;
      }}&lt;br /&gt;
&lt;br /&gt;
| label45 = {{#if:{{{era|}}}|Historical era|History}}&lt;br /&gt;
| data45  = {{#if:{{{era|}}} |{{#ifexist:{{{era|}}}|[[{{{era}}}]]|{{{era}}}}} | {{#if:{{{date_start|}}}{{{year_start|}}}|&amp;amp;nbsp;}}}}&lt;br /&gt;
&lt;br /&gt;
| rowclass46 = {{#if:{{{established_event1|}}} |mergedrow |mergedbottomrow}}&lt;br /&gt;
| data46 = {{#if:{{{established_date1|}}}|{{Infobox country/multirow |{{{established_event1|}}} |{{{established_date1||}}} |{{{established_event2|}}} |{{{established_date2||}}} |{{{established_event3|}}} |{{{established_date3|}}} |{{{established_event4|}}} |{{{established_date4|}}} |{{{established_event5|}}} |{{{established_date5|}}} |{{{established_event6|}}} |{{{established_date6|}}} |{{{established_event7|}}} |{{{established_date7|}}} |{{{established_event8|}}} |{{{established_date8|}}} |{{{established_event9|}}} |{{{established_date9|}}} |{{{established_event10|}}} |{{{established_date10|}}} |{{{established_event11|}}} |{{{established_date11|}}} |{{{established_event12|}}} |{{{established_date12|}}} |{{{established_event13|}}} |{{{established_date13|}}} |{{{established_event14|}}} |{{{established_date14|}}} |{{{established_event15|}}} |{{{established_date15|}}} |{{{established_event16|}}} |{{{established_date16|}}} |{{{established_event17|}}} |{{{established_date17|}}} |{{{established_event18|}}} |{{{established_date18|}}} |{{{established_event19|}}} |{{{established_date19|}}} |{{{established_event20|}}} |{{{established_date20|}}} }} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass47 = {{#if:{{{date_start|}}}{{{year_start|}}} |mergedrow |mergedbottomrow}}&lt;br /&gt;
| data47 = {{#if:{{{date_start|}}}{{{year_start|}}}|{{Infobox country/multirow |{{{event_pre|}}} |{{{date_pre|}}}  |{{if empty|{{{event_start|}}}|Established}} |{{{date_start|}}} {{{year_start|}}}  |{{{event1|}}} |{{{date_event1|}}}  |{{{event2|}}} |{{{date_event2|}}}  |{{{event3|}}} |{{{date_event3|}}}  |{{{event4|}}} |{{{date_event4|}}}  |{{{event5|}}} |{{{date_event5|}}}  |{{{event6|}}} |{{{date_event6|}}}|{{{event7|}}} |{{{date_event7|}}}|{{{event8|}}} |{{{date_event8|}}}|{{{event9|}}} |{{{date_event9|}}}|{{{event10|}}} |{{{date_event10|}}}  |{{if empty|{{{event_end|}}}|Disestablished}} |{{{date_end|}}} {{{year_end|}}}  |{{{event_post|}}} |{{{date_post|}}} }} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass60 = mergedtoprow&lt;br /&gt;
| header60 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}&lt;br /&gt;
  | {{#if:{{{area_link|}}}&lt;br /&gt;
               | [[{{{area_link}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]&lt;br /&gt;
               | {{#ifexist:Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}&lt;br /&gt;
                  | [[Geography of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}]]&lt;br /&gt;
                  | Area {{#ifeq:{{{micronation|}}}|yes|claimed|}}&amp;lt;!--&lt;br /&gt;
              --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
           --&amp;gt;}} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass61 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}&lt;br /&gt;
| label61 = &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;{{{area_label|Total}}}{{{FR_foot4|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data61 = {{#if:{{{area_km2|}}}{{{area_ha|}}}{{{area_sq_mi|}}}{{{area_acre|}}}&lt;br /&gt;
  |{{#if:{{{area_km2|}}}{{{area_sq_mi|}}}&lt;br /&gt;
     |{{convinfobox|{{{area_km2|}}}|km2|{{{area_sq_mi|}}}|sqmi|abbr=on}}&lt;br /&gt;
     |{{#if:{{{area_ha|}}}{{{area_acre|}}}&lt;br /&gt;
        |{{convinfobox|{{{area_ha|}}}|ha|{{{area_acre|}}}|acre|abbr=on}}&lt;br /&gt;
      }}&lt;br /&gt;
   }}{{{area_footnote|}}}{{#if:{{{area_rank|}}} |&amp;amp;#32;([[List of countries and dependencies by area|{{{area_rank}}}]]) }}&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
| rowclass62 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}&lt;br /&gt;
| label62 = &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;Land&amp;lt;/div&amp;gt;&lt;br /&gt;
| data62 = {{#if:{{{area_land_km2|}}}{{{area_land_ha|}}}{{{area_land_sq_mi|}}}{{{area_land_acre|}}}&lt;br /&gt;
  |{{#if:{{{area_land_km2|}}}{{{area_land_sq_mi|}}}&lt;br /&gt;
     |{{convinfobox|{{{area_land_km2|}}}|km2|{{{area_land_sq_mi|}}}|sqmi|abbr=on}}&lt;br /&gt;
     |{{#if:{{{area_land_ha|}}}{{{area_land_acre|}}}&lt;br /&gt;
        |{{convinfobox|{{{area_land_ha|}}}|ha|{{{area_land_acre|}}}|acre|abbr=on}}&lt;br /&gt;
      }}&lt;br /&gt;
   }}{{{area_land_footnote|}}}&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
| rowclass63 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{percent_water|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}&lt;br /&gt;
| label63 = &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;Water&amp;lt;/div&amp;gt;&lt;br /&gt;
| data63 = {{#if:{{{area_water_km2|}}}{{{area_water_ha|}}}{{{area_water_sq_mi|}}}{{{area_water_acre|}}}&lt;br /&gt;
  |{{#if:{{{area_water_km2|}}}{{{area_water_sq_mi|}}}&lt;br /&gt;
     |{{convinfobox|{{{area_water_km2|}}}|km2|{{{area_water_sq_mi|}}}|sqmi|abbr=on}}&lt;br /&gt;
     |{{#if:{{{area_water_ha|}}}{{{area_water_acre|}}}&lt;br /&gt;
        |{{convinfobox|{{{area_water_ha|}}}|ha|{{{area_water_acre|}}}|acre|abbr=on}}&lt;br /&gt;
      }}&lt;br /&gt;
   }}{{{area_water_footnote|}}}&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
| rowclass64 = {{#if:{{{FR_metropole|}}}{{{area_label2|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}&lt;br /&gt;
| label64 = &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;Water&amp;amp;nbsp;(%)&amp;lt;/div&amp;gt;&lt;br /&gt;
| data64 = {{{percent_water|}}}&lt;br /&gt;
&lt;br /&gt;
| rowclass65 = {{#if:{{{FR_metropole|}}}{{{area_label3|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}&lt;br /&gt;
| label65 = &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;{{{area_label2|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data65 = {{#if:{{{area_label2|}}}| {{{area_data2|}}} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass66 = {{#if:{{{FR_metropole|}}}{{{stat_area1|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}&lt;br /&gt;
| label66 = &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;{{{area_label3|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data66 = {{#if:{{{area_label3|}}}| {{{area_data3|}}} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass67 = {{#if:{{{FR_metropole|}}}{{{stat_area2|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}&lt;br /&gt;
| label67 = {{{stat_year1|}}}{{{ref_area1|}}}&lt;br /&gt;
| data67 = {{#if: {{{stat_area1|}}} | {{convinfobox|{{{stat_area1|}}}|km2||sqmi}} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass68 = {{#if:{{{FR_metropole|}}}{{{stat_area3|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}&lt;br /&gt;
| label68 = {{{stat_year2|}}}{{{ref_area2|}}}&lt;br /&gt;
| data68 = {{#if: {{{stat_area2|}}} | {{convinfobox|{{{stat_area2|}}}|km2||sqmi}} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass69 = {{#if:{{{FR_metropole|}}}{{{stat_area4|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}&lt;br /&gt;
| label69 = {{{stat_year3|}}}{{{ref_area3|}}}&lt;br /&gt;
| data69 = {{#if: {{{stat_area3|}}} | {{convinfobox|{{{stat_area3|}}}|km2||sqmi}} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass70 = {{#if:{{{FR_metropole|}}}{{{stat_area5|}}}|mergedrow|mergedbottomrow}}&lt;br /&gt;
| label70 = {{{stat_year4|}}}{{{ref_area4|}}}&lt;br /&gt;
| data70 = {{#if: {{{stat_area4|}}} | {{convinfobox|{{{stat_area4|}}}|km2||sqmi}} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass71 = {{#if:{{{FR_metropole|}}}|mergedrow|mergedbottomrow}}&lt;br /&gt;
| label71 = {{{stat_year5|}}}{{{ref_area5|}}}&lt;br /&gt;
| data71 = {{#if: {{{stat_area5|}}} | {{convinfobox|{{{stat_area5|}}}|km2||sqmi}} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass72 = mergedrow&lt;br /&gt;
| label72 = &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;{{{FR_metropole}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data72 = {{#if:{{{FR_metropole|}}}| &amp;lt;nowiki /&amp;gt; }}&lt;br /&gt;
&lt;br /&gt;
| rowclass73 = mergedrow&lt;br /&gt;
| label73 = &amp;lt;div class=&amp;quot;ib-country-fake-li2&amp;quot;&amp;gt;•&amp;amp;nbsp;[[Institut Géographique National|IGN]]{{{FR_foot2|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data73 = {{#if:{{{FR_metropole|}}}&lt;br /&gt;
  |{{#if:{{{FR_IGN_area_km2|}}}{{{FR_IGN_area_sq_mi|}}}&lt;br /&gt;
     |{{convinfobox|{{{FR_IGN_area_km2|}}}|km2|{{{FR_IGN_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_IGN_area_rank|}}}|&amp;amp;#32;([[List of countries and dependencies by area|{{{FR_IGN_area_rank|}}}]])}}&lt;br /&gt;
   }}&lt;br /&gt;
 }}&lt;br /&gt;
| rowclass89 = mergedbottomrow&lt;br /&gt;
| label89 = &amp;lt;div class=&amp;quot;ib-country-fake-li2&amp;quot;&amp;gt;•&amp;amp;nbsp;[[Cadastre]]{{{FR_foot3|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data89 = {{#if:{{{FR_metropole|}}}&lt;br /&gt;
  |{{#if:{{{FR_cadastre_area_km2|}}}{{{FR_cadastre_area_sq_mi|}}}&lt;br /&gt;
     | {{convinfobox|{{{FR_cadastre_area_km2|}}}|km2|{{{FR_cadastre_area_sq_mi|}}}|sqmi|abbr=on}}{{#if:{{{FR_cadastre_area_rank|}}}|&amp;amp;#32;([[List of countries and dependencies by area|{{{FR_cadastre_area_rank|}}}]])}}&lt;br /&gt;
   }}&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
| rowclass90 = mergedtoprow&lt;br /&gt;
| header90 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}&lt;br /&gt;
     |{{#if:{{{population_link|}}}&lt;br /&gt;
               | {{#ifeq:{{{population_link}}}|no|Population|[[{{{population_link}}}|Population]]}}&amp;lt;!--&lt;br /&gt;
            --&amp;gt;| {{#ifexist:Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}&lt;br /&gt;
                  | [[Demographics of {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Population]]&amp;lt;!--&lt;br /&gt;
               --&amp;gt;| Population&amp;lt;!--&lt;br /&gt;
              --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
           --&amp;gt;}} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass91 = mergedrow&lt;br /&gt;
| label91 = &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;{{#if:{{{population_estimate_year|}}} |{{{population_estimate_year}}} estimate|Estimate}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data91 = {{#if:{{{population_estimate|}}}&lt;br /&gt;
        |{{{population_estimate}}}&amp;lt;!--&lt;br /&gt;
              --&amp;gt;{{#if:{{{population_estimate_rank|}}} |&amp;amp;#32;([[List of countries and dependencies by population|{{{population_estimate_rank}}}]])}}&lt;br /&gt;
        }}&lt;br /&gt;
| rowclass92 = mergedrow&lt;br /&gt;
| label92= &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;{{{population_label2|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data92= {{#if:{{{population_label2|}}}|{{{population_data2|}}}}}&lt;br /&gt;
&lt;br /&gt;
| rowclass93= mergedrow&lt;br /&gt;
| label93= &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;{{{population_label3|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data93= {{#if:{{{population_label3|}}}|{{{population_data3|}}}}}&lt;br /&gt;
&lt;br /&gt;
| rowclass94= mergedrow&lt;br /&gt;
| data94= {{#if:{{{stat_pop1|}}}{{{stat_pop2|}}}{{{stat_pop3|}}}{{{stat_pop4|}}}{{{stat_pop5|}}}|{{infobox country/multirow|{{{stat_year1|}}}{{{ref_pop1|}}} |{{formatnum:{{{stat_pop1|}}}}}|{{{stat_year2|}}}{{{ref_pop2|}}} |{{formatnum:{{{stat_pop2|}}}}}|{{{stat_year3|}}}{{{ref_pop3|}}} |{{formatnum:{{{stat_pop3|}}}}}|{{{stat_year4|}}}{{{ref_pop4|}}} |{{formatnum:{{{stat_pop4|}}}}}|{{{stat_year5|}}}{{{ref_pop5|}}} |{{formatnum:{{{stat_pop5|}}}}} }} }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| rowclass95= mergedrow&lt;br /&gt;
| label95= &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;{{#if:{{{population_census_year|}}} |{{{population_census_year}}}&amp;amp;nbsp;census|Census}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data95= {{#if:{{{population_census|}}}&lt;br /&gt;
  |{{{population_census}}}&amp;lt;!--&lt;br /&gt;
              --&amp;gt;{{#if:{{{population_census_rank|}}} |&amp;amp;#32;([[List of countries and dependencies by population|{{{population_census_rank}}}]])}}&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
| rowclass96= mergedrow&lt;br /&gt;
| label96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|{{nobold|1=&amp;amp;nbsp;({{{FR_total_population_estimate_year}}})}}}}}}&lt;br /&gt;
| data96 = {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate_year|}}}|&amp;lt;nowiki /&amp;gt;}}}}&lt;br /&gt;
&lt;br /&gt;
| rowclass97 = mergedrow&lt;br /&gt;
| label97= &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;Total{{{FR_foot|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data97= {{#if:{{{FR_metropole_population|}}}|{{#if:{{{FR_total_population_estimate|}}}&lt;br /&gt;
 |{{{FR_total_population_estimate}}}{{#if:{{{FR_total_population_estimate_rank|}}}|&amp;amp;#32;([[List of countries by population in 2005|{{{FR_total_population_estimate_rank}}}]])}}&lt;br /&gt;
  }} }}&lt;br /&gt;
&lt;br /&gt;
| rowclass98 = mergedrow&lt;br /&gt;
| label98= &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;{{{FR_metropole}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data98= {{#if:{{{FR_metropole_population|}}}|{{{FR_metropole_population}}}{{#if:{{{FR_metropole_population_estimate_rank|}}}&lt;br /&gt;
 |&amp;amp;#32;([[List of countries by population in 2005|{{{FR_metropole_population_estimate_rank}}}]])}}&lt;br /&gt;
 }}&lt;br /&gt;
&lt;br /&gt;
| rowclass99 = mergedbottomrow&lt;br /&gt;
| label99= &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;Density{{{FR_foot5|}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
| data99= {{#if:{{{population_density_km2|}}}{{{population_density_sq_mi|}}}&lt;br /&gt;
     | {{convinfobox|{{{population_density_km2|}}}|/km2|{{{population_density_sq_mi|}}}|/sqmi|1|abbr=on}}{{{pop_den_footnote|}}}&amp;lt;!--&lt;br /&gt;
            --&amp;gt;{{#if:{{{population_density_rank|}}} |&amp;amp;#32;([[List of countries and dependencies by population density|{{{population_density_rank}}}]])}}&lt;br /&gt;
     }}&lt;br /&gt;
| rowclass100 = {{#if:{{{population_estimate|}}}{{{population_census|}}}{{{FR_metropole_population|}}}|mergedbottomrow|mergedtoprow}}&lt;br /&gt;
| label100 = Membership&lt;br /&gt;
| data100= {{{nummembers|}}}&lt;br /&gt;
&lt;br /&gt;
| rowclass101= mergedtoprow&lt;br /&gt;
| label101= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&amp;amp;nbsp;{{nobold|([[Purchasing power parity|PPP]])}}&lt;br /&gt;
| data101= {{#if:{{{GDP_PPP|}}}{{{GDP_PPP_per_capita|}}}&lt;br /&gt;
     |{{#if:{{{GDP_PPP_year|}}} |{{{GDP_PPP_year}}}&amp;amp;nbsp;}}estimate&lt;br /&gt;
     }}&lt;br /&gt;
| rowclass102= mergedrow&lt;br /&gt;
| label102= &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;Total&amp;lt;/div&amp;gt;&lt;br /&gt;
| data102= {{#if:{{{GDP_PPP|}}}&lt;br /&gt;
     |{{{GDP_PPP}}}&amp;lt;!--&lt;br /&gt;
             --&amp;gt;{{#if:{{{GDP_PPP_rank|}}} |&amp;amp;#32;([[List of countries by GDP (PPP)|{{{GDP_PPP_rank}}}]])}}&lt;br /&gt;
     }}&lt;br /&gt;
| rowclass103= mergedbottomrow&lt;br /&gt;
| label103= &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;Per capita&amp;lt;/div&amp;gt;&lt;br /&gt;
| data103= {{#if:{{{GDP_PPP_per_capita|}}}&lt;br /&gt;
     |{{{GDP_PPP_per_capita}}}&amp;lt;!--&lt;br /&gt;
                --&amp;gt;{{#if:{{{GDP_PPP_per_capita_rank|}}} |&amp;amp;#32;([[List of countries by GDP (PPP) per capita|{{{GDP_PPP_per_capita_rank}}}]])}}&lt;br /&gt;
     }}&lt;br /&gt;
&lt;br /&gt;
| rowclass104= mergedtoprow&lt;br /&gt;
| label104= {{#ifeq:{{{micronation|}}}|yes|Claimed|}} [[Gross domestic product|GDP]]&amp;amp;nbsp;{{nobold|(nominal)}}&lt;br /&gt;
| data104= {{#if:{{{GDP_nominal|}}}{{{GDP_nominal_per_capita|}}}&lt;br /&gt;
   |{{#if:{{{GDP_nominal_year|}}} |{{{GDP_nominal_year}}}&amp;amp;nbsp;}}estimate&lt;br /&gt;
   }}&lt;br /&gt;
&lt;br /&gt;
| rowclass105= mergedrow&lt;br /&gt;
| label105= &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;Total&amp;lt;/div&amp;gt;&lt;br /&gt;
| data105= {{#if:{{{GDP_nominal|}}}&lt;br /&gt;
     |{{{GDP_nominal}}}&amp;lt;!--&lt;br /&gt;
             --&amp;gt;{{#if:{{{GDP_nominal_rank|}}} |&amp;amp;#32;([[List of countries by GDP (nominal)|{{{GDP_nominal_rank}}}]])}}&lt;br /&gt;
     }}&lt;br /&gt;
| rowclass106= mergedbottomrow&lt;br /&gt;
| label106= &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;Per capita&amp;lt;/div&amp;gt;&lt;br /&gt;
| data106= {{#if:{{{GDP_nominal_per_capita|}}}&lt;br /&gt;
        | {{{GDP_nominal_per_capita}}}&amp;lt;!--&lt;br /&gt;
                --&amp;gt;{{#if:{{{GDP_nominal_per_capita_rank|}}} |&amp;amp;#32;([[List of countries by GDP (nominal) per capita|{{{GDP_nominal_per_capita_rank}}}]])}}&lt;br /&gt;
       }}&lt;br /&gt;
&lt;br /&gt;
| label107= [[Gini_coefficient|Gini]]{{#if:{{{Gini_year|}}} |&amp;amp;nbsp;{{nobold|1=({{{Gini_year}}})}}}}&lt;br /&gt;
| data107= {{#if:{{{Gini|}}}&lt;br /&gt;
     | {{#switch:{{{Gini_change|}}}&lt;br /&gt;
              |increase = {{increaseNegative}}&amp;amp;nbsp;&amp;lt;!--&lt;br /&gt;
           --&amp;gt;|decrease = {{decreasePositive}}&amp;amp;nbsp;&amp;lt;!--&lt;br /&gt;
           --&amp;gt;|steady = {{steady}}&amp;amp;nbsp;&amp;lt;!--&lt;br /&gt;
          --&amp;gt;}}{{{Gini}}}{{{Gini_ref|}}}&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
          ---------Evaluate and add Gini category:----------&lt;br /&gt;
          --&amp;gt;{{nowrap|1=&amp;lt;!--&lt;br /&gt;
             --&amp;gt;{{#iferror:&amp;lt;!--&lt;br /&gt;
                --&amp;gt;{{#ifexpr:{{{Gini}}}&amp;gt;100 &amp;lt;!--&lt;br /&gt;
                 --&amp;gt;| {{error|Error: Gini value above 100}}&amp;lt;!--Handled by outer #iferror, not visible to users--&amp;gt;&amp;lt;!--&lt;br /&gt;
                 --&amp;gt;| {{#ifexpr:{{{Gini}}}&amp;gt;=60 |{{color|red|very high inequality}}&amp;lt;!--&lt;br /&gt;
                    --&amp;gt;| {{#ifexpr:{{{Gini}}}&amp;gt;=46 &amp;lt;!--&lt;br /&gt;
                       --&amp;gt;| {{color|darkred|high inequality}}&amp;lt;!--&lt;br /&gt;
                       --&amp;gt;| {{#ifexpr:{{{Gini}}}&amp;gt;=30 &amp;lt;!--&lt;br /&gt;
                          --&amp;gt;| {{color|#707070|medium inequality}}&amp;lt;!--&lt;br /&gt;
                          --&amp;gt;| {{#ifexpr:{{{Gini}}}&amp;gt;=0 &amp;lt;!--&lt;br /&gt;
                             --&amp;gt;| {{color|forestgreen|low inequality}}&amp;lt;!--&lt;br /&gt;
                             --&amp;gt;| {{error|Error:Gini value below 0}}&amp;lt;!--Handled by outer #iferror, not visible to users--&amp;gt;&amp;lt;!--&lt;br /&gt;
                            --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
                         --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
                      --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
                   --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
                --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
              --&amp;gt;| {{error|Error: Invalid Gini value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}&amp;lt;!--&lt;br /&gt;
             --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
           --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
           -----------Add Gini_rank (if supplied):----------&lt;br /&gt;
           --&amp;gt;{{#if:{{{Gini_rank|}}}&lt;br /&gt;
               |&amp;amp;nbsp;([[List of countries by income equality|{{{Gini_rank}}}]])&amp;lt;!--&lt;br /&gt;
           --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
      --&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
| label108= [[Human Development Index|HDI]]{{#if:{{{HDI_year|}}} |&amp;amp;nbsp;{{nobold|1=({{{HDI_year}}})}}}}&lt;br /&gt;
| data108= {{#if:{{{HDI|}}}&lt;br /&gt;
     | {{#switch:{{{HDI_change|}}}&lt;br /&gt;
              |increase = {{increase}}&amp;amp;nbsp;&amp;lt;!--&lt;br /&gt;
           --&amp;gt;|decrease = {{decrease}}&amp;amp;nbsp;&amp;lt;!--&lt;br /&gt;
           --&amp;gt;|steady = {{steady}}&amp;amp;nbsp;&amp;lt;!--&lt;br /&gt;
          --&amp;gt;}}{{{HDI}}}{{{HDI_ref|}}}&amp;lt;br/&amp;gt;&amp;lt;!--&lt;br /&gt;
          ---------Evaluate and add HDI category:---------&lt;br /&gt;
          --&amp;gt;{{nowrap|1=&amp;lt;!--&lt;br /&gt;
              --&amp;gt;{{#iferror:&amp;lt;!--&lt;br /&gt;
                --&amp;gt;{{#ifexpr:{{{HDI}}}&amp;gt;1 &amp;lt;!--&lt;br /&gt;
                 --&amp;gt;| {{error|Error: HDI value greater than 1}}&amp;lt;!--Handled by outer #iferror, not visible to users--&amp;gt;&amp;lt;!--&lt;br /&gt;
                 --&amp;gt;| {{#ifexpr:{{{HDI}}}&amp;gt;0.799 &amp;lt;!--&lt;br /&gt;
                    --&amp;gt;| {{color|darkgreen|very high}}&amp;lt;!--&lt;br /&gt;
                    --&amp;gt;| {{#ifexpr:{{{HDI}}}&amp;gt;0.699 &amp;lt;!--&lt;br /&gt;
                       --&amp;gt;| {{color|forestgreen|high}}&amp;lt;!--&lt;br /&gt;
                       --&amp;gt;| {{#ifexpr:{{{HDI}}}&amp;gt;0.549 &amp;lt;!--&lt;br /&gt;
                          --&amp;gt;| {{color|orange|medium}}&amp;lt;!--&lt;br /&gt;
                          --&amp;gt;| {{#ifexpr:{{{HDI}}}&amp;gt;=0.000&amp;lt;!--&lt;br /&gt;
                             --&amp;gt;| {{color|red|low}}&amp;lt;!--&lt;br /&gt;
                             --&amp;gt;| {{error|Error: HDI value less than 0}}&amp;lt;!--Handled by outer #iferror, not visible to users--&amp;gt;&amp;lt;!--&lt;br /&gt;
                            --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
                         --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
                      --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
                   --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
                --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
               --&amp;gt;| {{error|Error: Invalid HDI value}}{{#ifeq: {{NAMESPACE}} | {{ns:0}} | [[Category:Country articles requiring maintenance]] }}&amp;lt;!--&lt;br /&gt;
              --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
           --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
          ----------Add HDI_rank (if supplied):-----------&lt;br /&gt;
          --&amp;gt;{{#if:{{{HDI_rank|}}}&lt;br /&gt;
              |&amp;amp;nbsp;([[List of countries by Human Development Index|{{{HDI_rank}}}]])&amp;lt;!--&lt;br /&gt;
          --&amp;gt;}}&amp;lt;!--&lt;br /&gt;
      --&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
| label109= {{#ifeq:{{{micronation|}}}|yes|Purported currency|Currency}}&lt;br /&gt;
| data109= {{#if:{{{currency|}}}&lt;br /&gt;
     | {{{currency}}} {{#if:{{{currency_code|}}} |([[ISO 4217|{{{currency_code}}}]])}}&lt;br /&gt;
   }}&lt;br /&gt;
&lt;br /&gt;
| rowclass119= {{#if:{{{utc_offset_DST|}}}{{{DST_note|}}} |mergedtoprow}}&lt;br /&gt;
| label119= Time zone&lt;br /&gt;
| data119= {{#if:{{{utc_offset|}}}&lt;br /&gt;
     |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset}}}}} {{#if:{{{time_zone|}}}|({{{time_zone}}})}}&lt;br /&gt;
     |{{{time_zone|}}}&lt;br /&gt;
     }}&lt;br /&gt;
| rowclass120= {{#if:{{{DST_note|}}} |mergedrow |mergedbottomrow}}&lt;br /&gt;
| label120= &amp;lt;div class=&amp;quot;ib-country-fake-li&amp;quot;&amp;gt;•&amp;amp;nbsp;Summer&amp;amp;nbsp;([[Daylight saving time|DST]])&amp;lt;/div&amp;gt;&lt;br /&gt;
| data120= {{#if:{{{utc_offset_DST|}}}&lt;br /&gt;
     |{{nowrap|[[Coordinated Universal Time|UTC]]{{{utc_offset_DST}}}}} {{#if:{{{time_zone_DST|}}}|({{{time_zone_DST}}})|{{#if:{{{DST|}}}|({{{DST}}})}}}}&lt;br /&gt;
     |{{#if:{{{time_zone_DST|}}}|{{{time_zone_DST}}}|{{{DST|}}}}}&lt;br /&gt;
     }}&lt;br /&gt;
&lt;br /&gt;
| rowclass121= mergedbottomrow&lt;br /&gt;
| label121= &amp;lt;nowiki /&amp;gt;&lt;br /&gt;
| data121= {{{DST_note|}}}&lt;br /&gt;
 &lt;br /&gt;
| label122 = [[Antipodes]]&lt;br /&gt;
| data122= {{{antipodes|}}}&lt;br /&gt;
&lt;br /&gt;
| label123 = Date format&lt;br /&gt;
| data123= {{{date_format|}}}&lt;br /&gt;
&lt;br /&gt;
| label125= [[Left- and right-hand traffic|Drives on]]&lt;br /&gt;
| data125= {{#if:{{{drives_on|}}} | {{lcfirst:{{{drives_on}}}}} }}&lt;br /&gt;
&lt;br /&gt;
| label126= {{#if:{{{calling_code|}}}&lt;br /&gt;
    |{{#ifexist:Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}&lt;br /&gt;
               | [[Telephone numbers in {{{linking_name|{{{common_name|{{{name|{{PAGENAME}}}}}}}}}}}|Calling code]]&lt;br /&gt;
               | Calling code&lt;br /&gt;
              }}&lt;br /&gt;
   }}&lt;br /&gt;
| data126= {{{calling_code|}}}&lt;br /&gt;
&lt;br /&gt;
| label127= [[ISO 3166|ISO 3166 code]]&lt;br /&gt;
| data127= {{#switch:{{{iso3166code|}}}&lt;br /&gt;
     |omit = &amp;lt;!--(do nothing)--&amp;gt;&lt;br /&gt;
     | = &amp;lt;!--if iso3166code is not supplied:&lt;br /&gt;
          --&amp;gt;{{#if:{{{common_name|}}}&lt;br /&gt;
              | {{#if:{{ISO 3166 code|{{{common_name}}}|nocat=true}}&lt;br /&gt;
                 | [[ISO 3166-2:{{ISO 3166 code|{{{common_name}}}}}|{{ISO 3166 code|{{{common_name}}}}}]]&lt;br /&gt;
                }}&lt;br /&gt;
             }}&lt;br /&gt;
     |#default = [[ISO 3166-2:{{uc:{{{iso3166code}}}}}|{{uc:{{{iso3166code}}}}}]]&lt;br /&gt;
    }}&lt;br /&gt;
&lt;br /&gt;
| label128= [[Country code top-level domain|Internet TLD]]&lt;br /&gt;
| data128= {{{cctld|}}}&lt;br /&gt;
&lt;br /&gt;
| data129 = {{#if:{{{official_website|}}}&lt;br /&gt;
     |&amp;lt;div class=&amp;quot;ib-country-website&amp;quot;&amp;gt;&#039;&#039;&#039;Website&#039;&#039;&#039;&amp;lt;br/&amp;gt;{{{official_website}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
     }}&lt;br /&gt;
&lt;br /&gt;
| data130= {{#if:{{{image_map3|{{{location_map|}}}}}}&lt;br /&gt;
  | {{#invoke:InfoboxImage|InfoboxImage|image={{{image_map3|{{{location_map|}}}}}}|size={{{map3_width|}}}|upright=1.15|alt={{{alt_map3|}}}|title=Location of {{{common_name|{{{name|{{{linking_name|{{PAGENAME}} }}} }}} }}} }}&amp;lt;!--&lt;br /&gt;
    --&amp;gt;{{#if:{{{map_caption3|}}}|&amp;lt;div class=&amp;quot;ib-country-map-caption3&amp;quot;&amp;gt;{{{map_caption3|}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
| data134 = {{#if:{{{p1|}}}{{{s1|}}}&lt;br /&gt;
              |{{Infobox country/formernext|flag_p1={{{flag_p1|}}}|image_p1={{{image_p1|}}}|p1={{{p1|}}}|border_p1={{{border_p1|}}}|flag_p2={{{flag_p2|}}}|image_p2={{{image_p2|}}}|p2={{{p2|}}}|border_p2={{{border_p2|}}}|flag_p3={{{flag_p3|}}}|image_p3={{{image_p3|}}}|p3={{{p3|}}}|border_p3={{{border_p3|}}}|flag_p4={{{flag_p4|}}}|image_p4={{{image_p4|}}}|p4={{{p4|}}}|border_p4={{{border_p4|}}}|flag_p5={{{flag_p5|}}}|image_p5={{{image_p5|}}}|p5={{{p5|}}}|border_p5={{{border_p5|}}}|flag_p6={{{flag_p6|}}}|image_p6={{{image_p6|}}}|p6={{{p6|}}}|border_p6={{{border_p6|}}}|flag_p7={{{flag_p7|}}}|image_p7={{{image_p7|}}}|p7={{{p7|}}}|border_p7={{{border_p7|}}}|flag_p8={{{flag_p8|}}}|image_p8={{{image_p8|}}}|p8={{{p8|}}}|border_p8={{{border_p8|}}}|flag_p9={{{flag_p9|}}}|image_p9={{{image_p9|}}}|p9={{{p9|}}}|border_p9={{{border_p9|}}}|flag_p10={{{flag_p10|}}}|image_p10={{{image_p10|}}}|p10={{{p10|}}}|border_p10={{{border_p10|}}}|flag_p11={{{flag_p11|}}}|image_p11={{{image_p11|}}}|p11={{{p11|}}}|border_p11={{{border_p11|}}}|flag_p12={{{flag_p12|}}}|image_p12={{{image_p12|}}}|p12={{{p12|}}}|border_p12={{{border_p12|}}}|flag_p13={{{flag_p13|}}}|image_p13={{{image_p13|}}}|p13={{{p13|}}}|border_p13={{{border_p13|}}}|flag_p14={{{flag_p14|}}}|image_p14={{{image_p14|}}}|p14={{{p14|}}}|border_p14={{{border_p14|}}}|flag_p15={{{flag_p15|}}}|image_p15={{{image_p15|}}}|p15={{{p15|}}}|border_p15={{{border_p15|}}}|flag_p16={{{flag_p16|}}}|image_p16={{{image_p16|}}}|p16={{{p16|}}}|border_p16={{{border_p16|}}}|flag_p17={{{flag_p17|}}}|image_p17={{{image_p17|}}}|p17={{{p17|}}}|border_p17={{{border_p17|}}}|flag_p18={{{flag_p18|}}}|image_p18={{{image_p18|}}}|p18={{{p18|}}}|border_p18={{{border_p18|}}}|flag_p19={{{flag_p19|}}}|image_p19={{{image_p19|}}}|p19={{{p19|}}}|border_p19={{{border_p19|}}}|flag_p20={{{flag_p20|}}}|image_p20={{{image_p20|}}}|p20={{{p20|}}}|border_p20={{{border_p20|}}}|flag_p21={{{flag_p21|}}}|image_p21={{{image_p21|}}}|p21={{{p21|}}}|border_p21={{{border_p21|}}}|flag_p22={{{flag_p22|}}}|image_p22={{{image_p22|}}}|p22={{{p22|}}}|border_p22={{{border_p22|}}}|flag_s1={{{flag_s1|}}}|image_s1={{{image_s1|}}}|s1={{{s1|}}}|border_s1={{{border_s1|}}}|flag_s2={{{flag_s2|}}}|image_s2={{{image_s2|}}}|s2={{{s2|}}}|border_s2={{{border_s2|}}}|flag_s3={{{flag_s3|}}}|image_s3={{{image_s3|}}}|s3={{{s3|}}}|border_s3={{{border_s3|}}}|flag_s4={{{flag_s4|}}}|image_s4={{{image_s4|}}}|s4={{{s4|}}}|border_s4={{{border_s4|}}}|flag_s5={{{flag_s5|}}}|image_s5={{{image_s5|}}}|s5={{{s5|}}}|border_s5={{{border_s5|}}}|flag_s6={{{flag_s6|}}}|image_s6={{{image_s6|}}}|s6={{{s6|}}}|border_s6={{{border_s6|}}}|flag_s7={{{flag_s7|}}}|image_s7={{{image_s7|}}}|s7={{{s7|}}}|border_s7={{{border_s7|}}}|flag_s8={{{flag_s8|}}}|image_s8={{{image_s8|}}}|s8={{{s8|}}}|border_s8={{{border_s8|}}}|flag_s9={{{flag_s9|}}}|image_s9={{{image_s9|}}}|s9={{{s9|}}}|border_s9={{{border_s9|}}}|flag_s10={{{flag_s10|}}}|image_s10={{{image_s10|}}}|s10={{{s10|}}}|border_s10={{{border_s10|}}}|flag_s11={{{flag_s11|}}}|image_s11={{{image_s11|}}}|s11={{{s11|}}}|border_s11={{{border_s11|}}}|flag_s12={{{flag_s12|}}}|image_s12={{{image_s12|}}}|s12={{{s12|}}}|border_s12={{{border_s12|}}}|flag_s13={{{flag_s13|}}}|image_s13={{{image_s13|}}}|s13={{{s13|}}}|border_s13={{{border_s13|}}}|flag_s14={{{flag_s14|}}}|image_s14={{{image_s14|}}}|s14={{{s14|}}}|border_s14={{{border_s14|}}}|flag_s15={{{flag_s15|}}}|image_s15={{{image_s15|}}}|s15={{{s15|}}}|border_s15={{{border_s15|}}}|flag_s16={{{flag_s16|}}}|image_s16={{{image_s16|}}}|s16={{{s16|}}}|border_s16={{{border_s16|}}}|flag_s17={{{flag_s17|}}}|image_s17={{{image_s17|}}}|s17={{{s17|}}}|border_s17={{{border_s17|}}}|flag_s18={{{flag_s18|}}}|image_s18={{{image_s18|}}}|s18={{{s18|}}}|border_s18={{{border_s18|}}}|flag_s19={{{flag_s19|}}}|image_s19={{{image_s19|}}}|s19={{{s19|}}}|border_s19={{{border_s19|}}}|flag_s20={{{flag_s20|}}}|image_s20={{{image_s20|}}}|s20={{{s20|}}}|border_s20={{{border_s20|}}}|flag_s21={{{flag_s21|}}}|image_s21={{{image_s21|}}}|s21={{{s21|}}}|border_s21={{{border_s21|}}}|flag_s22={{{flag_s22|}}}|image_s22={{{image_s22|}}}|s22={{{s22|}}}|border_s22={{{border_s22|}}}}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
| label135 = Today part of&lt;br /&gt;
| data135  = {{{today|}}}&lt;br /&gt;
&lt;br /&gt;
| data136 = {{#if:{{{footnote_a|}}}{{{footnote_b|}}}{{{footnote_c|}}}{{{footnote_d|}}}{{{footnote_e|}}}{{{footnote_f|}}}{{{footnote_g|}}}{{{footnote_h|}}}&lt;br /&gt;
  |&amp;lt;div class=&amp;quot;ib-country-fn&amp;quot;&amp;gt;&amp;lt;ol class=&amp;quot;ib-country-fn-alpha&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{footnote_a|}}}|&amp;lt;li value=1&amp;gt;{{{footnote_a|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote_b|}}}|&amp;lt;li value=2&amp;gt;{{{footnote_b|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote_c|}}}|&amp;lt;li value=3&amp;gt;{{{footnote_c|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote_d|}}}|&amp;lt;li value=4&amp;gt;{{{footnote_d|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote_e|}}}|&amp;lt;li value=5&amp;gt;{{{footnote_e|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote_f|}}}|&amp;lt;li value=6&amp;gt;{{{footnote_f|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote_g|}}}|&amp;lt;li value=7&amp;gt;{{{footnote_g|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote_h|}}}|&amp;lt;li value=8&amp;gt;{{{footnote_h|}}}&amp;lt;/li&amp;gt;}}&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
| data137 = {{#if:{{{footnote1|}}}{{{footnote2|}}}{{{footnote3|}}}{{{footnote4|}}}{{{footnote5|}}}{{{footnote6|}}}{{{footnote7|}}}{{{footnote8|}}}&lt;br /&gt;
  |&amp;lt;div class=&amp;quot;ib-country-fn&amp;quot;&amp;gt;&amp;lt;ol class=&amp;quot;ib-country-fn-num&amp;quot;&amp;gt;&lt;br /&gt;
{{#if:{{{footnote1|}}}|&amp;lt;li value=1&amp;gt;{{{footnote1|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote2|}}}|&amp;lt;li value=2&amp;gt;{{{footnote2|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote3|}}}|&amp;lt;li value=3&amp;gt;{{{footnote3|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote4|}}}|&amp;lt;li value=4&amp;gt;{{{footnote4|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote5|}}}|&amp;lt;li value=5&amp;gt;{{{footnote5|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote6|}}}|&amp;lt;li value=6&amp;gt;{{{footnote6|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote7|}}}|&amp;lt;li value=7&amp;gt;{{{footnote7|}}}&amp;lt;/li&amp;gt;&lt;br /&gt;
}}{{#if:{{{footnote8|}}}|&amp;lt;li value=8&amp;gt;{{{footnote8|}}}&amp;lt;/li&amp;gt;}}&lt;br /&gt;
&amp;lt;/ol&amp;gt;&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
| data138 = {{#if:{{{footnotes|}}}|&amp;lt;div class=&amp;quot;ib-country-fn&amp;quot;&amp;gt;{{{footnotes}}}{{#if:{{{footnotes2|}}}|&amp;lt;br&amp;gt;{{{footnotes2}}}}}&amp;lt;/div&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
| belowclass = mergedtoprow noprint&lt;br /&gt;
| below = {{#if:{{{navbar|}}}| {{navbar|{{{navbar|}}}}} }}&lt;br /&gt;
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox country with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox country]] with unknown parameter &amp;quot;_VALUE_&amp;quot;|ignoreblank=y| admin_center_type | admin_center | alt_coat | alt_flag | alt_flag2 | alt_map | alt_map2 | alt_map3 | alt_symbol | anthem | anthems | antipodes | area_acre | area_data2 | area_data3 | area_footnote | area_ha | area_km2 | area_label | area_label2 | area_label3 | area_land_acre | area_land_footnote | area_land_ha | area_land_km2 | area_land_sq_mi | area_link | area_rank | area_sq_mi | area_water_acre | area_water_footnote | area_water_ha | area_water_km2 | area_water_sq_mi | regexp1 = border_[ps][%d]+ | calling_code | capital_exile | capital_type | capital | cctld | coa_size | coat_alt | common_languages | common_name | conventional_long_name | coordinates | currency_code | currency | date_end | regexp2 = date_event[%d]+ | date_format | date_post | date_pre | date_start | demonym | regexp3 = deputy[%d]+ | drives_on | DST_note | DST | empire | englishmotto | era | regexp4 = established_date[%d]+ | regexp5 = established_event[%d]+ |  established | ethnic_groups_ref | ethnic_groups_year | ethnic_groups | event_end | event_post | event_pre | event_start | regexp6 = event[%d]+ | flag| flag_alt | flag_alt2 | flag_border | flag_caption | flag_caption | regexp7 = flag_[ps][%d]+ | flag_size | flag_type | flag_type_article | flag_width | flag2_border | regexp8 = footnote_[a-h] | regexp9 = footnote[%d]+ | footnotes | footnotes2 | FR_cadastre_area_km2 | FR_cadastre_area_rank | FR_cadastre_area_sq_mi | FR_foot | FR_foot2 | FR_foot3 | FR_foot4 | FR_foot5 | FR_IGN_area_km2 | FR_IGN_area_rank | FR_IGN_area_sq_mi | FR_metropole_population_estimate_rank | FR_metropole_population | FR_metropole | FR_total_population_estimate_rank | FR_total_population_estimate_year | FR_total_population_estimate | GDP_nominal_per_capita_rank | GDP_nominal_per_capita | GDP_nominal_rank | GDP_nominal_year | GDP_nominal | GDP_PPP_per_capita_rank | GDP_PPP_per_capita | GDP_PPP_rank | GDP_PPP_year | GDP_PPP | Gini_change | Gini_rank | Gini_ref | Gini_year | Gini | government_type | HDI_change | HDI_rank | HDI_ref | HDI_year | HDI | house1 | house2 | image_coat | image_flag | image_flag2 | image_map_alt | image_map_caption | image_map_size | image_map | image_map2_alt | image_map2_caption | image_map2_size | image_map2 | image_map3 | regexp10 = image_[ps][%d]+ | image_symbol | iso3166code | languages_sub | languages_type | languages | languages2_sub | languages2_type | languages2 | largest_city | largest_settlement_type | largest_settlement | regexp11 = leader_name[%d]+ | regexp12 = leader_title[%d]+ | regexp13 = leader[%d]+ | legislature | life_span | linking_name | location_map | loctext | lower_house | map_caption | map_caption2 | map_caption3 | map_width | map2_width | map3_width | membership_type | membership | micronation | motto | name | national_anthem | national_languages | national_motto | native_name | navbar | nummembers | official_languages | official_website | org_type | other_symbol_type | other_symbol | regexp14 = [ps][%d]+ | patron_saint | patron_saints | percent_water | politics_link | pop_den_footnote | population_census_rank | population_census_year | population_census | population_data2 | population_data3 | population_density_km2 | population_density_rank | population_density_sq_mi | population_estimate_rank | population_estimate_year | population_estimate | population_label2 | population_label3 | population_link | recognised_languages | recognised_national_languages | recognised_regional_languages | recognized_languages | recognized_national_languages | regexp15 = ref_area[%d]+ | regexp16 = ref_pop[%d]+ | regional_languages | recognized_regional_languages | religion_ref | religion_year | religion | regexp17 = representative[%d]+ | royal_anthem | flag_anthem | march | national_march | regional_anthem | territorial_anthem | state_anthem | sovereignty_note | sovereignty_type | regexp18 = stat_area[%d]+ | regexp19 = stat_pop[%d]+ | regexp20 = stat_year[%d]+ | status_text | status | symbol| symbol_type_article | symbol_type | symbol_width | text_symbol_type | text_symbol | time_zone_DST | time_zone | title_deputy | title_leader | title_representative | today | type_house1 | type_house2 | upper_house | utc_offset_DST | utc_offset | regexp21 = year_deputy[%d]+ | year_end | year_exile_end | year_exile_start | regexp22 = year_leader[%d]+ | regexp23 = year_representative[%d]+ | year_start}}{{main other|&lt;br /&gt;
{{#if:{{both|{{{image_coat|}}}|{{{image_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|A]]&lt;br /&gt;
}}{{#if:{{both|{{{alt_coat|}}}|{{{alt_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|B]]&lt;br /&gt;
}}{{#if:{{both|{{{motto|}}}|{{{national_motto|}}}}}|[[Category:Pages using infobox country with syntax problems|C]]&lt;br /&gt;
}}{{#if:{{both|{{{national_anthem|}}}|{{{anthem|}}}}}|[[Category:Pages using infobox country with syntax problems|D]]&lt;br /&gt;
}}{{#if:{{both|{{{other_symbol|}}}|{{{text_symbol|}}}}}|[[Category:Pages using infobox country with syntax problems|E]]&lt;br /&gt;
}}{{#if:{{both|{{{other_symbol_type|}}}|{{{text_symbol_type|}}}}}|[[Category:Pages using infobox country with syntax problems|F]]&lt;br /&gt;
}}{{#if:{{both|{{{largest_city|}}}|{{{largest_settlement|}}}}}|[[Category:Pages using infobox country with syntax problems|G]]&lt;br /&gt;
}}{{#if:{{both|{{{recognized_languages|}}}|{{{recognised_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|H]]&lt;br /&gt;
}}{{#if:{{both|{{{recognized_national_languages|}}}|{{{recognised_national_languages|}}}}}{{both|{{{recognized_regional_languages|}}}|{{{recognised_regional_languages|}}}}}|[[Category:Pages using infobox country with syntax problems|I]]&lt;br /&gt;
}}{{#if:{{{official_languages|}}}||{{#if:{{{recognized_languages|}}}{{{recognised_languages|}}}{{{recognized_national_languages|}}}{{{recognised_national_languages|}}}{{{recognized_regional_languages|}}}{{{recognised_regional_languages|}}}|[[Category:Pages using infobox country with syntax problems|J]]}}&lt;br /&gt;
}}{{#if:{{both|{{{area_km2|}}}|{{{area_ha|}}}}}{{both|{{{area_land_km2|}}}|{{{area_land_ha|}}}}}{{both|{{{area_water_km2|}}}|{{{area_water_ha|}}}}}|[[Category:Pages using infobox country with syntax problems|K]]&lt;br /&gt;
}}{{#if:{{both|{{{DST|}}}|{{{time_zone_DST|}}}}}|[[Category:Pages using infobox country with syntax problems|L]]&lt;br /&gt;
}}{{#if:{{{time_zone|}}}{{{utc_offset|}}}||{{#if:{{{time_zone_DST|}}}{{{utc_offset_DST|}}}|[[Category:Pages using infobox country with syntax problems|M]]}}&lt;br /&gt;
}}{{#if:{{both|{{{sovereignty_type|}}}|{{{established|}}} }}|[[Category:Pages using infobox country with syntax problems|O]]&lt;br /&gt;
}}{{#if:{{{languages|}}}|{{#if:{{{languages_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}&lt;br /&gt;
}}{{#if:{{{languages2|}}}|{{#if:{{{languages2_type|}}}||[[Category:Pages using infobox country with syntax problems|P]]}}&lt;br /&gt;
}}{{#if:{{{flag_type|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|T{{PAGENAME}}]]&lt;br /&gt;
}}{{#if:{{{flag_caption|}}}|[[Category:Pages using infobox country or infobox former country with the flag caption or type parameters|C{{PAGENAME}}]]&lt;br /&gt;
}}{{#if:{{{symbol_type|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|T{{PAGENAME}}]]&lt;br /&gt;
}}{{#if:{{{symbol_caption|}}}|[[Category:Pages using infobox country or infobox former country with the symbol caption or type parameters|C{{PAGENAME}}]]&lt;br /&gt;
}}}}&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
Tracking categories from merge with {{infobox former country}}. After all cats are empty/have been checked, these can be removed.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;{{#if:{{{status_text|}}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Colony|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}|{{#ifeq:{{ucfirst:{{{status|}}}}}|Exile|{{main other|[[Category:Former country articles using status text with Colony or Exile]]}}}}}}&lt;br /&gt;
}}&amp;lt;!--End of former country tracking cats--&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Martian_Revolutions&amp;diff=5</id>
		<title>Martian Revolutions</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Martian_Revolutions&amp;diff=5"/>
		<updated>2024-11-24T01:48:42Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Link to the North American Federation page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Martian Revolutions&#039;&#039;&#039; were a series of conflicts that lasted from 2096 to 2113, where several Martian colonies fought for political freedom and independence from Earth. The first revolution began on 27 July 2096 in the [[North American Federation|North American]] Jezero colony, when activists led by Charlotte Richardson seized control of the colonial government. This prompted similar action in other North American colonies, which by mid-2098 had spread to other countries&#039; colonies as well. Initially, many revolutionaries called for a single federal Martian state. However, the movement split when supporters of Richardson proclaimed the Empire of Mars in 2108 and crowned her as the empress. In reaction, the Republic of Mars was declared later that year. The conflicts officially ended on 4 February 2113 when the North American President Yusef Halifax declared that the NAF no longer intended to reclaim its lost colonies.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=North_American_Federation&amp;diff=4</id>
		<title>North American Federation</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=North_American_Federation&amp;diff=4"/>
		<updated>2024-11-24T01:48:00Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Link to the Martian Revolutions page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;North American Federation&#039;&#039;&#039; (&#039;&#039;&#039;NAF&#039;&#039;&#039;), sometimes referred to as &#039;&#039;&#039;North America&#039;&#039;&#039; or simply &#039;&#039;&#039;America&#039;&#039;&#039; is a federal state located mostly in North America. It is the second largest country by land area and the fourth largest by population, being home to 510 million people as of the 2150 census. Its largest cities are New York, Los Angeles, Chicago, and Toronto, and its capital is Washington, DC.&lt;br /&gt;
&lt;br /&gt;
The North American Federation was formed on 5 October 2045 from the United States of America and the Republic of Canada, whose federal governments merged together after decades of economic integration between the two countries. Many people from the English-speaking parts of former-Canada, especially Ontario, still identify themselves as Canadians.&lt;br /&gt;
&lt;br /&gt;
The government of the NAF is federal, presidential, and constitutional republic. It is split into three branches: legislative, executive, and judicial. The legislative branch is primarily the Congress of North America, which is a bicameral legislature. The upper house is the Parliament of North America, which is led by the Prime Minister and elected by national proportional representation, and the lower house is the Senate, which is led by the Vice President and elected from single member districts. The executive branch is led by the President, who is elected alongside the Vice President in a nationwide ranked-choice election. The executive branch also oversees many federal departments, which are led jointly by the President and Prime Minister. The President is considered the Head of State and Head of Government of North America.&lt;br /&gt;
&lt;br /&gt;
The United States was a major player in the Second Space Race, so upon its formation, the North American Federation was already a strongly established power on the Moon and Mars. The country lost most of its Martian colonies during the [[Martian Revolutions]], but still maintains a few. Following that, the North American Lunar colonies were reorganized into semi-autonomous states with special representation in Congress, preventing revolutionary ideas from taking hold in the remaining North American colonies. Many of the most influential Martian settlements are formerly-North American colonies, including Jezero, the capital of the Empire of Mars.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;See also: [[wikipedia:History_of_the_United_States|Wikipedia: History of the United States]], [[wikipedia:History_of_Canada|Wikipedia: History of Canada]]&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prior to Unification (2016 - 2045) ===&lt;br /&gt;
Following the end of the First Cold War and the fall of the Soviet Union, the Democratic Party in the United States shifted away from labor-liberalism and towards neoliberalism. However, the Presidential Election of 2016 between Democrat Bernie Sanders and Republican Donald Trump saw this shift reversed. Sanders ran on a platform of social democracy and expanded workers rights, and won the election with particularly strong support in the Rust Belt. His first term saw the expansion of the Affordable Care Act into a universal healthcare system, as well as a raised minimum wage and further protections for worker unions. During the 2020 election, Sanders ran against the Republican Marco Rubio. In contrast to Trump&#039;s populist campaign in 2016, Rubio ran on a moderate conservative agenda, referring to Sanders as a socialist. Although Rubio outperformed Sanders in the southern states, Sanders consolidated support in the Great Lakes region and won reelection, though by a smaller margin than in 2016. Sanders&#039; second term saw few legislative successes due to disloyalty from moderate Democrats in Congress.&lt;br /&gt;
&lt;br /&gt;
The 2024 Presidential Election in the United States saw the Democratic Party nominate Elizabeth Warren, Sanders&#039; Vice President, against Florida Governor Ron DeSantis. Warren promised to continue Sanders&#039; pro-worker and pro-industry policies, while DeSantis campaigned on a socially conservative and pro-business agenda. Due to slow economic growth during Sanders&#039; second term, DeSantis&#039; pro-business policies resonated with moderates, but his staunch conservatism was off-putting to some voters. Ultimately, Warren won the election thanks to narrow margins in Ohio, Indiana, and Virginia. While the Democrats controlled both houses of Congress, many Democrats routinely sided with the Republican minority, undermining Warren&#039;s ability to pass policy. Some of them left the Democratic Party altogether, forming the Liberal Democratic Caucus.&lt;br /&gt;
&lt;br /&gt;
By January 2028, many moderate Democrats and some moderate Republicans became attracted to the Liberal Democratic Caucus&#039; policies. By March, it was clear that Warren would be the Democratic Party&#039;s nominee, so these moderates formed the Liberal Democratic Party. The 2028 Presidential Election became a three-way race between Warren, nominated by the remaining Democrats, Dan Crenshaw, nominated by the Republicans, and Josh Shapiro, nominated by the Liberal Democrats. Shapiro gained strong support in liberal-leaning suburbs and managed to win 108 Electoral College votes. Since no candidate won enough electoral votes for a majority, Shapiro pledged his electors to support Crenshaw in exchange for a cabinet position. However, due to faithless elector laws, only 64 of Shapiro&#039;s votes could be cast for Crenshaw, leaving him still short of a majority. Congress voted to reelect Warren, making Shapiro her Vice President.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=Martian_Revolutions&amp;diff=3</id>
		<title>Martian Revolutions</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=Martian_Revolutions&amp;diff=3"/>
		<updated>2024-11-24T01:47:19Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Wrote a short blurb&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;Martian Revolutions&#039;&#039;&#039; were a series of conflicts that lasted from 2096 to 2113, where several Martian colonies fought for political freedom and independence from Earth. The first revolution began on 27 July 2096 in the North American Jezero colony, when activists led by Charlotte Richardson seized control of the colonial government. This prompted similar action in other North American colonies, which by mid-2098 had spread to other countries&#039; colonies as well. Initially, many revolutionaries called for a single federal Martian state. However, the movement split when supporters of Richardson proclaimed the Empire of Mars in 2108 and crowned her as the empress. In reaction, the Republic of Mars was declared later that year. The conflicts officially ended on 4 February 2113 when the North American President Yusef Halifax declared that the NAF no longer intended to reclaim its lost colonies.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
	<entry>
		<id>https://wiki.atom596.com/index.php?title=North_American_Federation&amp;diff=2</id>
		<title>North American Federation</title>
		<link rel="alternate" type="text/html" href="https://wiki.atom596.com/index.php?title=North_American_Federation&amp;diff=2"/>
		<updated>2024-11-23T19:24:25Z</updated>

		<summary type="html">&lt;p&gt;EmpressAutumn: Added the main summary and some pre-unification United States history&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The &#039;&#039;&#039;North American Federation&#039;&#039;&#039; (&#039;&#039;&#039;NAF&#039;&#039;&#039;), sometimes referred to as &#039;&#039;&#039;North America&#039;&#039;&#039; or simply &#039;&#039;&#039;America&#039;&#039;&#039; is a federal state located mostly in North America. It is the second largest country by land area and the fourth largest by population, being home to 510 million people as of the 2150 census. Its largest cities are New York, Los Angeles, Chicago, and Toronto, and its capital is Washington, DC.&lt;br /&gt;
&lt;br /&gt;
The North American Federation was formed on 5 October 2045 from the United States of America and the Republic of Canada, whose federal governments merged together after decades of economic integration between the two countries. Many people from the English-speaking parts of former-Canada, especially Ontario, still identify themselves as Canadians.&lt;br /&gt;
&lt;br /&gt;
The government of the NAF is federal, presidential, and constitutional republic. It is split into three branches: legislative, executive, and judicial. The legislative branch is primarily the Congress of North America, which is a bicameral legislature. The upper house is the Parliament of North America, which is led by the Prime Minister and elected by national proportional representation, and the lower house is the Senate, which is led by the Vice President and elected from single member districts. The executive branch is led by the President, who is elected alongside the Vice President in a nationwide ranked-choice election. The executive branch also oversees many federal departments, which are led jointly by the President and Prime Minister. The President is considered the Head of State and Head of Government of North America.&lt;br /&gt;
&lt;br /&gt;
The United States was a major player in the Second Space Race, so upon its formation, the North American Federation was already a strongly established power on the Moon and Mars. The country lost most of its Martian colonies during the Martian Revolutions, but still maintains a few. Following that, the North American Lunar colonies were reorganized into semi-autonomous states with special representation in Congress, preventing revolutionary ideas from taking hold in the remaining North American colonies. Many of the most influential Martian settlements are formerly-North American colonies, including Jezero, the capital of the Empire of Mars.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&#039;&#039;See also: [[wikipedia:History_of_the_United_States|Wikipedia: History of the United States]], [[wikipedia:History_of_Canada|Wikipedia: History of Canada]]&#039;&#039;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prior to Unification (2016 - 2045) ===&lt;br /&gt;
Following the end of the First Cold War and the fall of the Soviet Union, the Democratic Party in the United States shifted away from labor-liberalism and towards neoliberalism. However, the Presidential Election of 2016 between Democrat Bernie Sanders and Republican Donald Trump saw this shift reversed. Sanders ran on a platform of social democracy and expanded workers rights, and won the election with particularly strong support in the Rust Belt. His first term saw the expansion of the Affordable Care Act into a universal healthcare system, as well as a raised minimum wage and further protections for worker unions. During the 2020 election, Sanders ran against the Republican Marco Rubio. In contrast to Trump&#039;s populist campaign in 2016, Rubio ran on a moderate conservative agenda, referring to Sanders as a socialist. Although Rubio outperformed Sanders in the southern states, Sanders consolidated support in the Great Lakes region and won reelection, though by a smaller margin than in 2016. Sanders&#039; second term saw few legislative successes due to disloyalty from moderate Democrats in Congress.&lt;br /&gt;
&lt;br /&gt;
The 2024 Presidential Election in the United States saw the Democratic Party nominate Elizabeth Warren, Sanders&#039; Vice President, against Florida Governor Ron DeSantis. Warren promised to continue Sanders&#039; pro-worker and pro-industry policies, while DeSantis campaigned on a socially conservative and pro-business agenda. Due to slow economic growth during Sanders&#039; second term, DeSantis&#039; pro-business policies resonated with moderates, but his staunch conservatism was off-putting to some voters. Ultimately, Warren won the election thanks to narrow margins in Ohio, Indiana, and Virginia. While the Democrats controlled both houses of Congress, many Democrats routinely sided with the Republican minority, undermining Warren&#039;s ability to pass policy. Some of them left the Democratic Party altogether, forming the Liberal Democratic Caucus.&lt;br /&gt;
&lt;br /&gt;
By January 2028, many moderate Democrats and some moderate Republicans became attracted to the Liberal Democratic Caucus&#039; policies. By March, it was clear that Warren would be the Democratic Party&#039;s nominee, so these moderates formed the Liberal Democratic Party. The 2028 Presidential Election became a three-way race between Warren, nominated by the remaining Democrats, Dan Crenshaw, nominated by the Republicans, and Josh Shapiro, nominated by the Liberal Democrats. Shapiro gained strong support in liberal-leaning suburbs and managed to win 108 Electoral College votes. Since no candidate won enough electoral votes for a majority, Shapiro pledged his electors to support Crenshaw in exchange for a cabinet position. However, due to faithless elector laws, only 64 of Shapiro&#039;s votes could be cast for Crenshaw, leaving him still short of a majority. Congress voted to reelect Warren, making Shapiro her Vice President.&lt;/div&gt;</summary>
		<author><name>EmpressAutumn</name></author>
	</entry>
</feed>