local lang_obj = mw.language.getContentLanguage; -- make a language object for the local language; used here for languages and dates  
----------------------------< U N C A T E G O R I Z E D _ N A M E S P A C E S >------------------------------  
List of namespaces that should not be included in citation error categories.
Same as setting notracking = true by default.  
Note: Namespace names should use underscores instead of spaces.  
local uncategorized_namespaces = { 'User', 'Talk', 'User_talk', 'Wikipedia_talk',
'File_talk', 'Template_talk', 'Help_talk', 'Category_talk', 'Portal_talk',
'Book_talk', 'Draft_talk', 'Education_Program_talk', 'Module_talk', 'MediaWiki_talk' };
local uncategorized_subpages = {'/[Ss]andbox', '/[Tt]estcases', '/[^/]*[Ll]og', '/[Aa]rchive'}; -- list of Lua patterns found in page names of pages we should not categorize  
----------------------------< M E S S A G E S >--------------------------------------------------------------  
Translation table  
The following contains fixed text that may be output as part of a citation.
This is separated from the main body to aid in future translations of this
module.  
local messages = {
['agency'] = '$1 $2', -- $1 is sepc, $2 is agency
['archived-dead'] = '$2 அன்று $1 பரணிடப்பட்டது',
['archived-live'] = '$2 அன்று மூலதளத்திலிருந்து $1 எடுக்கப்பட்டது',
['archived-missing'] = '$2 அன்று மூலதளத்திலிருந்து $1 பரணிடப்பட்டது',
['archived'] = 'பரணிடப்பட்டது',
['archived-unfit'] = 'Archived from the original on ',
['by'] = 'By', -- contributions to authored works: introduction, foreword, afterword
['cartography'] = 'Cartography by $1',
['editor'] = 'ed.',
['editors'] = 'eds.',
['edition'] = '($1&nbsp;ed.)',
['episode'] = 'Episode $1',
['et al'] = 'et&nbsp;al.',
['in'] = 'In', -- edited works
['inactive'] = 'inactive',
['inset'] = '$1 inset',
['interview'] = 'Interviewed by $1',
['lay summary'] = 'Lay summary',
['mismatch'] = '<code>&#124;$1=</code> / <code>&#124;$2=</code> mismatch', -- $1 is year param name; $2 is date param name
['newsgroup'] = 'Newsgroup:&nbsp;$1',
['notitle'] = 'No title', -- for |title=() and (in the future) |title=
['original'] = 'the original',
['origdate'] = ' [$1]',
['published'] = ' (published $1)',
['retrieved'] = 'பார்த்த நாள் $1',
['season'] = 'Season $1',
['section'] = '§&nbsp;$1',
['sections'] = '§§&nbsp;$1',
['series'] = '$1 $2', -- $1 is sepc, $2 is series
['seriesnum'] = '$1 தொடர்',
['translated'] = '$1 ஆல் மொழிபெயர்க்கப்பட்டது',
['type'] = ' ($1)', -- for titletype
['written'] = '$1 இல் எழுதப்பட்டது',  
['vol'] = '$1 பாகம்&nbsp;$2', -- $1 is sepc; bold journal style volume is in presentation{}
['vol-no'] = '$1 பாகம்&nbsp;$2 எண்.&nbsp;$3', -- sepc, volume, issue
['issue'] = '$1 எண்.&nbsp;$2', -- $1 is sepc  
['j-vol'] = '$1 $2', -- sepc, volume; bold journal volume is in presentation{}
['j-issue'] = ' ($1)',  
['nopp'] = '$1 $2'; -- page(s) without prefix; $1 is sepc  
['p-prefix'] = "$1 பக்.&nbsp;$2", -- $1 is sepc
['pp-prefix'] = "$1 பக்.&nbsp;$2", -- $1 is sepc
['j-page(s)'] = ': $1', -- same for page and pages  
['sheet'] = '$1 தாள்&nbsp;$2', -- $1 is sepc
['sheets'] = '$1 தாள்கள்&nbsp;$2', -- $1 is sepc
['j-sheet'] = ': தாள்&nbsp;$1',
['j-sheets'] = ': தாள்கள்&nbsp;$1',  
['language'] = '(in $1)',
['via'] = " &ndash; via $1",
['event'] = 'Event occurs at',
['minutes'] = 'நிமிடங்கள்',  
-- Determines the location of the help page
['help page link'] = 'உதவி:CS1 errors',
['help page label'] = 'உதவி',  
-- categories
['cat wikilink'] = '', -- $1 is the category name
[':cat wikilink'] = 'link', -- category name as maintenance message wikilink; $1 is the category name  
-- Internal errors (should only occur if configuration is bad)
['undefined_error'] = 'Called with an undefined error condition',
['unknown_ID_key'] = 'Unrecognized ID key: ', -- an ID key in id_handlers not found in ~/Identifiers func_map{}
['unknown_ID_access'] = 'Unrecognized ID access keyword: ', -- an ID access keyword in id_handlers not found in keywords_lists['id-access']{}
['unknown_argument_map'] = 'Argument map not defined for this variable',
['bare_url_no_origin'] = 'Bare URL found but origin indicator is nil or empty',  
['warning_msg_e'] = '<span>One or more <code>&#123;{$1}}</code> templates have errors</span>; messages may be hidden ().'; -- $1 is template link
['warning_msg_m'] = '<span>One or more <code>&#123;{$1}}</code> templates have maintenance messages</span>; messages may be hidden ().'; -- $1 is template link
}  
--CitationClass= in the cs1|2 templates to the canonical template name when
the value assigned to |CitationClass= is different from the canonical template name. |CitationClass= values are
used as class attributes in the <cite> tag that encloses the citation so these names may not contain spaces while
the canonical template name may. These names are used in warning_msg_e and warning_msg_m to create links to the
template's documentation when an article is displayed in preivew mode.  
Most cs1|2 template |CitationClass= values at en.wiki match their canonical template names so are not listed here.  
local citation_class_map_t = { -- TODO: if kept, these and all other config.CitationClass 'names' require some sort of i18n
['audio-visual'] = 'AV media', -- TODO: move to ~/Configuration
['AV-media-notes'] = 'AV media notes',
['encyclopaedia'] = 'encyclopedia',
['mailinglist'] = 'mailing list',
['pressrelease'] = 'press release'
}  
--[=[-------------------------< E T _ A L _ P A T T E R N S >--------------------------------------------------  
This table provides Lua patterns for the phrase "et al" and variants in name text
(author, editor, etc.). The main module uses these to identify and emit the 'etal' message.  
]=]  
local et_al_patterns = {
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][%.;,\"']*$", -- variations on the 'et al' theme
"[;,]? *[\"']*%f[%a][Ee][Tt]%.? *[Aa][Ll][Ii][AaIi][Ee]?[%.;,\"']*$", -- variations on the 'et alia', 'et alii' and 'et aliae' themes (false positive 'et aliie' unlikely to match)
"[;,]? *%f[%a]and [Oo]thers", -- an alternative to et al.
"%[%[ *[Ee][Tt]%.? *[Aa][Ll]%.? *%]%]", -- a wikilinked form
"%(%( *[Ee][Tt]%.? *[Aa][Ll]%.? *%)%)", -- a double-bracketed form (to counter partial removal of ((...)) syntax)
"[%(%[] *[Ee][Tt]%.? *[Aa][Ll]%.? *[%)%]]", -- a bracketed form
}  
----------------------------< P R E S E N T A T I O N >------------------------  
Fixed presentation markup. Originally part of citation_config.messages it has
been moved into its own, more semantically correct place.  
local presentation =
{
-- .citation-comment class is specified at Help:CS1_errors#Controlling_error_message_display
['hidden-error'] = '<span>$1</span>',
['visible-error'] = '<span>$1</span>',
['hidden-maint'] = '<span>$1</span>',  
['accessdate'] = '<span>$1$2</span>', -- to allow editors to hide accessdate using personal CSS  
['bdi'] = '<bdi$1>$2</bdi>', -- bidirectional isolation used with |script-title= and the like  
['cite'] = '<cite>$2</cite>'; -- for use when citation does not have a namelist and |ref= not set so no id="..." attribute
['cite-id'] = '<cite id="$1">$3</cite>'; -- for use when when |ref= is set or when citation has a namelist  
['format'] = ' <span>($1)</span>', -- for |format=, |chapter-format=, etc.  
-- various access levels, for |access=, |doi-access=, |arxiv=, ...
-- narrow no-break space &#8239; may work better than nowrap CSS. Or not? Browser support?  
['ext-link-access-signal'] = '<span title="$2">$3</span>', -- external link with appropriate lock icon
['free'] = {, title='Freely accessible'}, -- classes defined in Module:Citation/CS1/styles.css
['registration'] = {, title='Free registration required'},
['limited'] = {, title='Free access subject to limited trial, subscription normally required'},
['subscription'] = {, title='Paid subscription required'},  
['interwiki-icon'] = '<span title="$2">$3</span>',
['class-wikisource'] = 'cs1-ws-icon',  
['italic-title'] = "*$1*",