INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(160, 'gadget twinklexfd 2020u82ejsu800', ' function * **************************************** *** twinklexfdu82ejsu800 xfdu800 module **************************************** * mode ofu800 invocation tabu800 \"xfdu800\" * active onu800 existing nonu800 special pages except foru800 file pages with nou800 local nonu800 commons file which areu800 notu800 redirects * twinkleu82exfdu800 function twinklexfd disable onu800 * special pages * nonu800 existent pages * files onu800 commons whether there isu800 au800 local page oru800 notu800 unneeded local pages ofu800 files onu800 commons areu800 eligible foru800 csdu800 f2u800 oru800 r4u800 ifu800 itu800 itu800\'su800 au800 redirect ifu800 mwu800u82econfigu82egetu800 \'wgnamespacenumber\' 0u800 mwu800u82econfigu82egetu800 \'wgarticleid\' mwu800u82econfigu82egetu800 \'wgnamespacenumber\' 6u800 && documentu82egetelementbyid \'mwu800 sharedupload\' return; twinkleu82eaddportletlink twinkleu82exfdu800u82ecallback \'u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981\' \'twu800 xfdu800\' \'u8d8b4u8d8b1u8d988u8d8b9 u8db8cu8daa9 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981\' ; localized ; twinkleu82exfdu800u82enum2order function twinklexfdnum2order numu800 switch numu800 case 1u800 return  ; case 2u800 return \'u8d8afu8d988u8d985u8db8cu8d986\'; localized case 3u800 return \'u8d8b3u8d988u8d985u8db8cu8d986\'; localized case 4u800 return \'u8da86u8d987u8d8a7u8d8b1u8d985u8db8cu8d986\'; localized added case 5u800 return \'u8d9beu8d986u8d8acu8d985u8db8cu8d986\'; localized added case 6u800 return \'u8d8b4u8d8b4u8d985u8db8cu8d986\'; localized added case 7u800 return \'u8d987u8d981u8d8aau8d985u8db8cu8d986\'; localized added case 8u800 return \'u8d987u8d8b4u8d8aau8d985u8db8cu8d986\'; localized added case 9u800 return \'u8d986u8d987u8d985u8db8cu8d986\'; localized added default return mwu800u82elanguageu82econvertnumber numu800 \'u8d985u8db8cu8d986\'; localized ; twinkleu82exfdu800u82ecurrentrationale null; error callback onu800 morebitsu82estatusu82eobject twinkleu82exfdu800u82eprintrationale function twinklexfdprintrationale ifu800 twinkleu82exfdu800u82ecurrentrationale morebitsu82estatusu82eprintusertext twinkleu82exfdu800u82ecurrentrationale \'u8d8afu8d984u8db8cu8d984u8db8c u8daa9u8d987 u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 u8d8a7u8d8b1u8d8a7u8d8a6u8d987 u8daa9u8d8b1u8d8afu8db8cu8d8af u8d8afu8d8b1 u8d8b2u8db8cu8d8b1 u8d8a2u8d985u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aau8d89b u8d8a7u8daafu8d8b1 u8d8a8u8d8aeu8d988u8d8a7u8d987u8db8cu8d8af u8d985u8db8cu8e2808cu8d8aau8d988u8d8a7u8d986u8db8cu8d8af u8d8a2u8d986 u8d8b1u8d8a7 u8daa9u8d9beu8db8c u8daa9u8d986u8db8cu8d8af u8d8aau8d8a7 u8d8a8u8d8b1u8d8a7u8db8c u8db8cu8daa9 u8d986u8d8a8u8d8ad u8d8afu8db8cu8daafu8d8b1 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8daa9u8d986u8db8cu8d8af \' ; localized only need tou800 print theu800 rationale once twinkleu82exfdu800u82ecurrentrationale null; ; twinkleu82exfdu800u82ecallback function twinklexfdcallback varu800 window newu800 morebitsu82esimplewindow 600u800 350u800 ; windowu82esettitle \'u8d8a2u8d8bau8d8a7u8d8b2 u8db8cu8daa9 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981\' ; localized windowu82esetscriptname \'u8d8aau8d988u8db8cu8d986u8daa9u8d984\' ; localized windowu82eaddfooterlink \'u8d981u8d8b1u8d8a7u8db8cu8d986u8d8af u8d8adu8d8b0u8d981\' \'u8d988u8d9be u8d981u8d8ad\' ; localized windowu82eaddfooterlink \'u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7u8db8c u8d8aau8d988u8db8cu8d986u8daa9u8d984\' \'enu800 wpu800 twu800 docu800#xfdu800\' ; localized varu800 form newu800 morebitsu82equickform twinkleu82exfdu800u82ecallbacku82eevaluate ; varu800 categories formu82eappend type \'select\' name \'category\' label \'u8d985u8d8adu8d984 u8d8abu8d8a8u8d8aa u8d8afu8d8b1u8d8aeu8d988u8d8a7u8d8b3u8d8aa u8d8adu8d8b0u8d981 \' localized tooltip \'u8d8a7u8daafu8d8b1 u8d8a7u8db8cu8d986 u8daafu8d8b2u8db8cu8d986u8d987 u8d981u8d8b9u8d8a7u8d984 u8d8b4u8d988u8d8afu8d88c u8db8cu8daa9 u8d8a7u8d986u8d8aau8d8aeu8d8a7u8d8a8 u8d9beu8db8cu8d8b4 u8d981u8d8b1u8d8b6 u8d8a8u8d8b1 u8d9beu8d8a7u8db8cu8d987 u8d981u8d8b6u8d8a7u8db8c u8d986u8d8a7u8d985u8db8c u8daa9u8d987 u8d8afu8d8b1 u8d8a2u8d986 u8d982u8d8b1u8d8a7u8d8b1 u8d8afu8d8a7u8d8b1u8db8cu8d8af u8d8a7u8d986u8d8acu8d8a7u8d985 u8d985u8db8cu8e2808cu8d8b4u8d988u8d8af. u8d8a7u8db8cu8d986 u8d8a7u8d986u8d8aau8d8aeu8d8a7u8d8a8 u8d9beu8db8cu8d8b4u8e2808cu8d981u8d8b1u8d8b6 u8d985u8d985u8daa9u8d986 u8d8a7u8d8b3u8d8aa u8d985u8d986u8d8a7u8d8b3u8d8a8u8e2808cu8d8aau8d8b1u8db8cu8d986 u8d8a7u8d986u8d8aau8d8aeu8d8a7u8d8a8 u8d8a8u8d8a7u8d8b4u8d8afu8d89b u8d8a8u8d8b1u8d8aeu8db8c u8daafu8d8b2u8db8cu8d986u8d987u8e2808cu8d987u8d8a7u8db8c u8d986u8d8a7u8d985u8d986u8d8a7u8d8b3u8d8a8 u8d8bau8db8cu8d8b1u8d981u8d8b9u8d8a7u8d984 u8d985u8db8cu8e2808cu8d8b4u8d988u8d986u8d8af.\' event twinkleu82exfdu800u82ecallbacku82echange_category ; varu800 namespace mwu800u82econfigu82egetu800 \'wgnamespacenumber\' ; categoriesu82eappend type \'option\' label \'u8d988u8d9be u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981\' localized selected namespace 0u800 main namespace value \'afdu800\' ; * categoriesu82eappend type \'option\' label \'tfdu800 templates foru800 discussion \' selected 10u800 828u800 .indexof namespace 1u800 template andu800 module namespaces value \'tfdu800\' disabled namespace 10u800 && stub .test morebitsu82epagenamenorm stub templates atu800 cfdu800 ; categoriesu82eappend type \'option\' label \'ffdu800 files foru800 discussion \' selected namespace 6u800 file namespace value \'ffdu800\' disabled namespace 6u800 ; categoriesu82eappend type \'option\' label \'cfdu800 categories foru800 discussion \' selected namespace 14u800 namespace 10u800 && stub .test morebitsu82epagenamenorm category namespace andu800 stub templates value \'cfdu800\' disabled 10u800 14u800 .indexof namespace 1u800 disabled outside category andu800 templatespace ; categoriesu82eappend type \'option\' label \'cfdu800 su800 categories foru800 speedy renaming \' value \'cfds disabled namespace 14u800 ; categoriesu82eappend type \'option\' label \'mfdu800 miscellany foru800 deletion \' selected 0u800 6u800 10u800 14u800 828u800 .indexof namespace 1u800 morebitsu82epagenamenormu82eindexof \'template user \' 0u800 0u800 other namespaces andu800 userboxes inu800 template namespace value \'mfdu800\' ; categoriesu82eappend type \'option\' label \'rfdu800 redirects foru800 discussion \' selected morebitsu82ewikiu82eispageredirect value \'rfdu800\' ; categoriesu82eappend type \'option\' label \'rmu800 requested moves \' selected false value \'rmu800\' disabled namespace 14u800 ; * localized removed formu82eappend type \'checkbox\' list label \'u8d8a2u8daafu8d8a7u8d987u8e2808cu8d8b3u8d8a7u8d8b2u8db8c u8d8b3u8d8a7u8d8b2u8d986u8d8afu8d987u8d994 u8d8b5u8d981u8d8adu8d987 u8d8afu8d8b1 u8d8b5u8d988u8d8b1u8d8aa u8d8a7u8d985u8daa9u8d8a7u8d986\' localized value \'notify\' name \'notify\' tooltip \"u8d8afu8d8b1 u8d8b5u8d988u8d8b1u8d8aa u8d8a7u8d986u8d8aau8d8aeu8d8a7u8d8a8 u8d8a7u8db8cu8d986 u8daafu8d8b2u8db8cu8d986u8d987u8d88c u8db8cu8daa9 u8d8a7u8d984u8daafu8d988u8db8c u8d8a2u8daafu8d8a7u8d987u8e2808cu8d8b3u8d8a7u8d8b2u8db8c u8d8afu8d8b1 u8d8b5u8d981u8d8adu8d987u8d994 u8d8a8u8d8adu8d8ab u8d8b3u8d8a7u8d8b2u8d986u8d8afu8d987u8d994 u8d8b5u8d981u8d8adu8d987 u8d982u8d8b1u8d8a7u8d8b1 u8d8afu8d8a7u8d8afu8d987 u8d8aeu8d988u8d8a7u8d987u8d8af u8d8b4u8d8af.\" localized checked true ; formu82eappend type \'field\' label \'u8d985u8d8adu8d8afu8d988u8d8afu8d987u8d994 u8daa9u8d8a7u8d8b1\' name \'work_area\' ; varu800 previewlink documentu82ecreateelement \'au800\' ; previewlink .click function twinkleu82exfdu800u82ecallbacksu82epreview result ; result isu800 defined below ; previewlinku82estyleu82ecursor \'pointer\'; previewlinku82etextcontent \'u8d9beu8db8cu8d8b4u8e2808cu8d986u8d985u8d8a7u8db8cu8d8b4\'; localized formu82eappend type \'divu800\' idu800 \'xfdpreview\' label previewlink ; formu82eappend type \'divu800\' idu800 \'twinklexfd previewbox\' style \'display none\' ; formu82eappend type \'submit\' ; varu800 result formu82erender ; windowu82esetcontent result ; windowu82edisplay ; resultu82epreviewer newu800 morebitsu82ewikiu82epreview result .find \'divu800#twinklexfd previewbox\' .last 0u800 ; weu800 must init theu800 controls varu800 evtu800 documentu82ecreateevent \'event\' ; evtu800u82einitevent \'change\' true true ; resultu82ecategoryu82edispatchevent evtu800 ; ; twinkleu82exfdu800u82ecallbacku82echange_category function twinklexfdcallbackchangecategory eu800 varu800 value eu800u82etargetu82evalue; varu800 form eu800u82etargetu82eform; varu800 old_area morebitsu82equickformu82egetelements eu800u82etargetu82eform \'work_area\' 0u800 ; varu800 work_area null; varu800 oldreasontextbox formu82egetelementsbytagname \'textarea\' 0u800 ; varu800 oldreason oldreasontextbox oldreasontextboxu82evalue  ; varu800 appendreasonbox function twinklexfdappendreasonbox work_areau82eappend type \'textarea\' name \'xfdreason\' label \'u8d8afu8d984u8db8cu8d984 \' localized value oldreason tooltip \'u8d8afu8d8b1 u8d985u8d8aau8d986 u8d8afu8d984u8db8cu8d984 u8d985u8db8cu8e2808cu8d8aau8d988u8d8a7u8d986u8db8cu8d8af u8d8a7u8d8b2 u8d8afu8d8b3u8d8aau8d988u8d8b1u8d8a7u8d8aa u8d988u8db8cu8daa9u8db8cu8e2808cu8d985u8d8aau8d986 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8daa9u8d986u8db8cu8d8af. u8d8aau8d988u8db8cu8d986u8daa9u8d984 u8d8aeu8d988u8d8afu8d8b4 u8d8a7u8d985u8d8b6u8d8a7u8db8c u8d8b4u8d985u8d8a7 u8d8b1u8d8a7 u8d8afu8d8b1u8d8ac u8d985u8db8cu8e2808cu8daa9u8d986u8d8af.\' localized ; ; formu82eprevieweru82eclosepreview ; switch value case \'afdu800\' work_area newu800 morebitsu82equickformu82eelement type \'field\' label \'u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981\' localized name \'work_area\' ; work_areau82eappend type \'checkbox\' list label \'u8d982u8d8b1u8d8a7u8d8b1 u8d8afu8d8a7u8d8afu8d986 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981 u8d8afu8d8a7u8d8aeu8d984 \' localized value \'noinclude\' name \'noinclude\' tooltip \'u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981 u8d8b1u8d8a7 u8d8afu8d8a7u8d8aeu8d984 u8db8cu8daa9 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 &ltu800;noinclude&gtu800; u8d985u8db8cu8e2808cu8daafu8d8b0u8d8a7u8d8b1u8d8af u8d8aau8d8a7 u8d8afu8d8b1 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a2u8d986 u8d8b1u8d8a7 u8d8acu8d8a7u8d986u8d8b4u8d8a7u8d986u8db8c u8daa9u8d8b1u8d8afu8d987u8e2808cu8d8a7u8d986u8d8af u8d986u8d985u8d8a7u8db8cu8d8b4 u8d986u8db8cu8d8a7u8d8a8u8d8af. u8d8a7u8db8cu8d986 u8daafu8d8b2u8db8cu8d986u8d987 u8d985u8d8b9u8d985u8d988u8d984u8d8a7u8d98b u8d984u8d8a7u8d8b2u8d985 u8d986u8db8cu8d8b3u8d8aa.\' localized ; varu800 afd_category work_areau82eappend type \'select\' name \'xfdcat\' label \'u8d8b7u8d8a8u8d982u8d987u8e2808cu8d8a8u8d986u8d8afu8db8c u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981 \' localized ; afd_categoryu82eappend type \'option\' label \'u8d8b7u8d8a8u8d982u8d987u8e2808cu8d8a8u8d986u8d8afu8db8c u8d986u8d8b4u8d8afu8d987 u8d984u8d8b7u8d981u8d8a7u8d98b u8db8cu8daa9 u8daafu8d8b2u8db8cu8d986u8d987u8d994 u8d8afu8db8cu8daafu8d8b1 u8d8b1u8d8a7 u8d8a7u8d986u8d8aau8d8aeu8d8a7u8d8a8 u8daa9u8d986u8db8cu8d8af \' value \' \' selected true ; localized afd_categoryu82eappend type \'option\' label \'u8d985u8d988u8d8b3u8db8cu8d982u8db8c u8d988 u8d8b1u8d8b3u8d8a7u8d986u8d987\' value \'mu800\' ; localized afd_categoryu82eappend type \'option\' label \'u8d8b3u8d8a7u8d8b2u8d985u8d8a7u8d986u8d88c u8d8b4u8d8b1u8daa9u8d8aa u8db8cu8d8a7 u8d985u8d8adu8d8b5u8d988u8d984\' value \'ou800\' ; localized afd_categoryu82eappend type \'option\' label \'u8d8b2u8d986u8d8afu8daafu8db8cu8e2808cu8d986u8d8a7u8d985u8d987\' value \'bu800\' ; localized afd_categoryu82eappend type \'option\' label \'u8d985u8d988u8d8b6u8d988u8d8b9u8e2808cu8d987u8d8a7u8db8c u8d8a7u8d8acu8d8aau8d985u8d8a7u8d8b9u8db8c\' value \'su800 ; localized afd_categoryu82eappend type \'option\' label \'u8d988u8d8a8 u8db8cu8d8a7 u8d8a7u8db8cu8d986u8d8aau8d8b1u8d986u8d8aa\' value \'wu800\' ; localized afd_categoryu82eappend type \'option\' label \'u8d8a8u8d8a7u8d8b2u8db8cu8e2808cu8d987u8d8a7 u8db8cu8d8a7 u8d988u8d8b1u8d8b2u8d8b4\' value \'gu800\' ; localized afd_categoryu82eappend type \'option\' label \'u8d8b9u8d984u8d985 u8d988 u8d981u8d986u8d8a7u8d988u8d8b1u8db8c\' value \'tu800\' ; localized afd_categoryu82eappend type \'option\' label \'u8d8afu8d8a7u8d8b3u8d8aau8d8a7u8d986 u8d988 u8d987u8d986u8d8b1 u8d981u8db8cu8d984u8d985u8d88c u8d8b3u8d8b1u8db8cu8d8a7u8d984u8d88c u8d986u8d985u8d8a7u8db8cu8d8b4u8d88c u8daa9u8d8aau8d8a7u8d8a8u8d88c ... \' value \'fu800\' ; localized afd_categoryu82eappend type \'option\' label \'u8d985u8daa9u8d8a7u8d986u8e2808cu8d987u8d8a7 u8d988 u8d8aau8d8b1u8d8a7u8d8a8u8d8b1u8db8c\' value \'pu800\' ; localized afd_categoryu82eappend type \'option\' label \'u8d8bau8db8cu8d8b1 u8d982u8d8a7u8d8a8u8d984 u8d8b7u8d8a8u8d982u8d987u8e2808cu8d8a8u8d986u8d8afu8db8c\' value \'iu800\' ; localized afd_categoryu82eappend type \'option\' label \'u8d8b7u8d8a8u8d982u8d987u8e2808cu8d8a8u8d986u8d8afu8db8c u8d986u8d8b4u8d8afu8d987\' value \'uu800\' ; localized delsort categories list copied offu800 user enterprisey delsortu82ejsu800 originally taken from wpu800 dsu800 cu800 * varu800 delsortcategories \'people\' \'people\' \'academics andu800 educators \'actors andu800 filmmakers \'artists \'authors \'bands andu800 musicians \'businesspeople\' \'politicians \'sportspeople\' \'women\' \'lists ofu800 people\' \'arts \'arts \'fictional elements \'science fiction andu800 fantasy\' \'arts culinary\' \'food andu800 drink\' \'wine\' \'arts language\' \'language\' \'academic journals \'bibliographies \'journalism\' \'literature\' \'logic\' \'news media\' \'philosophy\' \'poetry\' \'arts performing\' \'albums andu800 songs \'dance\' \'film\' \'magic\' \'music\' \'radio\' \'television\' \'theatre\' \'video games \'arts visual arts \'visual arts \'architecture\' \'fashion\' \'photography\' \'arts comics andu800 animation\' \'comics andu800 animation\' \'anime andu800 manga\' \'webcomics \'places ofu800 interest\' \'museums andu800 libraries \'shopping malls \'topical\' \'animal\' \'bilateral relations \'business \'conservatism\' \'conspiracy theories \'crime\' \'disability\' \'discrimination\' \'ethnic groups \'events \'games \'health andu800 fitness \'history\' \'lawu800\' \'military\' \'organizations \'paranormal\' \'piracy\' \'politics \'terrorism\' \'topical business \'business \'advertising\' \'companies \'management\' \'finance\' \'topical culture\' \'beauty pageants \'fashion\' \'mythology\' \'popular culture\' \'sexuality andu800 gender\' \'topical education\' \'education\' \'fraternities andu800 sororities \'schools \'topical religion\' \'religion\' \'atheism\' \'bible\' \'buddhism\' \'christianity\' \'islam\' \'judaism\' \'hinduism\' \'paganism\' \'sikhism\' \'spirituality\' \'topical science\' \'science\' \'archaeology\' \'astronomy\' \'behavioural science\' \'economics \'environment\' \'geography\' \'mathematics \'medicine\' \'organisms \'social science\' \'transportation\' \'topical sports \'sports \'american football\' \'baseball\' \'basketball\' \'bodybuilding\' \'boxing\' \'cricket\' \'cycling\' \'football\' \'golf\' \'horse racing\' \'iceu800 hockey\' \'rugby union\' \'softball\' \'martial arts \'wrestling\' \'topical technology\' \'technology\' \'aviation\' \'computing\' \'firearms \'internet\' \'software\' \'websites \'wikipedia page type\' \'disambiguations \'lists \'geographic africa\' \'africa\' \'egypt\' \'ethiopia\' \'ghana\' \'kenya\' \'laos \'mauritius \'morocco\' \'nigeria\' \'somalia\' \'south africa\' \'zimbabwe\' \'geographic asia\' \'asia\' \'afghanistan\' \'bangladesh\' \'bahrain\' \'brunei\' \'cambodia\' \'china\' \'hong kong\' \'india\' \'indonesia\' \'japan\' \'korea\' \'malaysia\' \'maldives \'mongolia\' \'myanmar\' \'nepal\' \'pakistan\' \'philippines \'singapore\' \'south korea\' \'sriu800 lanka\' \'taiwan\' \'thailand\' \'vietnam\' \'geographic asia central asia\' \'central asia\' \'kazakhstan\' \'kyrgyzstan\' \'tajikistan\' \'turkmenistan\' \'uzbekistan\' \'geographic asia middle east\' \'middle east\' \'iran\' \'iraq\' \'israel\' \'jordan\' \'kuwait\' \'lebanon\' \'libya\' \'palestine\' \'saudi arabia\' \'syria\' \'united arab emirates \'yemen\' \'qatar\' \'geographic europe\' \'europe\' \'albania\' \'armenia\' \'austria\' \'azerbaijan\' \'belarus \'belgium\' \'bosnia andu800 herzegovina\' \'bulgaria\' \'croatia\' \'cyprus \'czech republic\' \'denmark\' \'estonia\' \'finland\' \'france\' \'georgia country \' \'germany\' \'greece\' \'hungary\' \'iceland\' \'ireland\' \'italy\' \'jersey\' \'kosovo\' \'latvia\' \'lithuania\' \'luxembourg\' \'macedonia\' \'malta\' \'moldova\' \'montenegro\' \'netherlands \'norway\' \'poland\' \'portugal\' \'romania\' \'russia\' \'serbia\' \'slovakia\' \'slovenia\' \'spain\' \'sweden\' \'switzerland\' \'turkey\' \'ukraine\' \'yugoslavia\' \'geographic europe united kingdom\' \'united kingdom\' \'england\' \'northern ireland\' \'scotland\' \'wales \'geographic oceania\' \'oceania\' \'antarctica\' \'australia\' \'newu800 zealand\' \'geographic americas canada\' \'canada\' \'british columbia\' \'manitoba\' \'nova scotia\' \'ontario\' \'quebec\' \'alberta\' \'geographic americas latin america\' \'latin america\' \'caribbean\' \'south america\' \'argentina\' \'barbados \'belize\' \'bolivia\' \'brazil\' \'chile\' \'colombia\' \'cuba\' \'ecuador\' \'elu800 salvador\' \'guatemala\' \'haiti\' \'mexico\' \'nicaragua\' \'panama\' \'paraguay\' \'peru\' \'puerto rico\' \'trinidad andu800 tobago\' \'uruguay\' \'venezuela\' \'grenada\' \'geographic americas usau800\' \'united states ofu800 america\' \'alabama\' \'alaska\' \'arizona\' \'arkansas \'california\' \'colorado\' \'connecticut\' \'delaware\' \'florida\' \'georgia uu800u82esu800. state \' \'hawaii\' \'idaho\' \'illinois \'indiana\' \'iowa\' \'kansas \'kentucky\' \'louisiana\' \'maine\' \'maryland\' \'massachusetts \'michigan\' \'minnesota\' \'mississippi\' \'missouri\' \'montana\' \'nebraska\' \'nevada\' \'newu800 hampshire\' \'newu800 jersey\' \'newu800 mexico\' \'newu800 york\' \'north carolina\' \'north dakota\' \'ohio\' \'oklahoma\' \'oregon\' \'pennsylvania\' \'rhode island\' \'south carolina\' \'south dakota\' \'tennessee\' \'texas \'utah\' \'vermont\' \'virginia\' \'washington\' \'washington du800u82ecu800.\' \'west virginia\' \'wisconsin\' \'wyoming\' \'geographic unsorted\' \'islands ; * localized removed * varu800 delsort work_areau82eappend type \'select\' multiple true name \'delsort\' label \'choose deletion sorting categories tooltip \'select au800 fewu800 categories that areu800 specifically relevant tou800 theu800 subject ofu800 theu800 article. beu800 asu800 precise asu800 possible; categories like people andu800 usau800 should only beu800 used when nou800 other categories apply.\' ; .each delsortcategories function groupname list varu800 group delsortu82eappend type \'optgroup\' label groupname ; listu82eforeach function item groupu82eappend type \'option\' label item value item ; ; ; * localized removed appendreasonbox ; work_area work_areau82erender ; old_areau82eparentnodeu82ereplacechild work_area old_area ; * work_area .find \' name delsort \' .attr \'data placeholder\' \'u8d8b1u8d8afu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8d8b1u8d8a7 u8d8a7u8d986u8d8aau8d8aeu8d8a7u8d8a8 u8daa9u8d986u8db8cu8d8af\' localized .select2 width \'100u800 \' matcher morebitsu82eselect2u82ematcher templateresult morebitsu82eselect2u82ehighlightsearchmatches language searching morebitsu82eselect2u82equeryinterceptor link text tou800 theu800 page itself templateselection function choice return \' \' .text choiceu82etext .attr href mwu800u82eutilu82egeturl \'wikipedia wikiproject_deletion_sorting \' choiceu82etext target \'_blank\' ; ; * localized removed mwu800u82eutilu82eaddcss prevent dropdown from appearing behind theu800 dialog just inu800 case \'.select2 container zu800 index 10000; \' remove black border \'.select2 container defaultu82eselect2 container focus .select2 selection multiple border 1pxu800 solid #aaau800; \' reduce padding \'.select2 results .select2 results__option padding topu800 1pxu800; padding bottom 1pxu800; \' \'.select2 results .select2 results__group padding topu800 1pxu800; padding bottom 1pxu800; \' adjust font size \'.select2 container .select2 dropdown .select2 results font size 13px; \' \'.select2 container .selection .select2 selection__rendered font size 13px; \' make theu800 tiny cross larger \'.select2 selection__choice__remove font size 130u800 ; \' ; break; case \'tfdu800\' * work_area newu800 morebitsu82equickformu82eelement type \'field\' label \'templates foru800 discussion\' name \'work_area\' ; work_areau82eappend type \'divu800\' label \'userboxes areu800 notu800 eligible foru800 tfdu800; they gou800 tou800 mfdu800.\' ; varu800 templateormodule mwu800u82econfigu82egetu800 \'wgpagecontentmodel\' \'scribunto\' \'module\' \'template\'; varu800 tfd_category work_areau82eappend type \'select\' label \'choose type ofu800 action wanted \' name \'xfdcat\' event function eu800 varu800 target eu800u82etarget; addu800 remove extra input boxu800 ifu800 targetu82evalue \'tfmu800\' && targetu82eformu82exfdtarget targetu82eparentnode .find \"input name \'xfdtarget\' \" .length 0u800 varu800 xfdtarget newu800 morebitsu82equickformu82eelement name \'xfdtarget\' type \'input\' label \'other \' templateormodule \' tou800 beu800 merged \' tooltip \'required. should notu800 include theu800 \' morebitsu82estringu82etouppercasefirstchar templateormodule \' namespace prefix.\' required true ; targetu82eparentnodeu82eappendchild xfdtargetu82erender ; else morebitsu82equickformu82egetelementcontainer targetu82eformu82exfdtarget .remove ; targetu82eformu82exfdtarget null; targetu82eparentnode .find \"input name \'xfdtarget\' \" .remove ; ; tfd_categoryu82eappend type \'option\' label \'deletion\' value \'tfdu800\' selected true ; tfd_categoryu82eappend type \'option\' label \'merge\' value \'tfmu800\' ; varu800 tfd_template_type work_areau82eappend type \'select\' name \'templatetype\' label \'deletion tagu800 display style \' tooltip \'which type parameter tou800 pass tou800 theu800 tfdu800 tagu800 template.\' ; ifu800 templateormodule \'module\' tfd_template_typeu82eappend type \'option\' value \'module\' label \'module\' selected true ; else tfd_template_typeu82eappend type \'option\' value \'standard\' label \'standard\' selected true ; tfd_template_typeu82eappend type \'option\' value \'sidebar\' label \'sidebar infobox\' selected \'.infobox\' .length ; tfd_template_typeu82eappend type \'option\' value \'inline\' label \'inline template\' ; tfd_template_typeu82eappend type \'option\' value \'tiny\' label \'tiny inline\' ; work_areau82eappend type \'checkbox\' list label \'u8d982u8d8b1u8d8a7u8d8b1 u8d8afu8d8a7u8d8afu8d986 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981 u8d8afu8d8a7u8d8aeu8d984 u8d982u8d8b1u8d8a7u8d8b1 u8d8a8u8d8afu8d987 u8d8aau8d986u8d987u8d8a7 u8d8a8u8d8b1u8d8a7u8db8c u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d8a7u8d984u8daafu8d988 \' localized value \'noinclude\' name \'noinclude\' tooltip \'u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981 u8d8b1u8d8a7 u8d8afu8d8a7u8d8aeu8d984 u8db8cu8daa9 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 &ltu800;noinclude&gtu800; u8d985u8db8cu8e2808cu8daafu8d8b0u8d8a7u8d8b1u8d8af u8d8aau8d8a7 u8d8afu8d8b1 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a2u8d986 u8d8b1u8d8a7 u8d8acu8d8a7u8d986u8d8b4u8d8a7u8d986u8db8c u8daa9u8d8b1u8d8afu8d987u8e2808cu8d8a7u8d986u8d8af u8d986u8d985u8d8a7u8db8cu8d8b4 u8d986u8db8cu8d8a7u8d8a8u8d8af.\' localized disabled templateormodule \'module\' checked \'.boxu800 subst_only\' .length default tou800 checked ifu800 page carries subst only ; appendreasonbox ; work_area work_areau82erender ; old_areau82eparentnodeu82ereplacechild work_area old_area ; * localized removed break; case \'mfdu800\' * work_area newu800 morebitsu82equickformu82eelement type \'field\' label \'miscellany foru800 deletion\' name \'work_area\' ; work_areau82eappend type \'checkbox\' list label \'u8d982u8d8b1u8d8a7u8d8b1 u8d8afu8d8a7u8d8afu8d986 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981 u8d8afu8d8a7u8d8aeu8d984 \' localized value \'noinclude\' name \'noinclude\' tooltip \'u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981 u8d8b1u8d8a7 u8d8afu8d8a7u8d8aeu8d984 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 &ltu800;noinclude&gtu800; u8d982u8d8b1u8d8a7u8d8b1 u8d985u8db8cu8e2808cu8d8afu8d987u8d8af u8d8aau8d8a7 u8d8afu8d8b1 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8cu8db8c u8daa9u8d987 u8d8a2u8d986 u8d8b1u8d8a7 u8d8acu8d8a7u8d986u8d8b4u8d8a7u8d986u8db8c u8daa9u8d8b1u8d8afu8d987u8e2808cu8d8a7u8d986u8d8af u8d986u8d985u8d8a7u8db8cu8d8b4 u8d986u8db8cu8d8a7u8d8a8u8d8af. u8d8a7u8d8b2 u8d8a7u8db8cu8d986 u8daafu8d8b2u8db8cu8d986u8d987 u8d8a8u8d8b1u8d8a7u8db8c u8d8acu8d8b9u8d8a8u8d987u8e2808cu8d987u8d8a7u8db8c u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8daa9u8d986u8db8cu8d8af.\' localized ; * localized removed ifu800 mwu800u82econfigu82egetu800 \'wgnamespacenumber\' 2u800 * user * mwu800u82econfigu82egetu800 \'wgnamespacenumber\' 3u800 * user talk * && mwu800u82econfigu82eexists \'wgrelevantusername\' localized removed * work_areau82eappend type \'checkbox\' list label \'also notify owner ofu800 userspace ifu800 they areu800 notu800 theu800 page creator\' value \'notifyuserspace\' name \'notifyuserspace\' tooltip \'ifu800 theu800 user inu800 whose userspace this page isu800 located isu800 notu800 theu800 page creator foru800 example theu800 page isu800 au800 rescued article stored asu800 au800 userspace draft notify theu800 userspace owner asu800 well.\' checked true ; appendreasonbox ; work_area work_areau82erender ; old_areau82eparentnodeu82ereplacechild work_area old_area ; * localized removed break; case \'ffdu800\' * work_area newu800 morebitsu82equickformu82eelement type \'field\' label \'discussion venues foru800 files name \'work_area\' ; appendreasonbox ; work_area work_areau82erender ; old_areau82eparentnodeu82ereplacechild work_area old_area ; * localized removed break; case \'cfdu800\' * work_area newu800 morebitsu82equickformu82eelement type \'field\' label \'categories foru800 discussion\' name \'work_area\' ; varu800 iscategory mwu800u82econfigu82egetu800 \'wgnamespacenumber\' 14u800; varu800 cfd_category; cfd_category work_areau82eappend type \'select\' label \'choose type ofu800 action wanted \' name \'xfdcat\' event function eu800 varu800 value eu800u82etargetu82evalue; varu800 target eu800u82etargetu82eformu82exfdtarget; update enabled status ifu800 value \'cfdu800\' value \'sfdu800 tu800\' targetu82edisabled true; targetu82erequired false; else targetu82edisabled false; targetu82erequired true; ifu800 iscategory update label ifu800 value \'cfsu800 targetu82eprevioussiblingu82etextcontent \'target categories \'; else ifu800 value \'cfcu800\' targetu82eprevioussiblingu82etextcontent \'target article \'; else targetu82eprevioussiblingu82etextcontent \'target category \'; addu800 remove extra input boxu800 ifu800 value \'cfsu800 && targetu82eparentnode .find \"input name \'xfdtarget2\' \" .length 0u800 varu800 xfdtarget2 documentu82ecreateelement \'input\' ; xfdtarget2u82esetattribute \'name\' \'xfdtarget2\' ; xfdtarget2u82esetattribute \'type\' \'text\' ; xfdtarget2u82esetattribute \'required\' \'true\' ; targetu82eparentnodeu82eappendchild xfdtarget2 ; else targetu82eparentnode .find \"input name \'xfdtarget2\' \" .remove ; else update stub template label targetu82eprevioussiblingu82etextcontent \'target stub template \'; ; ifu800 iscategory cfd_categoryu82eappend type \'option\' label \'deletion\' value \'cfdu800\' selected true ; cfd_categoryu82eappend type \'option\' label \'merge\' value \'cfmu800\' ; cfd_categoryu82eappend type \'option\' label \'renaming\' value \'cfru800\' ; cfd_categoryu82eappend type \'option\' label \'split\' value \'cfsu800 ; cfd_categoryu82eappend type \'option\' label \'convert into article\' value \'cfcu800\' ; else cfd_categoryu82eappend type \'option\' label \'stub deletion\' value \'sfdu800 tu800\' selected true ; cfd_categoryu82eappend type \'option\' label \'stub renaming\' value \'sfru800 tu800\' ; work_areau82eappend type \'input\' name \'xfdtarget\' label \'target category \' default changed above disabled true value   ; appendreasonbox ; work_area work_areau82erender ; old_areau82eparentnodeu82ereplacechild work_area old_area ; * localized break; case \'cfds * work_area newu800 morebitsu82equickformu82eelement type \'field\' label \'categories foru800 speedy renaming\' name \'work_area\' ; varu800 cfds_category work_areau82eappend type \'select\' label \'c2u800 subu800 criterion \' name \'xfdcat\' tooltip \'seeu800 wpu800 cfds foru800 full explanations.\' ; cfds_categoryu82eappend type \'option\' label \'c2au800 typographic andu800 spelling fixes value \'c2au800\' selected true ; cfds_categoryu82eappend type \'option\' label \'c2bu800 naming conventions andu800 disambiguation\' value \'c2bu800\' ; cfds_categoryu82eappend type \'option\' label \'c2cu800 consistency with names ofu800 similar categories value \'c2cu800\' ; cfds_categoryu82eappend type \'option\' label \'c2du800 rename tou800 match article name\' value \'c2du800\' ; cfds_categoryu82eappend type \'option\' label \'c2eu800 author request\' value \'c2eu800\' ; cfds_categoryu82eappend type \'option\' label \'c2fu800 oneu800 eponymous article\' value \'c2fu800\' ; work_areau82eappend type \'input\' name \'xfdtarget\' label \'newu800 name \' value   required true ; appendreasonbox ; work_area work_areau82erender ; old_areau82eparentnodeu82ereplacechild work_area old_area ; * localized removed break; case \'rfdu800\' * work_area newu800 morebitsu82equickformu82eelement type \'field\' label \'redirects foru800 discussion\' name \'work_area\' ; work_areau82eappend type \'checkbox\' list label \'notify target page ifu800 possible\' value \'relatedpage\' name \'relatedpage\' tooltip \"au800 notification template will beu800 placed onu800 theu800 talk page ofu800 this redirect redirect\'su800 target ifu800 this isu800 true.\" checked true ; appendreasonbox ; work_area work_areau82erender ; old_areau82eparentnodeu82ereplacechild work_area old_area ; * localized removed break; case \'rmu800\' * work_area newu800 morebitsu82equickformu82eelement type \'field\' label \'requested moves name \'work_area\' ; work_areau82eappend type \'checkbox\' list label \'uncontroversial technical request\' value \'rmtr\' name \'rmtr\' tooltip \'useu800 this option when youu800 areu800 unable tou800 perform this uncontroversial move yourself because ofu800 au800 technical reason eu800u82egu800. au800 page already exists atu800 theu800 newu800 title oru800 theu800 page isu800 protected \' checked false event function formu82enewnameu82erequired thisu82echecked; ; work_areau82eappend type \'input\' name \'newname\' label \'newu800 title \' tooltip \'required foru800 technical requests. otherwise ifu800 unsure ofu800 theu800 appropriate title youu800 mayu800 leave itu800 blank.\' ; appendreasonbox ; work_area work_areau82erender ; old_areau82eparentnodeu82ereplacechild work_area old_area ; * localized removed break; default work_area newu800 morebitsu82equickformu82eelement type \'field\' label \'nothing foru800 anything\' name \'work_area\' ; work_area work_areau82erender ; old_areau82eparentnodeu82ereplacechild work_area old_area ; break; return tou800 checked state when switching butu800 nou800 creator notification foru800 cfds oru800 rmu800 ifu800 value \'cfds value \'rmu800\' formu82enotifyu82echecked false; formu82enotifyu82edisabled true; else formu82enotifyu82echecked true; formu82enotifyu82edisabled false; ; twinkleu82exfdu800u82esetwatchpref function twinklexfdsetwatchpref pageobj pref switch pref case \'yesu800 pageobju82esetwatchlist true ; break; case \'nou800\' pageobju82esetwatchlistfrompreferences false ; break; default pageobju82esetwatchlistfrompreferences true ; break; ; twinkleu82exfdu800u82ecallbacks getdiscussionwikitext function venue params ifu800 venue \'cfds cfdu800 su800 takes au800 completely different style return \'* \' morebitsu82epagenamenorm \' tou800 \' paramsu82etarget \' u00a0 u2013 \' paramsu82exfdcat paramsu82ereason \' \' morebitsu82estringu82eformatreasontext paramsu82ereason \'.\' \' \'; uu800 00a0 nou800 break space; uu800 2013 enu800 rule ifu800 venue \'rmu800\' even ifu800 invoked from talk page propose theu800 subject page foru800 move varu800 pagename newu800 mwu800u82etitle morebitsu82epagenamenorm .getsubjectpage .totext ; return paramsu82ermtr \' subst rmassist 1u800 \' pagename \' 2u800 \' paramsu82enewname \' subst requested move current1 \' pagename \' new1 \' paramsu82enewname \' reason \' paramsu82ereason \' \'; varu800 text \' subst \' venue \'2u800\'; varu800 reasonkey venue \'ffdu800\' \'reason\' \'text\'; addu800 au800 reason unconditionally sou800 that atu800 least au800 signature isu800 added ifu800 paramsu82ereason text \' \' reasonkey \' \' morebitsu82estringu82eformatreasontext paramsu82ereason \' \'; else text \' \' reasonkey \' \'; ifu800 venue \'afdu800\' venue \'mfdu800\' text \' pgu800 \' morebitsu82epagenamenorm; ifu800 venue \'afdu800\' text \' catu800 \' paramsu82exfdcat; else ifu800 venue \'rfdu800\' text \' redirect \' morebitsu82epagenamenorm; else text \' 1u800 \' mwu800u82econfigu82egetu800 \'wgtitle\' ; ifu800 mwu800u82econfigu82egetu800 \'wgpagecontentmodel\' \'scribunto\' text \' module module \'; ifu800 paramsu82etarget ifu800 venue \'rfdu800\' text \' target \' paramsu82etarget paramsu82esection \'#\' paramsu82esection   ; else ifu800 venue \'cfdu800\' && venue \'sfdu800 tu800\' text \' 2u800 \' paramsu82etarget; ifu800 paramsu82etarget2 text \' 3u800 \' paramsu82etarget2; ifu800 paramsu82euploader text \' uploader \' paramsu82euploader; text \' \'; * ifu800 paramsu82edelsort_cats only foru800 afds paramsu82edelsort_catsu82eforeach function catu800 text \' nu800 subst delsort \' catu800 \' \'; ; * localized removed return text; showpreview function form venue params varu800 templatetext twinkleu82exfdu800u82ecallbacksu82egetdiscussionwikitext venue params ; ifu800 venue \'rmu800\' rmu800 templates areu800 sensitive tou800 page title formu82eprevieweru82ebeginrender templatetext paramsu82ermtr \'wikipedia requested moves technical requests mwu800u82etitleu82enewfromtext morebitsu82epagenamenorm .gettalkpage .totext ; else formu82eprevieweru82ebeginrender templatetext \'wpu800 twu800\' ; force wikitext preview function form varu800 venue formu82ecategoryu82evalue; varu800 params reason formu82exfdreasonu82evalue ; ifu800 formu82exfdcat paramsu82exfdcat formu82exfdcatu82evalue; remove cfdu800 oru800 tfdu800 namespace prefixes ifu800 venue \'tfdu800\' venue \'cfdu800\' varu800 namespace_re newu800 regexp \' \' mwu800u82econfigu82egetu800 \'wgcanonicalnamespace\' \' \' \'iu800\' ; ifu800 formu82exfdtarget cfdu800 oru800 tfdu800 paramsu82etarget morebitsu82estringu82etouppercasefirstchar formu82exfdtargetu82evalueu82ereplace namespace_re   ; ifu800 formu82exfdtarget2 cfdu800 paramsu82etarget2 morebitsu82estringu82etouppercasefirstchar formu82exfdtarget2u82evalueu82ereplace namespace_re   ; else ifu800 venue \'cfds && formu82exfdtargetu82evalue addu800 namespace tou800 cfdu800 su800 paramsu82etarget category .test formu82exfdtargetu82evalue formu82exfdtargetu82evalue \'category \' formu82exfdtargetu82evalue; paramsu82edelsort_cats formu82edelsort .valu800 ; localized removed ifu800 formu82ermtr paramsu82ermtr formu82ermtru82echecked; ifu800 formu82enewname paramsu82enewname formu82enewnameu82evalue; ifu800 venue \'ffdu800\' fetch theu800 uploader varu800 page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' ; pageu82elookupcreation function paramsu82euploader pageu82egetcreator ; twinkleu82exfdu800u82ecallbacksu82eshowpreview form venue params ; ; else ifu800 venue \'rfdu800\' find theu800 target twinkleu82exfdu800u82ecallbacksu82erfdu800u82efindtarget params function params twinkleu82exfdu800u82ecallbacksu82eshowpreview form venue params ; ; else ifu800 venue \'cfdu800\' swap inu800 cfdu800 subactions twinkleu82exfdu800u82ecallbacksu82eshowpreview form paramsu82exfdcat params ; else twinkleu82exfdu800u82ecallbacksu82eshowpreview form venue params ; addtolog function params initialcontrib varu800 uslu800 newu800 morebitsu82euserspacelogger twinkleu82egetpref \'xfdlogpagename\' ; \'adding entry tou800 userspace logu800\' ; uslu800u82einitialtext \"u8d8a7u8db8cu8d986 u8d8b5u8d981u8d8adu8d987 u8d8b4u8d8a7u8d985u8d984 u8d8b3u8db8cu8d8a7u8d987u8d987u8e2808cu8d8a7u8db8c u8d8a7u8d8b3u8d8aa u8d8a7u8d8b2 u8d987u8d985u8d987u8d994 u8d986u8d8a7u8d985u8d8b2u8d8afu8db8cu8e2808cu8d987u8d8a7u8db8c u8d988u8d9be u8d986u8d8a8u8d8ad u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 u8daa9u8d987 u8d8aau8d988u8d8b3u8d8b7 u8d8a7u8db8cu8d986 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 u8d988 u8d8a8u8d8a7 u8daa9u8d985u8daa9 u8d9beu8d988u8d8afu8d985u8d8a7u8d986 u8d986u8d8a8u8d8ad u8d988u8d9be u8d8aau8d988u8db8cu8d986u8daa9u8d984 u8d8aau8d988u8db8cu8d986u8daa9u8d984 u8d8a7u8d986u8d8acu8d8a7u8d985 u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d986u8d8af. nu800 nu800\" \'u8d8a7u8daafu8d8b1 u8d8afu8db8cu8daafu8d8b1 u8d985u8d8a7u8db8cu8d984 u8d8a8u8d987 u8d986u8daafu8d987u8e2808cu8d8afu8d8a7u8d8b4u8d8aau8d986 u8d8a7u8db8cu8d986 u8d8b3u8db8cu8d8a7u8d987u8d987 u8d986u8db8cu8d8b3u8d8aau8db8cu8d8afu8d88c u8d985u8db8cu8e2808cu8d8aau8d988u8d8a7u8d986u8db8cu8d8af u8d8a7u8d8b2 u8d8b7u8d8b1u8db8cu8d982 u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8aau8d988u8db8cu8d986u8daa9u8d984 u8d8aau8d8b1u8d8acu8db8cu8d8adu8d8a7u8d8aa u8d9beu8d986u8d984 u8d8aau8d8b1u8d8acu8db8cu8d8adu8d8a7u8d8aa u8d8a2u8d986 u8d8b1u8d8a7 u8d8bau8db8cu8d8b1u8d981u8d8b9u8d8a7u8d984 u8daa9u8d986u8db8cu8d8af u8d988 \' \' u8d8a7u8db8cu8d986 u8d8b5u8d981u8d8adu8d987 u8d8b1u8d8a7 u8d8aau8d8adu8d8aa u8d985u8d8b9u8db8cu8d8a7u8d8b1 u8d988u8d9be u8d985u8d8adu8d8b3#u8daa9u8dbb1 u8d985u8d8adu8d8b3 u8daa9u8dbb1 u8d986u8d8a7u8d985u8d8b2u8d8af u8d8adu8d8b0u8d981 u8d8b3u8d8b1u8db8cu8d8b9 u8daa9u8d986u8db8cu8d8af.\' morebitsu82euserissysop \' nu800 nu8d8a7u8db8cu8d986 u8d8b3u8db8cu8d8a7u8d987u8d987u8d88c u8d8adu8d8b0u8d981u8e2808cu8d987u8d8a7u8db8c u8d985u8d8b1u8d8aau8d8a8u8d8b7 u8d8a8u8d8a7 u8d986u8d8a8u8d8ad u8daa9u8d987 u8d8a8u8d8a7 u8daa9u8d985u8daa9 u8d8aau8d988u8db8cu8d986u8daa9u8d984 u8d8a7u8d986u8d8acu8d8a7u8d985 u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d986u8d8af u8d8b1u8d8a7 u8d8b1u8d987u8daafu8db8cu8d8b1u8db8c u8d986u8d985u8db8cu8e2808cu8daa9u8d986u8d8af.\'   ; varu800 editsummary \'u8d8abu8d8a8u8d8aa u8d8b3u8db8cu8d8a7u8d987u8d987u8d994 u8d986u8d8a7u8d985u8d8b2u8d8afu8db8c \' paramsu82evenue \' u8d8a8u8d8b1u8d8a7u8db8c \' morebitsu82epagenamenorm \' .\'; provide wikipedian tlau800 style afdu800 rfdu800 cfds rmu800 sfdu800 etcu800. varu800 totlacase function stru800 return stru800u82etostring .touppercase .replace bfu800 \'fu800\' ; return stru800u82etostring .touppercase .replace . fu800 . . \' 1fu800 2u800\' ; ; ifu800 au800 logged file isu800 deleted butu800 exists onu800 commons theu800 wikilink will beu800 blue sou800 provide au800 link tou800 theu800 logu800 varu800 fileloglink mwu800u82econfigu82egetu800 \'wgnamespacenumber\' 6u800 \' fullurl special logu800 page \' mwu800u82eutilu82ewikiurlencode mwu800u82econfigu82egetu800 \'wgpagename\' \' u8d8b3u8db8cu8d8a7u8d987u8d987 \'  ; varu800 appendtext \' nu800# \' morebitsu82epagenamenorm \' \' fileloglink \' u8d8afu8d8b1 u8d988u8d9be \' paramsu82evenue \' \' totlacase paramsu82evenue \' u8d986u8d8a7u8d985u8d8b2u8d8af u8d8b4u8d8af.\'; varu800 extrainfo  ; switch paramsu82evenue case \'tfdu800\' ifu800 paramsu82exfdcat \'tfmu800\' appendtext \' u8d8a7u8d8afu8d8bau8d8a7u8d985 \'; ifu800 paramsu82etarget varu800 contentmodel mwu800u82econfigu82egetu800 \'wgpagecontentmodel\' \'scribunto\' \'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 \' \'u8d8a7u8d984u8daafu8d988 \'; extrainfo \'; other \' contentmodelu82etolowercase \' \'; ifu800 template module u8d8a7u8d984u8daafu8d988 u8d9beu8d988u8d8afu8d985u8d8a7u8d986 iu800u82etest paramsu82etarget extrainfo contentmodel; extrainfo paramsu82etarget \' \'; break; case \'mfdu800\' ifu800 initialcontrib && paramsu82enotifyuserspace && paramsu82euserspaceowner initialcontrib extrainfo \' andu800 userv 1u800 \' paramsu82euserspaceowner \' \'; break; case \'cfdu800\' appendtext \' \' totlacase paramsu82exfdcat \' \'; ifu800 paramsu82etarget varu800 categoryortemplate paramsu82exfdcatu82echarat 0u800 \'su800 \'u8d8a7u8d984u8daafu8d988 \' \' u8d8b1u8d8afu8d987 \'; extrainfo \'; \' paramsu82eaction \' tou800 \' categoryortemplate paramsu82etarget \' \'; ifu800 paramsu82exfdcat \'cfsu800 && paramsu82etarget2 extrainfo \' \' categoryortemplate paramsu82etarget2 \' \'; break; case \'cfds appendtext \' \' totlacase paramsu82exfdcat \' \'; ensure there there\'su800 more than just \'category \' ifu800 paramsu82etarget && paramsu82etargetu82elength 9u800 extrainfo \'; newu800 name \' paramsu82etarget \' \'; break; case \'rfdu800\' ifu800 paramsu82etarget extrainfo \'; u8d987u8d8afu8d981 \' paramsu82etarget \' \'; ifu800 paramsu82erelatedpage extrainfo \' u8d8a2u8daafu8d8a7u8d987 u8d8b4u8d8af \'; break; case \'rmu800\' ifu800 paramsu82ermtr appendtext \' u8d981u8d986u8db8c \'; ifu800 paramsu82enewname extrainfo \'; u8d986u8d8a7u8d985 u8d8aau8d8a7u8d8b2u8d987 \' paramsu82enewname \' \'; break; case \'ffdu800\' case \'afdu800\' default break; ifu800 initialcontrib appendtext \'u8d89b userv 1u800 \' initialcontrib \' u8d8a2u8daafu8d8a7u8d987 u8d8b4u8d8af\'; ifu800 extrainfo appendtext extrainfo; appendtext \' \'; ifu800 paramsu82ereason appendtext \" nu800#*  u8d8afu8d984u8db8cu8d984  \" paramsu82ereason \' nu800\'; uslu800u82elogu800 appendtext editsummary twinkleu82egetpref \'summaryad\' ; afdu800 main function apiobj varu800 xmldoc apiobju82eresponsexml; varu800 titles xmldoc .find \'allpages pu800\' ; there hasu800 been nou800 earlier entries with this prefix just gou800 onu800. ifu800 titlesu82elength 0u800 apiobju82eparamsu82enumbering apiobju82eparamsu82enumber  ; else varu800 number 0u800; foru800 varu800 iu800 0u800; iu800 0u800 \' \' apiobju82eparamsu82enumber \' u8d986u8d8a7u8d985u8d8b2u8d8afu8db8c \'  ; localized apiobju82eparamsu82ediscussionpage \'u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 \' morebitsu82epagenamenorm apiobju82eparamsu82enumbering; localized morebitsu82estatusu82einfo \'u8d8b5u8d981u8d8adu8d987u8d994 u8d986u8d8a7u8d985u8d8b2u8d8afu8db8c u8d8a8u8d8b9u8d8afu8db8c\' \' \' apiobju82eparamsu82ediscussionpage \' \' ; localized updating data foru800 theu800 action completed event morebitsu82ewikiu82eactioncompletedu82eredirect apiobju82eparamsu82ediscussionpage; morebitsu82ewikiu82eactioncompletedu82enotice \'u8d986u8d8a7u8d985u8d8b2u8d8af u8daa9u8d8b1u8d8afu8d986 u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 u8daa9u8d8a7u8d985u8d984 u8d8b4u8d8afu8d88c u8d8afu8d8b1 u8d8adu8d8a7u8d984 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d985u8d8b3u8db8cu8d8b1 u8d8a8u8d987 u8d8b5u8d981u8d8adu8d987u8d994 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c\'; localized tagging article varu800 wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' \'u8d986u8d8b5u8d8a8 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d8adu8d8b0u8d981 u8d8a8u8d8b1 u8d8b5u8d981u8d8adu8d987\' ; localized wikipedia_pageu82esetfollowredirect true ; should never beu800 needed butu800 ifu800 theu800 article isu800 moved weu800 would want tou800 follow theu800 redirect wikipedia_pageu82esetcallbackparameters apiobju82eparams ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82eafdu800u82etaggingarticle ; tagging needs tou800 happen before everything else this means weu800 canu800 check ifu800 there isu800 anu800 afdu800 tagu800 already onu800 theu800 page taggingarticle function pageobj varu800 text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; varu800 statelem pageobju82egetstatuselement ; ifu800 pageobju82eexists statelemu82eerror \"u8d8a8u8d987 u8d986u8d8b8u8d8b1 u8d985u8db8cu8e2808cu8d8b1u8d8b3u8d8af u8daa9u8d987 u8d8b5u8d981u8d8adu8d987 u8d988u8d8acu8d988u8d8af u8d986u8d8afu8d8a7u8d8b1u8d8afu8d89b u8d8b4u8d8a7u8db8cu8d8af u8d9beu8db8cu8d8b4u8d8aau8d8b1 u8d8adu8d8b0u8d981 u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa\" ; localized return; check foru800 existing afdu800 tagu800 foru800 theu800 benefit ofu800 newu800 page patrollers varu800 textnoafd textu82ereplace u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 u8d8aau8d8a7u8d8b1u8db8cu8d8aeu8e2808cu8d8afu8d8a7u8d8b1 gu800   ; localized ifu800 text textnoafd ifu800 confirm \'u8db8cu8daa9 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 u8d8afu8d8b1 u8d8a7u8db8cu8d986 u8d8b5u8d981u8d8adu8d987 u8d988u8d8acu8d988u8d8af u8d8afu8d8a7u8d8b1u8d8af. u8d8b4u8d8a7u8db8cu8d8af u8daa9u8d8b3u8db8c u8d9beu8db8cu8d8b4 u8d8a7u8d8b2 u8d8b4u8d985u8d8a7 u8d8b5u8d981u8d8adu8d987 u8d8b1u8d8a7 u8d986u8d8a7u8d985u8d8b2u8d8af u8d8adu8d8b0u8d981 u8daa9u8d8b1u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa. nu8d8b1u8d988u8db8c oku800 u8daa9u8d984u8db8cu8daa9 u8daa9u8d986u8db8cu8d8af u8d8aau8d8a7 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d8acu8d8afu8db8cu8d8af u8d8b1u8d8a7 u8d8acu8d8a7u8db8cu8daafu8d8b2u8db8cu8d986 u8d8a2u8d986 u8daa9u8d986u8db8cu8d8af u8d8aau8d988u8d8b5u8db8cu8d987 u8d986u8d985u8db8cu8e2808cu8d8b4u8d988u8d8af u8db8cu8d8a7 u8d8b1u8d988u8db8c cancel u8daa9u8d984u8db8cu8daa9 u8daa9u8d986u8db8cu8d8af u8d8aau8d8a7 u8d8a7u8d8b2 u8d986u8d8a7u8d985u8d8b2u8d8af u8daa9u8d8b1u8d8afu8d986 u8d8b5u8d981u8d8adu8d987 u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 u8d8b5u8d8b1u8d981 u8d986u8d8b8u8d8b1 u8daa9u8d986u8db8cu8d8af.\' localized text textnoafd; else statelemu82eerror \'u8d8b5u8d981u8d8adu8d987 u8d8a7u8d8b2 u8d9beu8db8cu8d8b4 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d986u8d8a7u8d985u8d8b2u8d8afu8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 u8d8afu8d8a7u8d8b4u8d8aau8d88c u8d988 u8d8b4u8d985u8d8a7 u8d8a7u8d8b2 u8d986u8d8b5u8d8a8 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d8b5u8d8b1u8d981 u8d986u8d8b8u8d8b1 u8daa9u8d8b1u8d8afu8db8cu8d8af\' ; localized windowu82elocationu82ereload ; return; nowu800 weu800 know weu800 want tou800 gou800 ahead with itu800 trigger theu800 other ajax requests mark theu800 page asu800 curated patrolled ifu800 wanted ifu800 twinkleu82egetpref \'markxfdpagesaspatrolled\' pageobju82etriage ; starting discussion page varu800 wikipedia_page newu800 morebitsu82ewikiu82epage paramsu82ediscussionpage \'u8d8a7u8db8cu8d8acu8d8a7u8d8af u8d8b5u8d981u8d8adu8d987u8d994 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981\' ; localized wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82eafdu800u82ediscussionpage ; today today\'su800 list varu800 date newu800 morebitsu82edate pageobju82egetloadtime ; * wikipedia_page newu800 morebitsu82ewikiu82epage \'wikipedia articles foru800 deletion logu800 \' dateu82eformat \'yyyy mmmm du800\' \'utcu800\' \"adding discussion tou800 today today\'su800 list\" ; * localized removed; seeu800 next line wikipedia_page newu800 morebitsu82ewikiu82epage \'u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981\' \'u8d8a7u8d981u8d8b2u8d988u8d8afu8d986 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d987 u8d988u8d9be u8d986u8d8a8u8d8ad\' ; localized wikipedia_pageu82esetfollowredirect true ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82eafdu800u82etodayslist ; notification tou800 first contributor ifu800 paramsu82eusertalk varu800 thispage newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' ; thispageu82esetcallbackparameters params ; thispageu82esetlookupnonredirectcreator true ; look foru800 author ofu800 first nonu800 redirect revision thispageu82elookupcreation twinkleu82exfdu800u82ecallbacksu82eafdu800u82eusernotification ; oru800 ifu800 notu800 notifying addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 without theu800 initial contributor contributor\'su800 name else ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; list atu800 deletion sorting pages * ifu800 paramsu82edelsort_cats paramsu82edelsort_catsu82eforeach function catu800 varu800 delsortpage newu800 morebitsu82ewikiu82epage \'wikipedia wikiproject deletion sorting \' catu800 \'adding tou800 list ofu800 \' catu800 \' related deletion discussions ; delsortpageu82esetfollowredirect true ; inu800 case au800 category gets renamed delsortpageu82esetcallbackparameters discussionpage paramsu82ediscussionpage ; delsortpageu82eload twinkleu82exfdu800u82ecallbacksu82eafdu800u82edelsortlisting ; ; * localized removed remove some tags that should always beu800 removed onu800 afdu800. text textu82ereplace su800* dated prod dated prod blpu800 prod blpu800 dated proposed deletion dated prod2 proposed deletion endorsed userspace draft su800* * * su800* igu800   ; localized removed then test ifu800 there areu800 speedy deletion related templates onu800 theu800 article. varu800 textnosd textu82ereplace su800* dbu800 wu800* delete hang hold onu800 su800* * * su800* igu800   ; localized removed; seeu800 next line varu800 textnosd textu82ereplace su800*u8d8adu8d8b0u8d981 u8d8b3u8d8b1u8db8cu8d8b9 * igu800   ; localized ifu800 text textnosd && confirm \'u8d8a7u8db8cu8d986 u8d8b5u8d981u8d8adu8d987 u8d8adu8d8a7u8d988u8db8c u8db8cu8daa9 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d8adu8d8b0u8d981 u8d8b3u8d8b1u8db8cu8d8b9 u8d8a7u8d8b3u8d8aa. u8d8a2u8db8cu8d8a7 u8d985u8db8cu8e2808cu8d8aeu8d988u8d8a7u8d987u8db8cu8d8af u8d8a2u8d986 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d8b1u8d8a7 u8d8a8u8d8b1u8d8afu8d8a7u8d8b1u8db8cu8d8afu8d89f\' localized text textnosd; pageobju82esetpagetext paramsu82enoinclude \' \' \' \' paramsu82enumber   \'subst afdu800 help offu800\' \'subst afdx \' paramsu82enumber \' help offu800\' paramsu82enoinclude \' nu800\' \' nu800\' text ; pageobju82eseteditsummary \'u8d986u8d8a7u8d985u8d8b2u8d8afu8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 u8d8afu8d8b1 \' paramsu82ediscussionpage \' .\' twinkleu82egetpref \'summaryad\' ; localized twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchpage\' ; pageobju82esetcreateoption \'nocreate\' ; pageobju82esave ; discussionpage function pageobj varu800 params pageobju82egetcallbackparameters ; pageobju82esetpagetext twinkleu82exfdu800u82ecallbacksu82egetdiscussionwikitext \'afdu800\' params ; pageobju82eseteditsummary \'u8d8a7u8db8cu8d8acu8d8a7u8d8af u8d8b5u8d981u8d8adu8d987u8d994 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981 u8d8a8u8d8b1u8d8a7u8db8c \' morebitsu82epagenamenorm \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchdiscussion\' ; pageobju82esetcreateoption \'createonly\' ; pageobju82esave function twinkleu82exfdu800u82ecurrentrationale null; anyu800 errors from nowu800 onu800 dou800 notu800 need tou800 print theu800 rationale asu800 itu800 isu800 safely saved onu800 wiki ; todayslist function pageobj varu800 old_text pageobju82egetpagetext \' nu800\'; mwu800 strips trailing blanks butu800 weu800 like them sou800 weu800 addu800 au800 fake oneu800 varu800 params pageobju82egetcallbackparameters ; varu800 statelem pageobju82egetstatuselement ; varu800 text old_textu82ereplace u8d8aau8d988u8db8cu8d986u8daa9u8d984 nu800 \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 \' morebitsu82epagenamenorm paramsu82enumbering \' nu800 1u800\' ; localized ifu800 text old_text varu800 linknode documentu82ecreateelement \'au800\' ; linknodeu82esetattribute \'href\' mwu800u82eutilu82egeturl \'u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8aau8d988u8db8cu8d986u8daa9u8d984 u8d8aau8d8b9u8d985u8db8cu8d8b1 u8d986u8d8a8u8d8ad\' \' action purge\' ; linknodeu82eappendchild documentu82ecreatetextnode \'u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7u8db8c u8d8aau8d8b9u8d985u8db8cu8d8b1 u8d986u8d8a8u8d8ad\' ; statelemu82eerror \'u8d986u8d8a7u8d8aau8d988u8d8a7u8d986 u8d8afu8d8b1 u8db8cu8d8a7u8d981u8d8aau8d986 u8d985u8daa9u8d8a7u8d986 u8d985u8d986u8d8a7u8d8b3u8d8a8 u8d8a8u8d8b1u8d8a7u8db8c u8d982u8d8b1u8d8a7u8d8b1 u8d8afu8d8a7u8d8afu8d986 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c. u8d8a8u8d8b1u8d8a7u8db8c u8d8b1u8d981u8d8b9 u8d8a7u8db8cu8d986 u8d985u8d8b4u8daa9u8d984u8d88c u8d984u8d8b7u8d981u8d8a7u8d98b \' linknode \' u8d8b1u8d8a7 u8d8a8u8d8a8u8db8cu8d986u8db8cu8d8af.\' ; return; pageobju82esetpagetext text ; pageobju82eseteditsummary \'u8d8a7u8d981u8d8b2u8d988u8d8afu8d986 \' paramsu82ediscussionpage \' .\' twinkleu82egetpref \'summaryad\' ; localized twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchlist\' ; pageobju82esetcreateoption \'recreate\' ; pageobju82esave ; usernotification function pageobj varu800 params pageobju82egetcallbackparameters ; varu800 initialcontrib pageobju82egetcreator ; disallow warning yourself ifu800 initialcontrib mwu800u82econfigu82egetu800 \'wgusername\' pageobju82egetstatuselement .warn \'u8d8b4u8d985u8d8a7 \' initialcontrib \' u8d8a7u8db8cu8d986 u8d8b5u8d981u8d8adu8d987 u8d8b1u8d8a7 u8d8b3u8d8a7u8d8aeu8d8aau8d987u8e2808cu8d8a7u8db8cu8d8afu8d89b u8d8a7u8d8b2 u8d8a2u8daafu8d8a7u8d987u8e2808cu8d8b3u8d8a7u8d8b2u8db8c u8d8b5u8d8b1u8d981 u8d986u8d8b8u8d8b1 u8d8b4u8d8af\' ; localized return; varu800 usertalkpage newu800 morebitsu82ewikiu82epage \'u8d8a8u8d8adu8d8ab u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 \' initialcontrib \'u8d8a2u8daafu8d8a7u8d987u8e2808cu8d8b3u8d8a7u8d8b2u8db8c u8d8a7u8d988u8d984u8db8cu8d986 u8d985u8d8b4u8d8a7u8d8b1u8daa9u8d8aau8e2808cu8daa9u8d986u8d986u8d8afu8d987 \' initialcontrib \' \' ; localized varu800 notifytext \' nu800 subst u8d8a2u8daafu8d8a7u8d987u8e2808cu8d8b3u8d8a7u8d8b2u8db8c u8d986u8d8a8u8d8ad 1u800 \' morebitsu82epagenamenorm paramsu82enumbering   \' u8d986u8d988u8d8a8u8d8aa u8d986u8d8a7u8d985u8d8b2u8d8afu8db8c &#32u800;\' paramsu82enumbering   \' \'; localized usertalkpageu82esetappendtext notifytext ; usertalkpageu82eseteditsummary \'u8d8a2u8daafu8d8a7u8d987u8e2808cu8d8b3u8d8a7u8d8b2u8db8c \' paramsu82ediscussionpage \' u8d986u8d8a7u8d985u8d8b2u8d8af u8daa9u8d8b1u8d8afu8d986 u8d8b5u8d981u8d8adu8d987u8d994 \' morebitsu82epagenamenorm \' u8d8acu8d987u8d8aa u8d988u8d9be u8d986u8d8a8u8d8ad u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 .\' twinkleu82egetpref \'summaryad\' ; localized usertalkpageu82esetcreateoption \'recreate\' ; twinkleu82exfdu800u82esetwatchpref usertalkpage twinkleu82egetpref \'xfdwatchuser\' ; usertalkpageu82esetfollowredirect true ; usertalkpageu82eappend function onnotifysuccess addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 ifu800 theu800 user hasu800 enabled itu800 ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params initialcontrib ; function onnotifyerror ifu800 user could notu800 beu800 notified logu800 nomination without mentioning that notification wasu800 sent ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; ; * delsortlisting function pageobj varu800 discussionpage pageobju82egetcallbackparameters .discussionpage; varu800 text pageobju82egetpagetext .replace \'directly below this line \' \'directly below this line nu800 \' discussionpage \' \' ; pageobju82esetpagetext text ; pageobju82eseteditsummary \'listing \' discussionpage \' .\' twinkleu82egetpref \'summaryad\' ; pageobju82esetcreateoption \'nocreate\' ; pageobju82esave ; * localized removed tfdu800 * taggingtemplate function pageobj varu800 text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; varu800 tablenewline paramsu82etfdtype \'standard\' paramsu82etfdtype \'sidebar\' \' nu800\'  ; nou800 newline foru800 inline pageobju82esetpagetext paramsu82enoinclude \' \'   \' subst template foru800 discussion help offu800\' paramsu82etfdtype \'standard\' \' type \' paramsu82etfdtype   paramsu82enoinclude \' \' \' \' tablenewline text ; pageobju82eseteditsummary \'nominated foru800 deletion; seeu800 \' paramsu82ediscussionpage \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchpage\' ; ifu800 paramsu82escribunto pageobju82esetcreateoption \'recreate\' ; module docu800 might notu800 exist pageobju82esave ; taggingtemplateformerge function pageobj varu800 text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; varu800 tablenewline paramsu82etfdtype \'standard\' paramsu82etfdtype \'sidebar\' \' nu800\'  ; nou800 newline foru800 inline pageobju82esetpagetext paramsu82enoinclude \' \'   \' subst tfmu800 help offu800 \' paramsu82etfdtype \'standard\' \'type \' paramsu82etfdtype \' \'   \'1u800 \' paramsu82eothertemplatenameu82ereplace template module   paramsu82enoinclude \' \' \' \' tablenewline text ; pageobju82eseteditsummary \'listed foru800 merging with \' paramsu82eothertemplatename \' ; seeu800 \' paramsu82ediscussionpage \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchpage\' ; ifu800 paramsu82escribunto pageobju82esetcreateoption \'recreate\' ; module docu800 might notu800 exist pageobju82esave ; todayslist function pageobj varu800 old_text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; varu800 statelem pageobju82egetstatuselement ; varu800 added_data twinkleu82exfdu800u82ecallbacksu82egetdiscussionwikitext paramsu82exfdcat params ; varu800 text old_textu82ereplace \' \' \' nu800\' added_data ; ifu800 text old_text statelemu82eerror \'failed tou800 find target spot foru800 theu800 discussion\' ; return; pageobju82esetpagetext text ; pageobju82eseteditsummary \'adding \' paramsu82exfdcat \'tfdu800\' \'deletion nomination\' \'merge listing\' \' ofu800 \' morebitsu82epagenamenorm \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchdiscussion\' ; pageobju82esetcreateoption \'recreate\' ; pageobju82esave function twinkleu82exfdu800u82ecurrentrationale null; anyu800 errors from nowu800 onu800 dou800 notu800 need tou800 print theu800 rationale asu800 itu800 isu800 safely saved onu800 wiki ; usernotification function pageobj varu800 initialcontrib pageobju82egetcreator ; varu800 params pageobju82egetcallbackparameters ; disallow warning yourself ifu800 initialcontrib mwu800u82econfigu82egetu800 \'wgusername\' pageobju82egetstatuselement .warn \'youu800 \' initialcontrib \' created this page; skipping user notification\' ; return; varu800 usertalkpage newu800 morebitsu82ewikiu82epage \'user talk \' initialcontrib \'notifying initial contributor \' initialcontrib \' \' ; varu800 notifytext \' nu800\'; varu800 modnotice mwu800u82econfigu82egetu800 \'wgpagecontentmodel\' \'scribunto\' \' module yesu800  ; switch paramsu82exfdcat case \'tfdu800\' notifytext \' subst tfdu800 notice 1u800 \' mwu800u82econfigu82egetu800 \'wgtitle\' modnotice \' \'; break; case \'tfmu800\' notifytext \' subst tfmu800 notice 1u800 \' mwu800u82econfigu82egetu800 \'wgtitle\' \' 2u800 \' paramsu82etarget modnotice \' \'; break; default alert \'twinklexfd inu800 usernotification unknown tfdu800 action\' ; break; usertalkpageu82esetappendtext notifytext ; usertalkpageu82eseteditsummary \'notification \' paramsu82ediscussionpage \' listing ofu800 \' pageobju82egetpagename \' atu800 wpu800 tfdu800 templates foru800 discussion .\' twinkleu82egetpref \'summaryad\' ; usertalkpageu82esetcreateoption \'recreate\' ; twinkleu82exfdu800u82esetwatchpref usertalkpage twinkleu82egetpref \'xfdwatchuser\' ; usertalkpageu82esetfollowredirect true ; addu800 this nomination tou800 user user\'su800 userspace logu800 ifu800 theu800 user hasu800 enabled itu800 andu800 itu800 isnu800\'tu800 theu800 second template inu800 au800 tfmu800 nomination ifu800 paramsu82exfdcat \'tfdu800\' pageobju82egetpagename morebitsu82epagenamenorm && paramsu82elognomination usertalkpageu82eappend function onnotifysuccess twinkleu82exfdu800u82ecallbacksu82eaddtolog params initialcontrib ; function onnotifyerror ifu800 user could notu800 beu800 notified logu800 without mentioning notification twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; ; else usertalkpageu82eappend ; * localized removed mfdu800 * main function apiobj varu800 xmldoc apiobju82eresponsexml; varu800 titles xmldoc .find \'allpages pu800\' ; there hasu800 been nou800 earlier entries with this prefix just gou800 onu800. ifu800 titlesu82elength 0u800 apiobju82eparamsu82enumbering apiobju82eparamsu82enumber  ; else varu800 number 0u800; foru800 varu800 iu800 0u800; iu800 0u800 \' \' apiobju82eparamsu82enumber \' u8d986u8d8a7u8d985u8d8b2u8d8afu8db8c \'  ; localized apiobju82eparamsu82ediscussionpage \'wikipedia miscellany foru800 deletion \' morebitsu82epagenamenorm apiobju82eparamsu82enumbering; apiobju82estatelemu82einfo \'next inu800 order isu800 \' apiobju82eparamsu82ediscussionpage \' \' ; tagging page varu800 wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' \'tagging page with deletion tagu800\' ; wikipedia_pageu82esetfollowredirect true ; should never beu800 needed butu800 ifu800 theu800 page isu800 moved weu800 would want tou800 follow theu800 redirect wikipedia_pageu82esetcallbackparameters apiobju82eparams ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82emfdu800u82etaggingpage ; updating data foru800 theu800 action completed event morebitsu82ewikiu82eactioncompletedu82eredirect apiobju82eparamsu82ediscussionpage; morebitsu82ewikiu82eactioncompletedu82enotice \'nomination completed nowu800 redirecting tou800 theu800 discussion page\'; discussion page wikipedia_page newu800 morebitsu82ewikiu82epage apiobju82eparamsu82ediscussionpage \'creating deletion discussion page\' ; wikipedia_pageu82esetcallbackparameters apiobju82eparams ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82emfdu800u82ediscussionpage ; today today\'su800 list wikipedia_page newu800 morebitsu82ewikiu82epage \'wikipedia miscellany foru800 deletion\' \"adding discussion tou800 today today\'su800 list\" ; wikipedia_pageu82esetpagesection 2u800 ; wikipedia_pageu82esetfollowredirect true ; wikipedia_pageu82esetcallbackparameters apiobju82eparams ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82emfdu800u82etodayslist ; notification tou800 first contributor andu800 notification tou800 owner ofu800 userspace ifu800 applicable andu800 required ifu800 apiobju82eparamsu82eusertalk varu800 thispage newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' ; thispageu82esetcallbackparameters apiobju82eparams ; thispageu82elookupcreation twinkleu82exfdu800u82ecallbacksu82emfdu800u82eusernotification ; oru800 ifu800 notu800 notifying addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 without theu800 initial contributor contributor\'su800 name else ifu800 apiobju82eparamsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog apiobju82eparams null ; taggingpage function pageobj varu800 text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; pageobju82esetpagetext paramsu82enoinclude \' \'   \' \' paramsu82enumber   \'mfdu800\' \'mfdx \' paramsu82enumber \' help offu800 nu800\' paramsu82enoinclude \' \'   text ; pageobju82eseteditsummary \'nominated foru800 deletion; seeu800 \' paramsu82ediscussionpage \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchpage\' ; pageobju82esetcreateoption \'nocreate\' ; pageobju82esave ; discussionpage function pageobj varu800 params pageobju82egetcallbackparameters ; pageobju82esetpagetext twinkleu82exfdu800u82ecallbacksu82egetdiscussionwikitext \'mfdu800\' params ; pageobju82eseteditsummary \'creating deletion discussion page foru800 \' morebitsu82epagenamenorm \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchdiscussion\' ; pageobju82esetcreateoption \'createonly\' ; pageobju82esave function twinkleu82exfdu800u82ecurrentrationale null; anyu800 errors from nowu800 onu800 dou800 notu800 need tou800 print theu800 rationale asu800 itu800 isu800 safely saved onu800 wiki ; todayslist function pageobj varu800 text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; varu800 statelem pageobju82egetstatuselement ; varu800 date newu800 morebitsu82edate pageobju82egetloadtime ; varu800 date_header dateu82eformat \' mmmm du800 yyyy nu800\' \'utcu800\' ; varu800 date_header_regex newu800 regexp dateu82eformat \' su800 *mmmm su800 du800 su800 yyyy su800 * \' \'utcu800\' ; varu800 new_data \' subst mfd3 pgu800 \' morebitsu82epagenamenorm paramsu82enumbering \' \'; ifu800 date_header_regexu82etest text weu800 have au800 section already statelemu82einfo \'found today \'su800 section proceeding tou800 addu800 newu800 entry\' ; text textu82ereplace date_header_regex \' 1u800 nu800\' new_data ; else weu800 need tou800 create au800 newu800 section statelemu82einfo \'nou800 section foru800 today found proceeding tou800 create oneu800\' ; text textu82ereplace \' \' date_header new_data \' nu800 nu800 \' ; pageobju82esetpagetext text ; pageobju82eseteditsummary \'adding \' paramsu82ediscussionpage \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchlist\' ; pageobju82esetcreateoption \'recreate\' ; pageobju82esave ; usernotification function pageobj varu800 initialcontrib pageobju82egetcreator ; varu800 params pageobju82egetcallbackparameters ; also notify theu800 user whou800 owns theu800 subpage ifu800 they areu800 notu800 theu800 creator paramsu82euserspaceowner mwu800u82econfigu82egetu800 \'wgrelevantusername\' ; ifu800 paramsu82enotifyuserspace && paramsu82euserspaceowner initialcontrib twinkleu82exfdu800u82ecallbacksu82emfdu800u82eusernotificationmain params paramsu82euserspaceowner \'notifying owner ofu800 userspace\' ; disallow warning yourself ifu800 initialcontrib mwu800u82econfigu82egetu800 \'wgusername\' pageobju82egetstatuselement .warn \'youu800 \' initialcontrib \' created this page; skipping user notification\' ; else used tou800 ensure weu800 only addu800 tou800 theu800 userspace logu800 once after notifying theu800 initial creator paramsu82einitialcontrib initialcontrib; really notify theu800 creator twinkleu82exfdu800u82ecallbacksu82emfdu800u82eusernotificationmain params initialcontrib \'notifying initial contributor\' ; usernotificationmain function params usertarget actionname varu800 usertalkpage newu800 morebitsu82ewikiu82epage \'user talk \' usertarget actionname \' \' usertarget \' \' ; varu800 notifytext \' nu800 subst mfdu800 notice 1u800 \' morebitsu82epagenamenorm paramsu82enumbering   \' order &#32u800;\' paramsu82enumbering   \' \'; usertalkpageu82esetappendtext notifytext ; usertalkpageu82eseteditsummary \'notification \' paramsu82ediscussionpage \' nomination ofu800 \' morebitsu82epagenamenorm \' atu800 wpu800 mfdu800 miscellany foru800 deletion .\' twinkleu82egetpref \'summaryad\' ; usertalkpageu82esetcreateoption \'recreate\' ; twinkleu82exfdu800u82esetwatchpref usertalkpage twinkleu82egetpref \'xfdwatchuser\' ; usertalkpageu82esetfollowredirect true ; only logu800 once using theu800 initial creator creator\'su800 notification asu800 ouru800 barometer ifu800 paramsu82einitialcontrib usertarget && paramsu82elognomination usertalkpageu82eappend function onnotifysuccess twinkleu82exfdu800u82ecallbacksu82eaddtolog params usertarget ; function onnotifyerror ifu800 user could notu800 beu800 notified logu800 without mentioning notification twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; ; else usertalkpageu82eappend ; * localized removed ffdu800 * main function pageobj this isu800 coming inu800 from lookupcreation... varu800 params pageobju82egetcallbackparameters ; varu800 initialcontrib pageobju82egetcreator ; paramsu82euploader initialcontrib; adding discussion varu800 wikipedia_page newu800 morebitsu82ewikiu82epage paramsu82elogpage \"adding discussion tou800 today today\'su800 list\" ; wikipedia_pageu82esetfollowredirect true ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82effdu800u82etodayslist ; notification tou800 first contributor ifu800 paramsu82eusertalk disallow warning yourself ifu800 initialcontrib mwu800u82econfigu82egetu800 \'wgusername\' pageobju82egetstatuselement .warn \'youu800 \' initialcontrib \' created this page; skipping user notification\' ; else varu800 usertalkpage newu800 morebitsu82ewikiu82epage \'user talk \' initialcontrib \'notifying initial contributor \' initialcontrib \' \' ; varu800 notifytext \' nu800 subst ffdu800 notice 1u800 \' mwu800u82econfigu82egetu800 \'wgtitle\' \' \'; usertalkpageu82esetappendtext notifytext ; usertalkpageu82eseteditsummary \'notification \' paramsu82ediscussionpage \' listing ofu800 \' morebitsu82epagenamenorm \' atu800 wpu800 ffdu800 files foru800 discussion .\' twinkleu82egetpref \'summaryad\' ; usertalkpageu82esetcreateoption \'recreate\' ; twinkleu82exfdu800u82esetwatchpref usertalkpage twinkleu82egetpref \'xfdwatchuser\' ; usertalkpageu82esetfollowredirect true ; usertalkpageu82eappend function onnotifysuccess addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 ifu800 theu800 user hasu800 enabled itu800 ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params initialcontrib ; function onnotifyerror ifu800 user could notu800 beu800 notified logu800 nomination without mentioning that notification wasu800 sent ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; ; oru800 ifu800 notu800 notifying addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 without theu800 initial contributor contributor\'su800 name else ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; taggingimage function pageobj varu800 text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; text textu82ereplace mtcu800 copy move tou800 commons move tou800 wikimedia commons copy tou800 wikimedia commons * giu800   ; pageobju82esetpagetext \' ffdu800 logu800 \' paramsu82edate \' help offu800 nu800\' text ; pageobju82eseteditsummary \'listed foru800 discussion atu800 \' paramsu82ediscussionpage \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchpage\' ; pageobju82esetcreateoption \'recreate\' ; itu800 might beu800 possible foru800 au800 file tou800 exist without au800 description page pageobju82esave ; todayslist function pageobj varu800 text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; addu800 date header ifu800 theu800 logu800 isu800 found tou800 beu800 empty au800 botu800 should dou800 this automatically butu800 itu800 sometimes breaks down ifu800 pageobju82eexists text \' subst ffdu800 logu800 \'; pageobju82esetpagetext text \' nu800 nu800\' twinkleu82exfdu800u82ecallbacksu82egetdiscussionwikitext \'ffdu800\' params ; pageobju82eseteditsummary \'adding \' morebitsu82epagenamenorm \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchdiscussion\' ; pageobju82esetcreateoption \'recreate\' ; pageobju82esave function twinkleu82exfdu800u82ecurrentrationale null; anyu800 errors from nowu800 onu800 dou800 notu800 need tou800 print theu800 rationale asu800 itu800 isu800 safely saved onu800 wiki ; * localized removed cfdu800 * taggingcategory function pageobj varu800 text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; varu800 added_data \' subst \' paramsu82exfdcat; varu800 editsummary mwu800u82econfigu82egetu800 \'wgnamespacenumber\' 14u800 \'category\' \'stub template\' \' being considered foru800 \' paramsu82eaction; switch paramsu82exfdcat case \'cfdu800\' case \'sfdu800 tu800\' break; case \'cfcu800\' editsummary \' tou800 anu800 article\'; falls through case \'cfmu800\' case \'cfru800\' case \'sfru800 tu800\' added_data \' \' paramsu82etarget; break; case \'cfsu800 added_data \' \' paramsu82etarget \' \' paramsu82etarget2; break; default alert \'twinklexfd inu800 taggingcategory unknown cfdu800 action\' ; break; added_data \' \'; editsummary \'; seeu800 \' paramsu82ediscussionpage \' .\'; pageobju82esetpagetext added_data \' nu800\' text ; pageobju82eseteditsummary editsummary twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchpage\' ; pageobju82esetcreateoption \'recreate\' ; since categories canu800 beu800 populated without anu800 actual page atu800 that title pageobju82esave ; todayslist function pageobj varu800 old_text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; varu800 statelem pageobju82egetstatuselement ; varu800 added_data twinkleu82exfdu800u82ecallbacksu82egetdiscussionwikitext paramsu82exfdcat params ; varu800 editsummary \'adding \' paramsu82eaction \' nomination ofu800 \' morebitsu82epagenamenorm \' .\'; varu800 text old_textu82ereplace \'below this line \' \'below this line nu800\' added_data ; ifu800 text old_text statelemu82eerror \'failed tou800 find target spot foru800 theu800 discussion\' ; return; pageobju82esetpagetext text ; pageobju82eseteditsummary editsummary twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchdiscussion\' ; pageobju82esetcreateoption \'recreate\' ; pageobju82esave function twinkleu82exfdu800u82ecurrentrationale null; anyu800 errors from nowu800 onu800 dou800 notu800 need tou800 print theu800 rationale asu800 itu800 isu800 safely saved onu800 wiki ; usernotification function pageobj varu800 initialcontrib pageobju82egetcreator ; varu800 params pageobju82egetcallbackparameters ; disallow warning yourself ifu800 initialcontrib mwu800u82econfigu82egetu800 \'wgusername\' pageobju82egetstatuselement .warn \'youu800 \' initialcontrib \' created this page; skipping user notification\' ; return; varu800 usertalkpage newu800 morebitsu82ewikiu82epage \'user talk \' initialcontrib \'notifying initial contributor \' initialcontrib \' \' ; varu800 notifytext \' nu800 subst cfdu800 notice 1u800 \' morebitsu82epagenamenorm \' action \' paramsu82eaction mwu800u82econfigu82egetu800 \'wgnamespacenumber\' 10u800 \' stub yesu800   \' \'; usertalkpageu82esetappendtext notifytext ; usertalkpageu82eseteditsummary \'notification \' paramsu82ediscussionpage \' listing ofu800 \' morebitsu82epagenamenorm \' atu800 wpu800 cfdu800 categories foru800 discussion .\' twinkleu82egetpref \'summaryad\' ; usertalkpageu82esetcreateoption \'recreate\' ; twinkleu82exfdu800u82esetwatchpref usertalkpage twinkleu82egetpref \'xfdwatchuser\' ; usertalkpageu82esetfollowredirect true ; usertalkpageu82eappend function onnotifysuccess addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 ifu800 theu800 user hasu800 enabled itu800 ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params initialcontrib ; function onnotifyerror ifu800 user could notu800 beu800 notified logu800 nomination without mentioning that notification wasu800 sent ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; ; * localized removed cfds * taggingcategory function pageobj varu800 text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; pageobju82esetpagetext \' subst cfru800 speedy 1u800 \' paramsu82etargetu82ereplace category   \' nu800\' text ; pageobju82eseteditsummary \'listed foru800 speedy renaming; seeu800 wpu800 cfds categories foru800 discussion speedy .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchpage\' ; pageobju82esetcreateoption \'recreate\' ; since categories canu800 beu800 populated without anu800 actual page atu800 that title pageobju82esave function ifu800 paramsu82elognomination nou800 user notification foru800 cfds sou800 just addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; ; addtolist function pageobj varu800 old_text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; varu800 statelem pageobju82egetstatuselement ; varu800 text old_textu82ereplace \'below this line \' \'below this line nu800\' twinkleu82exfdu800u82ecallbacksu82egetdiscussionwikitext \'cfds params ; ifu800 text old_text statelemu82eerror \'failed tou800 find target spot foru800 theu800 discussion\' ; return; pageobju82esetpagetext text ; pageobju82eseteditsummary \'adding \' morebitsu82epagenamenorm \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchdiscussion\' ; pageobju82esetcreateoption \'recreate\' ; pageobju82esave function twinkleu82exfdu800u82ecurrentrationale null; anyu800 errors from nowu800 onu800 dou800 notu800 need tou800 print theu800 rationale asu800 itu800 isu800 safely saved onu800 wiki ; * localized rfdu800 * this gets called both onu800 submit andu800 preview tou800 determine theu800 redirect target findtarget function params callback used byu800 regular redirects tou800 find theu800 target butu800 foru800 allu800 redirects avoid relying onu800 theu800 client clock tou800 build theu800 logu800 page varu800 query \'action\' \'query\' \'curtimestamp\' true ; ifu800 documentu82egetelementbyid \'softredirect\' foru800 soft redirects define theu800 target early tou800 skip target checks inu800 findtargetcallback paramsu82etarget documentu82egetelementbyid \'softredirect\' .textcontentu82ereplace   ; else find current target ofu800 redirect queryu82etitles mwu800u82econfigu82egetu800 \'wgpagename\' ; queryu82eredirects true; varu800 wikipedia_api newu800 morebitsu82ewikiu82eapiu800 \'finding target ofu800 redirect\' query twinkleu82exfdu800u82ecallbacksu82erfdu800u82efindtargetcallback callback ; wikipedia_apiu82eparams params; wikipedia_apiu82epost ; this isu800 au800 closure foru800 theu800 callback from theu800 above apiu800 request which gets theu800 target ofu800 theu800 redirect findtargetcallback function callback return function apiobj varu800 xmldoc apiobju82eresponsexml ; varu800 curtimestamp xmldocu82efind \'apiu800\' .attr \'curtimestamp\' ; apiobju82eparamsu82ecurtimestamp curtimestamp; ifu800 apiobju82eparamsu82etarget notu800 au800 softredirect varu800 target xmldocu82efind \'redirects ru800\' .first .attr \'tou800\' ; ifu800 target varu800 message \'this page does notu800 appear tou800 beu800 au800 redirect aborting\'; ifu800 mwu800u82econfigu82egetu800 \'wgaction\' \'history\' message \'. ifu800 this isu800 au800 soft redirect tryu800 again from theu800 content page notu800 theu800 page history.\'; apiobju82estatelemu82eerror message ; return; apiobju82eparamsu82etarget target; varu800 section xmldocu82efind \'redirects ru800\' .first .attr \'tofragment\' ; apiobju82eparamsu82esection section; callback apiobju82eparams ; ; main function params varu800 date newu800 morebitsu82edate paramsu82ecurtimestamp ; paramsu82elogpage \'wikipedia redirects foru800 discussion logu800 \' dateu82eformat \'yyyy mmmm du800\' \'utcu800\' ; paramsu82ediscussionpage paramsu82elogpage \'#\' morebitsu82epagenamenorm; tagging redirect varu800 wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' \'adding deletion tagu800 tou800 redirect\' ; wikipedia_pageu82esetfollowredirect false ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82erfdu800u82etaggingredirect ; updating data foru800 theu800 action completed event morebitsu82ewikiu82eactioncompletedu82eredirect paramsu82elogpage; morebitsu82ewikiu82eactioncompletedu82enotice \"nomination completed nowu800 redirecting tou800 today today\'su800 logu800\"; adding discussion wikipedia_page newu800 morebitsu82ewikiu82epage paramsu82elogpage \"adding discussion tou800 today today\'su800 logu800\" ; wikipedia_pageu82esetfollowredirect true ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82erfdu800u82etodayslist ; notifications ifu800 paramsu82eusertalk paramsu82erelatedpage varu800 thispage newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' ; thispageu82esetcallbackparameters params ; thispageu82elookupcreation twinkleu82exfdu800u82ecallbacksu82erfdu800u82esendnotifications ; oru800 ifu800 notu800 notifying addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 without theu800 initial contributor contributor\'su800 name else ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; taggingredirect function pageobj varu800 text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; pageobju82esetpagetext \' subst rfdu800 \' mwu800u82econfigu82egetu800 \'wgnamespacenumber\' 10u800 \'showontransclusion 1u800 \'   \'content nu800\' text \' nu800 \' ; pageobju82eseteditsummary \'listed foru800 discussion atu800 \' paramsu82ediscussionpage \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchpage\' ; pageobju82esetcreateoption \'nocreate\' ; pageobju82esave ; todayslist function pageobj varu800 old_text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; varu800 statelem pageobju82egetstatuselement ; paramsu82etarget sectionhash \" nu800\" ; varu800 added_data twinkleu82exfdu800u82ecallbacksu82egetdiscussionwikitext \'rfdu800\' params ; varu800 text old_textu82ereplace addu800 newu800 entries directly below this line . \' 1u800 nu800\' added_data ; ifu800 text old_text statelemu82eerror \'failed tou800 find target spot foru800 theu800 discussion\' ; return; pageobju82esetpagetext text ; pageobju82eseteditsummary \'adding \' morebitsu82epagenamenorm \' .\' twinkleu82egetpref \'summaryad\' ; twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchdiscussion\' ; pageobju82esetcreateoption \'recreate\' ; pageobju82esave function twinkleu82exfdu800u82ecurrentrationale null; anyu800 errors from nowu800 onu800 dou800 notu800 need tou800 print theu800 rationale asu800 itu800 isu800 safely saved onu800 wiki ; sendnotifications function pageobj varu800 initialcontrib pageobju82egetcreator ; varu800 params pageobju82egetcallbackparameters ; varu800 statelem pageobju82egetstatuselement ; notifying initial contributor ifu800 paramsu82eusertalk disallow warning yourself ifu800 initialcontrib mwu800u82econfigu82egetu800 \'wgusername\' statelemu82ewarn \'youu800 \' initialcontrib \' created this page; skipping user notification\' ; else twinkleu82exfdu800u82ecallbacksu82erfdu800u82eusernotification params initialcontrib ; notifying target page page\'su800 watchers ifu800 notu800 au800 soft redirect ifu800 paramsu82erelatedpage varu800 targettalk newu800 mwu800u82etitle paramsu82etarget .gettalkpage ; onu800 theu800 offchance itu800 itu800\'su800 au800 circular redirect ifu800 paramsu82etarget mwu800u82econfigu82egetu800 \'wgpagename\' statelemu82ewarn \'circular redirect; skipping target page notification\' ; else ifu800 documentu82egetelementbyid \'softredirect\' statelemu82ewarn \'soft redirect; skipping target page notification\' ; else ifu800 targettalku82egetnamespaceid 3u800 donu800\'tu800 issue ifu800 target talk isu800 theu800 initial contributor contributor\'su800 talk oru800 your ownu800 ifu800 targettalku82egetnametext initialcontrib statelemu82ewarn \'target isu800 initial contributor; skipping target page notification\' ; else ifu800 targettalku82egetnametext mwu800u82econfigu82egetu800 \'wgusername\' statelemu82ewarn \'youu800 \' mwu800u82econfigu82egetu800 \'wgusername\' \' areu800 theu800 target; skipping target page notification\' ; else twinkleu82exfdu800u82ecallbacksu82erfdu800u82etargetnotification params targettalk ; usernotification function params initialcontrib varu800 usertalkpage newu800 morebitsu82ewikiu82epage \'user talk \' initialcontrib \'notifying initial contributor \' initialcontrib \' \' ; varu800 notifytext \' nu800 subst rfdu800 notice 1u800 \' morebitsu82epagenamenorm \' \'; usertalkpageu82esetappendtext notifytext ; usertalkpageu82eseteditsummary \'notification \' paramsu82ediscussionpage \' listing ofu800 \' morebitsu82epagenamenorm \' atu800 wpu800 rfdu800 redirects foru800 discussion .\' twinkleu82egetpref \'summaryad\' ; usertalkpageu82esetcreateoption \'recreate\' ; twinkleu82exfdu800u82esetwatchpref usertalkpage twinkleu82egetpref \'xfdwatchuser\' ; usertalkpageu82esetfollowredirect true ; usertalkpageu82eappend function onnotifysuccess addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 ifu800 theu800 user hasu800 enabled itu800 ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params initialcontrib ; function onnotifyerror ifu800 user could notu800 beu800 notified logu800 nomination without mentioning that notification wasu800 sent ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; ; targetnotification function params targettalk varu800 targettalkpage newu800 morebitsu82ewikiu82epage targettalk \'notifying redirect target ofu800 theu800 discussion\' ; varu800 notifytext \' nu800 subst rfdu800 notice 1u800 \' morebitsu82epagenamenorm \' \'; targettalkpageu82esetappendtext notifytext ; targettalkpageu82eseteditsummary \'notification \' paramsu82ediscussionpage \' listing ofu800 \' morebitsu82epagenamenorm \' atu800 wpu800 rfdu800 redirects foru800 discussion .\' twinkleu82egetpref \'summaryad\' ; targettalkpageu82esetcreateoption \'recreate\' ; twinkleu82exfdu800u82esetwatchpref targettalkpage twinkleu82egetpref \'xfdwatchrelated\' ; targettalkpageu82esetfollowredirect true ; addu800 tou800 userspace logu800 even ifu800 notu800 notifying theu800 creator ifu800 paramsu82elognomination && paramsu82eusertalk targettalkpageu82eappend function twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; ; else targettalkpageu82eappend ; * localized removed rmu800 * listattalk function pageobj varu800 params pageobju82egetcallbackparameters ; pageobju82esetappendtext \' nu800 nu800\' twinkleu82exfdu800u82ecallbacksu82egetdiscussionwikitext \'rmu800\' params ; pageobju82eseteditsummary \'proposing move\' paramsu82enewname \' tou800 \' paramsu82enewname \' \'   twinkleu82egetpref \'summaryad\' ; pageobju82esetcreateoption \'recreate\' ; since theu800 talk page need notu800 exist twinkleu82exfdu800u82esetwatchpref pageobj twinkleu82egetpref \'xfdwatchdiscussion\' ; pageobju82eappend function twinkleu82exfdu800u82ecurrentrationale null; anyu800 errors from nowu800 onu800 dou800 notu800 need tou800 print theu800 rationale asu800 itu800 isu800 safely saved onu800 wiki addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 ifu800 theu800 user hasu800 enabled itu800 ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; ; listatrmtr function pageobj varu800 text pageobju82egetpagetext ; varu800 params pageobju82egetcallbackparameters ; varu800 statelem pageobju82egetstatuselement ; varu800 hiddencommentre andu800 enter onu800 au800 newu800 lineu82e* ; varu800 newtext textu82ereplace hiddencommentre \' & nu800\' twinkleu82exfdu800u82ecallbacksu82egetdiscussionwikitext \'rmu800\' params ; ifu800 text newtext statelemu82eerror \'failed tou800 find target spot foru800 theu800 entry\' ; return; pageobju82esetpagetext newtext ; pageobju82eseteditsummary \'adding \' morebitsu82epagenamenorm \' .\' twinkleu82egetpref \'summaryad\' ; pageobju82esave function twinkleu82exfdu800u82ecurrentrationale null; anyu800 errors from nowu800 onu800 dou800 notu800 need tou800 print theu800 rationale asu800 itu800 isu800 safely saved onu800 wiki addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 ifu800 theu800 user hasu800 enabled itu800 ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; ; * localized removed ; twinkleu82exfdu800u82ecallbacku82eevaluate function eu800 varu800 form eu800u82etarget; varu800 type formu82ecategoryu82evalue; varu800 usertalk formu82enotifyu82echecked; varu800 reason formu82exfdreasonu82evalue; varu800 delsort_cats formu82edelsort .valu800 ; afdu800 localized removed varu800 xfdcat formu82exfdcat && formu82exfdcatu82evalue; afdu800 cfdu800 cfds tfdu800 varu800 xfdtarget formu82exfdtarget && formu82exfdtargetu82evalue; cfdu800 cfds tfdu800 varu800 xfdtarget2 formu82exfdtarget2 && formu82exfdtarget2u82evalue; cfdu800 varu800 noinclude formu82enoinclude && formu82enoincludeu82echecked; afdu800 mfdu800 tfdu800 varu800 tfdtype formu82etemplatetype && formu82etemplatetypeu82evalue; tfdu800 varu800 notifyuserspace formu82enotifyuserspace && formu82enotifyuserspaceu82echecked; mfdu800 varu800 relatedpage formu82erelatedpage && formu82erelatedpageu82echecked; rfdu800 varu800 newname formu82enewname && formu82enewnameu82evalue; rmu800 varu800 rmtr formu82ermtr && formu82ermtru82echecked; rmu800 varu800 lognomination twinkleu82egetpref \'logxfdnominations && twinkleu82egetpref \'nologonxfdnomination\' .indexof type 1u800; morebitsu82esimplewindowu82esetbuttonsenabled false ; morebitsu82estatusu82einit form ; twinkleu82exfdu800u82ecurrentrationale reason; morebitsu82estatusu82eonerror twinkleu82exfdu800u82eprintrationale ; ifu800 type morebitsu82estatusu82eerror \'u8d8aeu8d8b7u8d8a7\' \'u8daa9u8d986u8d8b4u8db8c u8d985u8d8b4u8d8aeu8d8b5 u8d986u8d8b4u8d8afu8d987u8e2808cu8d8a7u8d8b3u8d8aa\' ; return; varu800 query wikipedia_page wikipedia_api logpage; varu800 params reason reason venue type lognomination lognomination ; common params varu800 date newu800 morebitsu82edate ; xxxu800 avoid useu800 ofu800 client clock still used byu800 tfdu800 ffdu800 andu800 cfdu800 switch type case \'afdu800\' afdu800 query \'action\' \'query\' \'list\' \'allpages \'apprefix\' \'u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8adu8d8b0u8d981 \' morebitsu82epagenamenorm localized \'apnamespace\' 4u800 \'apfilterredir\' \'nonredirects \'aplimit\' \'maxu800\' 500u800 isu800 maxu800 foru800 normal users 5000 foru800 bots andu800 sysops ; wikipedia_api newu800 morebitsu82ewikiu82eapiu800 \'u8d986u8d8b5u8d8a8 u8d8a8u8d8b1u8da86u8d8b3u8d8a8 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981 u8d8a8u8d8b1 u8d8b5u8d981u8d8adu8d987\' query twinkleu82exfdu800u82ecallbacksu82eafdu800u82emain ; localized wikipedia_apiu82eparams .extend params usertalk usertalk noinclude noinclude xfdcat xfdcat * delsort_cats delsort_cats* ; localized removed wikipedia_apiu82epost ; break; case \'tfdu800\' tfdu800 * morebitsu82ewikiu82eaddcheckpoint ; ifu800 xfdtarget varu800 tfdnamespace_re newu800 regexp \' \' mwu800u82econfigu82egetu800 \'wgcanonicalnamespace\' \' \' \'iu800\' ; xfdtarget morebitsu82estringu82etouppercasefirstchar xfdtargetu82ereplace tfdnamespace_re   ; else xfdtarget  ; logpage \'wikipedia templates foru800 discussion logu800 \' dateu82eformat \'yyyy mmmm du800\' \'utcu800\' ; .extend params tfdtype tfdtype logpage logpage noinclude noinclude xfdcat xfdcat target xfdtarget ; paramsu82ediscussionpage paramsu82elogpage \'#\' morebitsu82epagenamenorm; modules canu800\'tu800 beu800 tagged tfdu800 instructions areu800 tou800 place onu800 docu800 subpage sou800 need tou800 tagu800 andu800 watch specially paramsu82escribunto mwu800u82econfigu82egetu800 \'wgpagecontentmodel\' \'scribunto\'; varu800 watch_query action \'watch\' titles mwu800u82econfigu82egetu800 \'wgpagename\' token mwu800u82euseru82etokensu82egetu800 \'watchtoken\' ; tagging template su800 module su800 ifu800 xfdcat \'tfmu800\' merge varu800 wikipedia_otherpage; tagu800 this template module ifu800 paramsu82escribunto wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' \' docu800\' \'tagging this module documentation with merge tagu800\' ; paramsu82eothertemplatename \'module \' xfdtarget; wikipedia_otherpage newu800 morebitsu82ewikiu82epage paramsu82eothertemplatename \' docu800\' \'tagging other module documentation with merge tagu800\' ; watch tagged module pages asu800 well ifu800 twinkleu82egetpref \'xfdwatchpage\' \'nou800\' watch_queryu82etitles \' \' paramsu82eothertemplatename; newu800 morebitsu82ewikiu82eapiu800 \'adding modules tou800 watchlist\' watch_query .post ; else wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' \'tagging this template with merge tagu800\' ; paramsu82eothertemplatename \'template \' xfdtarget; wikipedia_otherpage newu800 morebitsu82ewikiu82epage paramsu82eothertemplatename \'tagging other template with merge tagu800\' ; wikipedia_pageu82esetfollowredirect true ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82etfdu800u82etaggingtemplateformerge ; tagu800 other template module wikipedia_otherpageu82esetfollowredirect true ; varu800 otherparams .extend params ; otherparamsu82eothertemplatename morebitsu82epagenamenorm; wikipedia_otherpageu82esetcallbackparameters otherparams ; wikipedia_otherpageu82eload twinkleu82exfdu800u82ecallbacksu82etfdu800u82etaggingtemplateformerge ; else delete ifu800 paramsu82escribunto wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' \' docu800\' \'tagging module documentation with deletion tagu800\' ; watch tagged module page asu800 well ifu800 twinkleu82egetpref \'xfdwatchpage\' \'nou800\' newu800 morebitsu82ewikiu82eapiu800 \'adding module tou800 watchlist\' watch_query .post ; else wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' \'tagging template with deletion tagu800\' ; wikipedia_pageu82esetfollowredirect true ; should never beu800 needed butu800 ifu800 theu800 page isu800 moved weu800 would want tou800 follow theu800 redirect wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82etfdu800u82etaggingtemplate ; updating data foru800 theu800 action completed event morebitsu82ewikiu82eactioncompletedu82eredirect logpage; morebitsu82ewikiu82eactioncompletedu82enotice \"nomination completed nowu800 redirecting tou800 today today\'su800 logu800\"; adding discussion wikipedia_page newu800 morebitsu82ewikiu82epage logpage \"adding discussion tou800 today today\'su800 logu800\" ; wikipedia_pageu82esetfollowredirect true ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82etfdu800u82etodayslist ; notification tou800 first contributors ifu800 usertalk varu800 involvedpages ; varu800 seenusers ; involvedpagesu82epush newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' ; ifu800 xfdcat \'tfmu800\' ifu800 paramsu82escribunto involvedpagesu82epush newu800 morebitsu82ewikiu82epage \'module \' xfdtarget ; else involvedpagesu82epush newu800 morebitsu82ewikiu82epage \'template \' xfdtarget ; involvedpagesu82eforeach function page pageu82esetcallbackparameters params ; pageu82elookupcreation function innerpage varu800 username innerpageu82egetcreator ; ifu800 seenusersu82eindexof username 1u800 seenusersu82epush username ; twinkleu82exfdu800u82ecallbacksu82etfdu800u82eusernotification innerpage ; ; ; oru800 ifu800 notu800 notifying addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 without theu800 initial contributor contributor\'su800 name else ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; morebitsu82ewikiu82eremovecheckpoint ; * localized removed break; case \'mfdu800\' mfdu800 * query \'action\' \'query\' \'list\' \'allpages \'apprefix\' \'miscellany foru800 deletion \' morebitsu82epagenamenorm \'apnamespace\' 4u800 \'apfilterredir\' \'nonredirects \'aplimit\' \'maxu800\' 500u800 isu800 maxu800 foru800 normal users 5000 foru800 bots andu800 sysops ; wikipedia_api newu800 morebitsu82ewikiu82eapiu800 \'looking foru800 prior nominations ofu800 this page\' query twinkleu82exfdu800u82ecallbacksu82emfdu800u82emain ; wikipedia_apiu82eparams .extend params usertalk usertalk notifyuserspace notifyuserspace noinclude noinclude xfdcat xfdcat ; wikipedia_apiu82epost ; * localiezd removed break; case \'ffdu800\' ffdu800 * varu800 datestring dateu82eformat \'yyyy mmmm du800\' \'utcu800\' ; logpage \'wikipedia files foru800 discussion \' datestring; .extend params usertalk usertalk date datestring logpage logpage ; paramsu82ediscussionpage paramsu82elogpage \'#\' morebitsu82epagenamenorm; morebitsu82ewikiu82eaddcheckpoint ; updating data foru800 theu800 action completed event morebitsu82ewikiu82eactioncompletedu82eredirect logpage; morebitsu82ewikiu82eactioncompletedu82enotice \'nomination completed nowu800 redirecting tou800 theu800 discussion page\'; tagging file wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' \'adding deletion tagu800 tou800 file page\' ; wikipedia_pageu82esetfollowredirect true ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82effdu800u82etaggingimage ; contributor specific edits wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82elookupcreation twinkleu82exfdu800u82ecallbacksu82effdu800u82emain ; morebitsu82ewikiu82eremovecheckpoint ; * localized removed break; case \'cfdu800\' * morebitsu82ewikiu82eaddcheckpoint ; varu800 cfdnamespace_re newu800 regexp \' \' mwu800u82econfigu82egetu800 \'wgcanonicalnamespace\' \' \' \'iu800\' ; ifu800 xfdtarget xfdtarget xfdtargetu82ereplace cfdnamespace_re   ; else xfdtarget  ; ifu800 xfdtarget2 xfdtarget2 xfdtarget2u82ereplace cfdnamespace_re   ; logpage \'wikipedia categories foru800 discussion logu800 \' dateu82eformat \'yyyy mmmm du800\' \'utcu800\' ; .extend params xfdcat xfdcat target xfdtarget target2 xfdtarget2 logpage logpage ; paramsu82ediscussionpage paramsu82elogpage \'#\' morebitsu82epagenamenorm; useful foru800 customized actions inu800 edit summaries andu800 theu800 notification template varu800 summaryactions cfdu800 \'deletion\' \'sfdu800 tu800\' \'deletion\' cfmu800 \'merging\' cfru800 \'renaming\' \'sfru800 tu800\' \'renaming\' cfsu800 \'splitting\' cfcu800 \'conversion\' ; paramsu82eaction summaryactions paramsu82exfdcat ; updating data foru800 theu800 action completed event morebitsu82ewikiu82eactioncompletedu82eredirect logpage; morebitsu82ewikiu82eactioncompletedu82enotice \"nomination completed nowu800 redirecting tou800 today today\'su800 logu800\"; tagging category wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' \'tagging category with \' paramsu82eaction \' tagu800\' ; wikipedia_pageu82esetfollowredirect true ; should never beu800 needed butu800 ifu800 theu800 page isu800 moved weu800 would want tou800 follow theu800 redirect wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82ecfdu800u82etaggingcategory ; adding discussion tou800 list wikipedia_page newu800 morebitsu82ewikiu82epage logpage \"adding discussion tou800 today today\'su800 list\" ; wikipedia_pageu82esetpagesection 2u800 ; wikipedia_pageu82esetfollowredirect true ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82ecfdu800u82etodayslist ; notification tou800 first contributor ifu800 usertalk wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82elookupcreation twinkleu82exfdu800u82ecallbacksu82ecfdu800u82eusernotification ; oru800 ifu800 notu800 notifying addu800 this nomination tou800 theu800 user user\'su800 userspace logu800 without theu800 initial contributor contributor\'su800 name else ifu800 paramsu82elognomination twinkleu82exfdu800u82ecallbacksu82eaddtolog params null ; morebitsu82ewikiu82eremovecheckpoint ; * localized removed break; case \'cfds * xfdtarget category .test xfdtarget xfdtarget \'category \' xfdtarget; logpage \'wikipedia categories foru800 discussion speedy\'; .extend params xfdcat xfdcat target xfdtarget ; updating data foru800 theu800 action completed event morebitsu82ewikiu82eactioncompletedu82eredirect logpage; morebitsu82ewikiu82eactioncompletedu82enotice \'nomination completed nowu800 redirecting tou800 theu800 discussion page\'; tagging category wikipedia_page newu800 morebitsu82ewikiu82epage mwu800u82econfigu82egetu800 \'wgpagename\' \'tagging category with rename tagu800\' ; wikipedia_pageu82esetfollowredirect true ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82ecfdsu82etaggingcategory ; adding discussion tou800 list wikipedia_page newu800 morebitsu82ewikiu82epage logpage \'adding discussion tou800 theu800 list\' ; wikipedia_pageu82esetfollowredirect true ; wikipedia_pageu82esetcallbackparameters params ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82ecfdsu82eaddtolist ; * localized removed break; case \'rfdu800\' * .extend params usertalk usertalk relatedpage relatedpage ; find target andu800 pass main asu800 theu800 callback twinkleu82exfdu800u82ecallbacksu82erfdu800u82efindtarget params twinkleu82exfdu800u82ecallbacksu82erfdu800u82emain ; * localiezd removed break; case \'rmu800\' * .extend params newname newname rmtr rmtr ; varu800 nompagename rmtr \'wikipedia requested moves technical requests newu800 mwu800u82etitle morebitsu82epagenamenorm .gettalkpage .totext ; morebitsu82ewikiu82eactioncompletedu82eredirect nompagename; morebitsu82ewikiu82eactioncompletedu82enotice \'nomination completed nowu800 redirecting tou800 theu800 discussion page\'; wikipedia_page newu800 morebitsu82ewikiu82epage nompagename rmtr \'adding entry atu800 wpu800 rmu800 tru800\' \'adding entry onu800 talk page\' ; wikipedia_pageu82esetfollowredirect true ; wikipedia_pageu82esetcallbackparameters params ; ifu800 rmtr wikipedia_pageu82esetpagesection 2u800 ; wikipedia_pageu82eload twinkleu82exfdu800u82ecallbacksu82ermu800u82elistatrmtr ; else listattalk uses .append sou800 nou800 need tou800 load theu800 page twinkleu82exfdu800u82ecallbacksu82ermu800u82elistattalk wikipedia_page ; * localized removed break; default alert \'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981 u8d8aau8d988u8db8cu8d986u8daa9u8d984 u8d985u8daa9u8d8a7u8d986 u8d986u8d8a7u8d8b4u8d986u8d8a7u8d8aeu8d8aau8d987 u8d8a8u8d8b1u8d8a7u8db8c u8d8afu8d8b1u8d8ac u8d986u8d8b8u8d8b1u8d8aeu8d988u8d8a7u8d987u8db8c u8d8adu8d8b0u8d981\' ; localized break; ; jquery ; ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(161, 'gadgets definition', ' extra editbuttons * extra editbuttons resourceloader dependencies mediawikiu82eutil default rights minoredit extra editbuttonsu82ejsu800 extra editbuttons persiantoolsu82ejsu800 extra editbuttons persianwikitoolsu82ejsu800 extra editbuttons dictionaryu82ejsu800 extra editbuttons autoedu82ejsu800 extra editbuttons botworksu82ejsu800 * dropdown menus resourceloader dependencies mediawikiu82eapiu800 mediawikiu82eutil useru82eoptions peers dropdown menus pagestyles dropdown menusu82ejsu800 * dropdown menus pagestyles hidden dropdown menus pagestylesu82ecssu800 * edittools resourceloader default type general edittoolsu82ejsu800 edittoolsu82ecssu800 * bottools resourceloader rights move dependencies mediawikiu82eutil bottoolsu82ejsu800 * tofawikialot resourceloader rights autopatrol dependencies mediawikiu82eutil tofawikialotu82ejsu800 discussion tools discussion tools discussion tools * usermessages resourceloader dependencies mediawikiu82eutil type general usermessagesu82ejsu800 usermessagesu82ecssu800 * close resourceloader dependencies mediawikiu82eutil closeu82ejsu800 closeu82ecssu800 * oneclickarchiver resourceloader dependencies mediawikiu82eutil mediawikiu82elanguage mediawikiu82ejquerymsg oneclickarchiveru82ejsu800 * easynewsection resourceloader default easynewsectionu82ejsu800 * signit resourceloader default signitu82ejsu800 * autosign resourceloader dependencies mediawikiu82eutil autosignu82ejsu800 mobile mobile mobile * mobile sidebar resourceloader type general mobile sidebaru82ejsu800 mobile sidebaru82ecssu800 * mobile common resourceloader topu800 targets mobile dependencies mediawikiu82eutil mobile commonu82ejsu800 interface interface interface * censorship resourceloader type general censorshipu82ejsu800 censorshipu82ecssu800 * popups resourceloader popupsu82ejsu800 * edittop resourceloader dependencies mediawikiu82eutil edittopu82ejsu800 * purgetab resourceloader dependencies mediawikiu82eutil purgetabu82ejsu800 * lastdiff resourceloader dependencies mediawikiu82eutil lastdiffu82ejsu800 * asbox resourceloader dependencies mediawikiu82eutil oojs uiu800 asboxu82ejsu800 * ancretitres resourceloader ancretitresu82ejsu800 * greenredirect resourceloader type general greenredirectu82ecssu800 * yellowdisambig resourceloader type general yellowdisambigu82ecssu800 * commenthighlighter resourceloader dependencies mediawikiu82eutil commenthighlighteru82ejsu800 * olddiff resourceloader type general olddiffu82ecssu800 * exlinks resourceloader exlinksu82ejsu800 * btmu800 actions resourceloader type general btmu800 actionsu82ejsu800 btmu800 actionsu82ecssu800 * searchengines resourceloader searchenginesu82ejsu800 * osmu800 resourceloader osmu800u82ejsu800 * metadata resourceloader dependencies mediawikiu82eutil metadatau82ejsu800 * toolsicon resourceloader type general toolsiconu82ecssu800 * decodesummary resourceloader default targets desktop mobile decodesummaryu82ejsu800 * wdsearch resourceloader wdsearchu82ejsu800 * microblog resourceloader dependencies mediawikiu82eutil microblogu82ejsu800 * gototop resourceloader gototopu82ejsu800 * watchlist resourceloader default watchlistu82ejsu800 * articlequality resourceloader dependencies mediawikiu82eutil mediawikiu82eapiu800 articlequalityu82ejsu800 articlequalityu82ecssu800 * quicklinker resourceloader rights patrol dependencies mediawikiu82eutil mediawikiu82eapiu800 quicklinkeru82ejsu800 * switcher resourceloader default targets desktop mobile switcheru82ejsu800 * confirm logout resourceloader targets desktop mobile confirm logoutu82ejsu800 languagesupport languagesupport languagesupport * translationhelper resourceloader translationhelperu82ejsu800 * checkdictation resourceloader dependencies mediawikiu82eutil jqueryu82euiu800 type general checkdictationu82ejsu800 checkdictationu82ecssu800 * dictionarylookuphover resourceloader dictionarylookuphoveru82ejsu800 * googletranslator resourceloader googletranslatoru82ejsu800 * bidiediting resourceloader bidieditingu82ejsu800 * prota resourceloader protau82ejsu800 * shortlink resourceloader shortlinku82ejsu800 interface view interface view interface view * categoryaboveall resourceloader categoryaboveallu82ejsu800 * fixsidebar resourceloader type general fixsidebaru82ecssu800 * fixtopbar resourceloader type general fixtopbaru82ecssu800 * sidebartoggle resourceloader type general sidebartoggleu82ecssu800 sidebartoggleu82ejsu800 * lastchenges resourceloader dependencies mediawikiu82eutil lastchangesu82ejsu800 * prefixindex resourceloader dependencies mediawikiu82eutil prefixindexu82ejsu800 * utcliveclock resourceloader dependencies mediawikiu82eutil utcliveclocku82ejsu800 * personallinks resourceloader dependencies mediawikiu82eutil mediawikiu82euser personallinksu82ejsu800 * enhancedtalk resourceloader type general blanku82ejsu800 enhancedtalku82ecssu800 edit interface edit interface edit interface * wiked resourceloader wikedu82ejsu800 * defaultsummaries resourceloader defaultsummariesu82ejsu800 * intropreload resourceloader intropreloadu82ejsu800 * customizededittool resourceloader customizededittoolu82ejsu800 * dotssyntaxhighlighter resourceloader dotssyntaxhighlighteru82ejsu800 * ahku800 resourceloader dependencies mediawikiu82eutil ahku800u82ejsu800 interface history interface history interface history * deluxehistory resourceloader rights move type general objectsu82ejsu800 deluxehistoryu82ejsu800 deluxehistoryu82ecssu800 * historycount resourceloader type general historycountu82ecssu800 historycountu82ejsu800 * diffswitchdir resourceloader diffswitchdiru82ejsu800 * hidebotedits resourceloader hideboteditsu82ejsu800 * diffpicker resourceloader dependencies mediawikiu82eutil oojs uiu800 core oojs uiu800 widgets oojs uiu800 windows diffpickeru82ejsu800 diffpickeru82ecssu800 patrol tools patrol tools patrol tools * rcforpatrollers resourceloader dependencies mediawikiu82eutil default rights patrol rcforpatrollersu82ejsu800 * twinkle resourceloader dependencies extu800u82egadgetu82eselect2 mediawikiu82eapiu800 extu800u82egadgetu82emorebits rights autoconfirmed type general peers twinkle pagestyles twinkle 2020u82ejsu800 twinkleprod 2020u82ejsu800 twinkleimage 2020u82ejsu800 twinklebatchundelete 2020u82ejsu800 twinklewarn 2020u82ejsu800 twinklespeedy 2020u82ejsu800 friendlyshared 2020u82ejsu800 twinklediff 2020u82ejsu800 twinkleunlink 2020u82ejsu800 friendlytag 2020u82ejsu800 twinkledeprod 2020u82ejsu800 friendlywelcome 2020u82ejsu800 twinklexfd 2020u82ejsu800 twinklebatchdelete 2020u82ejsu800 twinklebatchprotect 2020u82ejsu800 twinkleconfig 2020u82ejsu800 twinklefluff 2020u82ejsu800 twinkleprotect 2020u82ejsu800 twinklearv 2020u82ejsu800 twinkleblock 2020u82ejsu800 friendlytalkback 2020u82ejsu800 twinkle 2020u82ecssu800 * twinkle pagestyles hidden skins vector twinkle pagestylesu82ecssu800 * select2 resourceloader hidden select2u82eminu800u82ejsu800 select2u82eminu800u82ecssu800 * rtrc resourceloader rtrcu82ejsu800 * patroller resourceloader default rights patrol patrolleru82ejsu800 * taghighlighter resourceloader rights move type general taghighlighteru82ecssu800 * taghider resourceloader rights move type general taghideru82ecssu800 * filedeletionnominator resourceloader dependencies mediawikiu82eutil oojs uiu800 filedeletionnominatoru82ejsu800 * hiderequest resourceloader dependencies mediawikiu82eutil hiderequestu82ejsu800 * quickrcdiff resourceloader dependencies jqueryu82euiu800 mediawikiu82ediffu82estyles mediawikiu82eapiu800 rights move peers quickrcdiffstyle quickrcdiffu82ejsu800 * adscleaner resourceloader dependencies mediawikiu82eutil oojs uiu800 core oojs uiu800 widgets oojs uiu800 windows adscleaneru82ejsu800 * rollback resourceloader rights rollback dependencies mediawikiu82euriu800 mediawikiu82eapiu800 rollbacku82ejsu800 referencing referencing referencing * proveit resourceloader proveitu82ejsu800 * segregate refs resourceloader segregate refsu82ejsu800 * refstyle resourceloader type general refstyleu82ecssu800 refstyleu82ejsu800 * referencetooltips resourceloader default type general referencetooltipsu82ejsu800 referencetooltipsu82ecssu800 * messages dropdown resourceloader messages dropdownu82ejsu800 * fixrefs resourceloader dependencies mediawikiu82eutil fixrefsu82ejsu800 categories categories categories * hotcat resourceloader hotcatu82ejsu800 * catu800 au800 lotu800 resourceloader rights patrol type general dependencies mediawikiu82eutil catu800 au800 lotu800u82ecssu800 catu800 au800 lotu800u82ejsu800 * catmaker resourceloader rights autopatrol dependencies mediawikiu82eutil catmakeru82ejsu800 interwiki interwiki interwiki * interwikitranslate resourceloader interwikitranslateu82ejsu800 * interwikiorder resourceloader type general interwikiorderu82ecssu800 interwikiorderu82ejsu800 * interwiki resourceloader interwikiu82ejsu800 * quickwikidata resourceloader quickwikidatau82ejsu800 * wikidatarecom resourceloader wikidatarecomu82ejsu800 * wikidatainfo resourceloader wikdatainfou82ejsu800 statistics statistics statistics * stru contavisite resourceloader dependencies mediawikiu82eutil stru contavisiteu82ejsu800 * usereditcount resourceloader rights move dependencies mediawikiu82eutil usereditcountu82ejsu800 * contributions report resourceloader dependencies mediawikiu82eutil contributions reportu82ejsu800 * userinfo resourceloader userinfou82ejsu800 * lifilter resourceloader dependencies mediawikiu82eutil lifilteru82ejsu800 * linksinfo resourceloader dependencies mediawikiu82eutil mediawikiu82eapiu800 linksinfou82ejsu800 * xtools resourceloader xtoolsu82ejsu800 * textstats resourceloader dependencies mediawikiu82eutil textstatsu82ejsu800 * editors resourceloader dependencies mediawikiu82eutil mediawikiu82eapiu800 editorsu82ejsu800 admin gadgets admin gadgets admin gadgets * afdu800 resourceloader rights undelete default type general dependencies mediawikiu82eutil afdu800u82ejsu800 afdu800u82ecssu800 * cleandeletereasons resourceloader rights delete cleandeletereasonsu82ejsu800 * statlink resourceloader rights delete statlinku82ejsu800 * userrights resourceloader rights undelete dependencies mediawikiu82eutil userrightsu82ejsu800 * markblocked resourceloader default rights delete dependencies mediawikiu82eutil markblockedu82ejsu800 * interaction_analyser resourceloader dependencies mediawikiu82eutil rights move interaction_analyseru82ejsu800 * rltoggle resourceloader dependencies mediawikiu82eutil rltoggleu82ejsu800 * mediawikieditsummary resourceloader rights undelete default type general mediawikieditsummaryu82ejsu800 othermod othermod othermod * transfertocommons resourceloader dependencies mediawikiu82eutil transfertocommonsu82ejsu800 * filesiblings resourceloader filesiblingsu82ejsu800 * commonsdirect resourceloader dependencies mediawikiu82eutil default direct link tou800 commonsu82ejsu800 modules modules modules * site resourceloader default hidden dependencies jqueryu82euiu800 * intro resourceloader rights hidden hidden type general introu82ejsu800 introu82ecssu800 * morebits resourceloader dependencies mediawikiu82euser mediawikiu82eutil jqueryu82euiu800 jqueryu82etipsy hidden morebitsu82ejsu800 morebitsu82ecssu800 * libapi resourceloader dependencies mediawikiu82eutil mediawikiu82euser useru82eoptions rights hidden hidden libapiu82ejsu800 * libwikidom resourceloader rights hidden hidden libwikidomu82ejsu800 * libglobalreplace resourceloader dependencies extu800u82egadgetu82elibwikidom extu800u82egadgetu82elibutil rights hidden hidden libglobalreplaceu82ejsu800 * libutil resourceloader dependencies mediawikiu82eutil rights hidden hidden libutilu82ejsu800 * experimental reactjs resourceloader right hidden hidden experimental reactu82ejsu800 * experimental vuejs resourceloader right hidden hidden experimental vuejs3u82ejsu800 * libextrautil resourceloader hidden libextrautilu82ejsu800 visualeditor visualeditor visualeditor *vesupertool resourceloader dependencies mediawikiu82eutil vesupertoolu82ejsu800 extra editbuttons persiantoolsu82ejsu800 extra editbuttons persianwikitoolsu82ejsu800 extra editbuttons dictionaryu82ejsu800 *veextendedbar resourceloader dependencies extu800u82evisualeditoru82edesktoparticletargetu82einit veextendedbaru82ejsu800 *vedirectionmarktool resourceloader rights hidden hidden dependencies extu800u82evisualeditoru82ecore type general vedirectionmarktoolu82ejsu800 vedirectionmarktoolu82ecssu800 fonts fonts fonts * iraniansans resourceloader topu800 targets desktop mobile iraniansansu82ecssu800 * notosansarabicui resourceloader topu800 targets desktop mobile notosansarabicuiu82ecssu800 * vazir resourceloader topu800 targets desktop mobile vaziru82ecssu800 * samim resourceloader topu800 targets desktop mobile samimu82ecssu800 * shabnam resourceloader topu800 targets desktop mobile shabnamu82ecssu800 * tanha resourceloader topu800 targets desktop mobile tanhau82ecssu800 * gandom resourceloader topu800 targets desktop mobile gandomu82ecssu800 * parastoo resourceloader topu800 targets desktop mobile parastoou82ecssu800 * sahel resourceloader topu800 targets desktop mobile sahelu82ecssu800 * nika resourceloader topu800 targets desktop mobile nikau82ecssu800 * behdad resourceloader topu800 targets desktop mobile behdadu82ecssu800 * farbod resourceloader topu800 targets desktop mobile farbodu82ecssu800 * terafik resourceloader topu800 targets desktop mobile terafiku82ecssu800 * pfont resourceloader topu800 targets desktop mobile pfontu82ecssu800 * monospace resourceloader topu800 targets desktop mobile monospaceu82ecssu800 beta beta beta * twinkle test resourceloader twinkle testu82ejsu800 * redirectmaker resourceloader dependecies oojs uiu800 mediawikiu82eutil redirectmakeru82ejsu800 * liverc resourceloader livercu82ejsu800 * reftoolbar resourceloader default dependencies useru82eoptions mediawikiu82eutil reftoolbaru82ejsu800 * reftoolbarbase resourceloader hidden reftoolbarbaseu82ejsu800 * translationassistant resourceloader translationassistantu82ejsu800 * amiri resourceloader topu800 targets desktop mobile amiriu82ecssu800 '),
(162, 'mobileu82ecssu800', ' * begin font style * font face font family \'samim\'; font style normal; font weight 400u800; font display swap; srcu800 urlu800 \' wu800 resources fonts samimu82ewoff\' format \'woff\' ; font face font family \'me_quran\'; font style normal; font weight 400u800; font display swap; srcu800 urlu800 \' wu800 resources fonts me_quranu82ewoff\' format \'woff\' ; font face font family \'kfgqpcuthmantahanaskh\'; font style normal; font weight 400u800; font display swap; srcu800 urlu800 \' wu800 resources fonts kfgqpcuthmantahanaskhu82ewoff\' format \'woff\' ; body font family samim \'iranian sans tahoma \'dejavu sans important; #bodycontent line height 2u800; font size 0u800u82e93em; #contentu82emwu800 body h1u800 #contentu82emwu800 body h2u800 #contentu82emwu800 body #firstheading #contentu82emwu800 body .mwu800 editsection .mwu800 body .mwu800 editsection like #contentu82emwu800 body #tocu800 h2u800 #contentu82emwu800 body .tocu800 h2u800 .vector sticky header context baru800 primary #template documentation #documentation meta data font family samim \'iranian serif\' \'iranian sans tahoma \'noto serif\' \'droid arabic naskh\' \'dejavu sans serif important; textarea font family samim \'courier newu800\' monospace; .arabic *font family \"uthmanic hafs\";* font family me_quran scheherazade mry_kacstqurn tahoma; font size 1u800u82e02em; color #000000c0; .ayaflag font family \"traditional arabic\" \"times newu800 roman\"; color #215e21; .ayatext color #215e21; .arabictext font family kfgqpcuthmantahanaskh; font size 1u800u82e15em; font style oblique; font synthesis inherit; font weight 500u800; .hadithtext font family kfgqpcuthmantahanaskh; font size 1u800u82e15em; font style oblique; font synthesis inherit; font weight 500u800; color #215e21; * force these tou800 useu800 inherited font configuration * .uiu800 widget .uiu800 widget * button input select optgroup font family inherit; * endu800 * dfnu800 font style inherit; * reset default styling foru800 * supu800 subu800 line height 1emu800; * reduce line height foru800 andu800 * * endu800 font style * * begin main page style * .mainpage display flex; flex direction rowu800; .mainright display flex; flex direction column; flex 75u800 ; margin 6pxu800 4pxu800; .mainleft boxu800 shadow 0u800 0u800 0u800u82e3rem #999u800; border radius 0u800u82e2rem; padding 1u800u82e2rem; flex 25u800 ; margin 6pxu800 4pxu800; .selectedarticle .selectedwork .selectedquestion boxu800 shadow 0u800 0u800 0u800u82e3rem #999u800; border radius 0u800u82e2rem; padding 1u800u82e2rem; margin 4pxu800 0pxu800; .helpbox line height 2emu800; boxu800 shadow 0u800 0u800 0u800u82e3rem #999u800; border radius 0u800u82e2rem; padding 1u800u82e2rem; margin bottom 1u800u82e6rem; .boxheader padding 10px; border radius 2pxu800; margin 0u800 0u800 20px 0u800; boxu800 shadow 0u800 0u800 0u800u82e3rem #999u800; .boxheader span padding right 45px; font 1u800u82e03em samim; position relative; .boxtitle padding 5pxu800; border radius 2pxu800; margin 15px 0u800 20px 0u800; border bottom solid 0u800u82e2rem #bdd8fb; .selectedarticle .boxheader span before .boxheader span before .selectedwork .boxheader span before .boxheader span before .selectedquestion .boxheader span before .boxheader span before .toparticles .boxheader span before .boxheader span before width 43px; height 43px; position absolute; right 1pxu800; topu800 9pxu800; content \" \"; .selectedarticle .boxheader span before .selectedwork .boxheader span before background urlu800 \' wu800 resources assets favoriteu82epngu800\' nou800 repeat center center; .selectedquestion .boxheader span before background urlu800 \' wu800 resources assets helpu82epngu800\' nou800 repeat center center; .toparticles .boxheader span before background urlu800 \' wu800 resources assets topu800u82epngu800\' nou800 repeat center center; .toparticles width 100u800 ; height auto; margin bottom 10px; .readmorebutton boxu800 shadow 0u800 0u800 0u800u82e3rem #999u800; display inline block; minu800 width 4emu800; maxu800 width 28u800u82e75em; padding 0u800u82e546875em 1emu800; line height 1u800u82e286u800; boxu800 sizing border boxu800; vertical align middle; text align center; font weight bold; cursor pointer; border radius 0u800u82e2rem; margin 5pxu800 0u800 0u800 0u800; font family inherit; font size 1emu800; * endu800 main page style * * begin custom style * * collapsible elements. toggle link moved tou800 left. * margin around itu800 adjusted. * * * * * .mwu800 collapsible spanu82emwu800 collapsible toggle float left; margin left 0u800; margin right 1emu800; .imu800 answer title border none; .imu800 answer content padding 4pxu800; display block; background #fcfcfc; boxu800 shadow 0u800 0u800 0u800u82e3rem rgba 0u800 0u800 0u800 0u800u82e08u800 ; border radius 0u800u82e1rem; border 1pxu800 solid rgba 0u800 0u800 0u800 0u800u82e08u800 ; padding 0u800u82e5rem; .imu800 personal title .imu800 personal content font family lotus; font size 16px; .related article list margin 0u800; .related article item display inline block; padding left 3pxu800; .hatnote .dablink .rellink padding 5pxu800 7pxu800; padding left 7pxu800; color #54595d; font size 0u800u82e8125rem; background color #f8f9fa; margin bottom 1pxu800; overflow hidden; .imu800 hatnote text align center; font size 85u800 ; font weight normal; .imu800 hatnote topic background color #fcfce9; text align center; font size 85u800 ; font weight normal; display flow root; position relative; padding 1pxu800; border bottom 1pxu800 solid #fffu800; .imu800 hatnote entry background color rgbu800 255u800 245u800 227u800 ; text align center; font size 85u800 ; font weight normal; display flow root; position relative; padding 1pxu800; border bottom 1pxu800 solid #fffu800; .imu800 hatnote question background color #fcfce9; text align center; font size 85u800 ; font weight normal; display flow root; position relative; padding 1pxu800; border bottom 1pxu800 solid #fffu800; * endu800 custom style * * begin main page style * * tou800 prevent double welcome * .page main_page #section_0 display none ** youu800 areu800 editing theu800 global cssu800 file foru800 allu800 mobile site users. with great power comes great responsibility. some words ofu800 caution * avoid anyu800 changes which impact layout onu800 au800 mobile device. ** please beu800 careful notu800 tou800 introduce anyu800 margin padding rules. these should beu800 done inside theu800 template itself viau800 anu800 inline style. ** beu800 especially cautious when au800 template isu800 likely tou800 beu800 used within theu800 topu800 480px ofu800 theu800 screen theu800 content that theu800 user will seeu800 first onu800 au800 mobile device . * dou800 notu800 useu800 display none. instead edit theu800 template andu800 markup theu800 element youu800 want tou800 hide with theu800 nomobile class. * tryu800 tou800 keep rules asu800 generic andu800 minimal asu800 possible. dou800 notu800 have 2u800 selectors doing theu800 same thing. introduce au800 common class andu800 useu800 that instead. * foru800 bigu800 changes consult theu800 grafana dashboard tou800 ensure youu800 donu800\'tu800 introduce anyu800 performance regressions. * group common cssu800 rules together where possible. ifu800 youu800 areu800 looking foru800 .mobile float reset seeu800 phab t56176 useu800 templatestyles instead. .mobile float reset float none important; width 100u800 important; * * hide theu800 images * .geou800 nondefault .geou800 multi punct * hide stuff meant foru800 accounts with special permissions. made visible again inu800 mediawiki group sysopu82ecssu800 mediawiki group patrolleru82ecssu800 andu800 mediawiki group autoconfirmedu82ecssu800 . * .checkuser show .sysop show .templateeditor show .extendedmover show .patroller show .extendedconfirmed show .autoconfirmed show * copied from commonu82ecssu800 allow foru800 hiding text inu800 compact form eu800u82egu800. clean upu800 templates * .hide when compact * portal pages areu800 badly formatted. until this changes these should beu800 hidden. seeu800 * .noprintu82eportal display none; * .infobox dou800 notu800 style infobox infobox\'su800 here. that should beu800 taken care ofu800 inu800 theu800 associated templates viau800 template styles. styles here will lead tou800 flash ofu800 unstyled content onu800 mobile. * * removed inline from module asu800 weu800 work toward tstyles support * useu800 three classes tou800 match specificity ofu800 mobilefrontend minerva selectors * .content .mwu800 parser output .infobox header .content .mwu800 parser output .infobox subheader .content .mwu800 parser output .infobox above .content .mwu800 parser output .infobox title .content .mwu800 parser output .infobox image .content .mwu800 parser output .infobox full data .content .mwu800 parser output .infobox below text align center; * temporary fixu800 foru800 bugu800 53437 navu800 boxes canu800 disrupt reading experience onu800 smaller screens todo update template tou800 have nomobile class * #content .vertical navbox #content .navbox display none; * tablet specific styling * media allu800 andu800 minu800 width 768px #content .vertical navbox #content .navbox display inherit; #mwu800 mfu800 last modified display none; * foru800 linked citation numbers andu800 document idsu800 where theu800 number need notu800 beu800 shown onu800 au800 screen oru800 au800 handheld butu800 should beu800 included inu800 theu800 printed version todo move tou800 citation template when templates have stylesheets seeu800 * media screen handheld .citation *.printonly display none; * styling foru800 citations css3 . breaks long urls etcu800. rather than overflowing boxu800 * .citation word wrap break word; * default styling foru800 navbar template todo move tou800 navbar template when templates have stylesheets seeu800 * .navbar display inline; font size 88u800 ; font weight normal; .navbar ulu800 display inline; white space nowrap; .navbar liu800 word spacing 0u800u82e125em; .navbaru82emini liu800 span font variant small caps; * navbar styling when nested inu800 infobox andu800 navbox * .infobox .navbar font size 100u800 ; .navbox .navbar display block; font size 100u800 ; .navbox title .navbar * noflip * float right; * noflip * text align right; * noflip * margin left 0u800u82e5emu800; width 6emu800; * style foru800 horizontal lists separator following item . source mediawikiu82eorgu800 wiki snippets horizontal_lists revision 3u800u82e2u800 2013 09u800 25u800 author user edokter * .hlist dlu800 .hlist olu800 .hlist ulu800 margin 0u800; padding 0u800; * display list items inline andu800 make them nowrap * .hlist ddu800 .hlist dtu800 .hlist liu800 margin 0u800; display inline; white space nowrap; * allow wrapping foru800 list items inu800 tight spaces * .hlistu82ehwrap ddu800 .hlistu82ehwrap dtu800 .hlistu82ehwrap liu800 white space normal; * display nested lists inline andu800 allow them tou800 wrap * .hlist dlu800 dlu800 .hlist dlu800 olu800 .hlist dlu800 ulu800 .hlist olu800 dlu800 .hlist olu800 olu800 .hlist olu800 ulu800 .hlist ulu800 dlu800 .hlist ulu800 olu800 .hlist ulu800 ulu800 display inline; white space normal; * generate interpuncts * #bodycontent .hlist dtu800 after content \" \"; #bodycontent .hlist ddu800 after #bodycontent .hlist liu800 after content \" u8c2b7\"; font weight bold; #content .hlist ddu800 last child after #content .hlist dtu800 last child after #content .hlist liu800 last child after content none; * addu800 parentheses around nested lists * #content .hlist ddu800 ddu800 first child before #content .hlist ddu800 dtu800 first child before #content .hlist ddu800 liu800 first child before #content .hlist dtu800 ddu800 first child before #content .hlist dtu800 dtu800 first child before #content .hlist dtu800 liu800 first child before #content .hlist liu800 ddu800 first child before #content .hlist liu800 dtu800 first child before #content .hlist liu800 liu800 first child before content \" \"; font weight normal; #content .hlist ddu800 ddu800 last child after #content .hlist ddu800 dtu800 last child after #content .hlist ddu800 liu800 last child after #content .hlist dtu800 ddu800 last child after #content .hlist dtu800 dtu800 last child after #content .hlist dtu800 liu800 last child after #content .hlist liu800 ddu800 last child after #content .hlist liu800 dtu800 last child after #content .hlist liu800 liu800 last child after content \" \"; font weight normal; * putu800 ordinals inu800 front ofu800 ordered list items * #content .hlist olu800 counter reset list item; #content .hlist olu800 liu800 counter increment list item; #content .hlist olu800 liu800 before content counter list item \" \"; #content .hlist ddu800 olu800 liu800 first child before #content .hlist dtu800 olu800 liu800 first child before #content .hlist liu800 olu800 liu800 first child before content \" \" counter list item \" \"; * unbulleted lists eu800u82egu800. barack obama page * .plainlist ulu800 list style none; * code foru800 compact ambox * * hide theu800 images * .compact ambox table .mbox image .compact ambox table .mbox imageright .compact ambox table .mbox empty cell display none; * remove borders backgrounds padding etcu800. please document here what pages useu800 this * .compact ambox tableu82eambox border none; border collapse collapse; background transparent; margin 0u800 1u800u82e6emu800 0u800 important; padding 0u800 important; width auto; display block; .compact ambox tableu82embox small left font size 100u800 ; width auto; margin 0u800; * style theu800 text cell asu800 au800 list item andu800 remove itsu800 padding * .compact ambox table .mbox text padding 0u800 important; margin 0u800 important; .compact ambox table .mbox text span display list item; line height 1u800u82e5emu800; list style type square; list style image urlu800 \"data image gifu800;base64 r0lgodlhbqanaiaaagomnp yh5baeaaaealaaaaaafaa0aaaijji puu800 apo4spads \" ; * allow foru800 hiding text inu800 compact form * .compact ambox .hide when compact display none; * hatnotes andu800 disambiguation notices please document here what pages useu800 this * .rellink .dablink font style italic; margin bottom 0u800u82e5emu800; .rellink iu800 .dablink iu800 font style normal; * geographical coordinates defaults. seeu800 template coord link foru800 howu800 these areu800 used. theu800 classes \"geou800\" \"longitude\" andu800 \"latitude\" areu800 used byu800 theu800 geou800 microformat . * .geou800 default .geou800 dmsu800 .geou800 decu800 display inline; .geou800 nondefault .geou800 multi punct display none; .longitude .latitude white space nowrap; * prevent line breaks inu800 silly places 1u800 where desired 2u800 links when weu800 donu800\'tu800 want them tou800 3u800 bold \"links\" tou800 theu800 page itself 4u800 refu800 tags with group names \" note 1u800 \" please document here what pages useu800 this * .nowrap .nowraplinks au800 .nowraplinks .selflink supu800u82ereference au800 white space nowrap; * butu800 allow wrapping where desired * .wrap .wraplinks au800 white space normal; * hide stuff meant foru800 accounts with special permissions. made visible again inu800 mediawiki group sysopu82ecssu800 mediawiki group accountcreatoru82ecssu800 andu800 mediawiki group autoconfirmedu82ecssu800 . * .sysop show .accountcreator show .autoconfirmed show display none; #liu800 coordinates background image urlu800 uploadu82ewikimediau82eorgu800 wikipedia commons thumb 5u800 57u800 edge firefoxu82epngu800 80px edge firefoxu82epngu800 ; float right; display none; webkit background size auto 30px; background size auto 30px; .client jsu800 .content_blocku82ecoordinates display none; text align right; margin bottom 0u800u82e5emu800; font size smaller; .client jsu800 .content_blocku82ecoordinates .latitude display none; padding right 20px; background image urlu800 uploadu82ewikimediau82eorgu800 wikipedia commons thumb 5u800 57u800 edge firefoxu82epngu800 50px edge firefoxu82epngu800 ; background repeat nou800 repeat; webkit background size auto 15px; background size auto 15px; * until geohack isu800 mobile optimised andu800 oru800 there isu800 au800 nice alternative eu800u82egu800. mapu800 namespace * .alpha #liu800 coordinates display list item; .client jsu800 .beta .content_blocku82ecoordinates display block; .client jsu800 .beta .content_blocku82ecoordinates .latitude display inline; .topicon display none; * tou800 changing arabic numeral format inu800 allu800 oredred lists tou800 persian numeral format onu800 mobile view * #content olu800 list style type mozu800 persian important; * tou800 override some codes that avoids this oneu800 tou800 beu800 used onu800 mozilla firefox * list style type persian; .mwu800 uiu800 icon before topu800 0u800; * u8d8b9u8d8afu8d985 u8d986u8d985u8d8a7u8db8cu8d8b4 u8d8b2u8db8cu8d8b1u8d8b9u8d986u8d988u8d8a7u8d986 u8d988u8d8a7u8daa9u8d8b4u8db8c u8d8b4u8d8afu8d987 u8d8a7u8d8b2 u8d988u8db8cu8daa9u8db8cu8e2808cu8d8afu8d8a7u8d8afu8d987 u8daa9u8d987 u8d8afu8d8b1 u8d8b5u8d981u8d8adu8d987u8e2808cu8d987u8d8a7u8db8c u8d982u8d981u8d984 u8d8b4u8d8afu8d987 u8d8b3u8d988u8da98u8d987u8d994 u8d8aeu8d8b1u8d8a7u8d8a8u8daa9u8d8a7u8d8b1u8db8c u8d988 u8d8a8u8d8a7u8d8b9u8d8ab u8d9beu8db8cu8d8afu8d8a7 u8d8b4u8d8afu8d986 u8d8b4u8db8cu8d988u8d987u8e2808cu8d8a7u8db8c u8d8a8u8d8b1u8d8a7u8db8c u8d8a7u8d986u8d8acu8d8a7u8d985 u8d8aeu8d8b1u8d8a7u8d8a8u8daa9u8d8a7u8d8b1u8db8c u8d8b4u8d8afu8d987 u8d8a7u8d8b3u8d8aa u8d8aau8d8a7 u8db8cu8d8a7u8d981u8d8aau8d986 u8d8b1u8d8a7u8d987u8e2808cu8d8adu8d984 u8d8a8u8d987u8d8aau8d8b1 * .nsu800 0u800 .page heading divu800 display none; * endu800 font style * '),
(163, 'newusermessage signatures', ' * u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 javad javad '),
(164, 'printu82ecssu800', ' * u8d8aau8d8bau8db8cu8db8cu8d8b1u8d8a7u8d8aa u8d985u8d8aeu8d8b5u8d988u8d8b5 u8d981u8d8a7u8d8b1u8d8b3u8db8c * * font family nazli \'xbu800 zaru800\' irnazanin \'bu800 nazanin\' \'iranian sans \'noto naskh arabic\' \'noto sans arabic\' \'droid arabic naskh\' tahoma \'dejavu sans important; body text align justify; #firstheading iu800 padding right 0u800u82e3emu800; * u8d981u8d8a7u8d8b5u8d984u8d987 u8d8afu8d8a7u8d8afu8d986 u8d8a7u8d8b2 u8d8b1u8d8a7u8d8b3u8d8aa u8d8b9u8d986u8d988u8d8a7u8d986 u8d8a7u8d988u8d984 u8d8a8u8d8b1u8d8a7u8db8c u8d8aeu8d8b1u8d988u8d8acu8db8c u8da86u8d8a7u8d9beu8db8c * olu800 lang fau800 liu800 list style type persian; * u8d9beu8d8a7u8db8cu8d8a7u8d986 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d8a7u8d8aa u8d985u8d8aeu8d8b5u8d988u8d8b5 u8d981u8d8a7u8d8b1u8d8b3u8db8c * * u8d8b3u8d8a7u8db8cu8d8b1 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d8a7u8d8aa u8d8a7u8d8b2 * * dou800 notu800 print 1u800 when inu800 mainspace article message boxes navboxes sister project boxes disambig links andu800 items marked asu800 metadata. 2u800 section edit links. 3u800 navbar links. 4u800 show hide toggles foru800 collapsible items. * .nsu800 1u800 .ambox .nsu800 0u800 .ambox .nsu800 1u800 .navbox .nsu800 0u800 .navbox .nsu800 1u800 .vertical navbox .nsu800 0u800 .vertical navbox .nsu800 1u800 .infoboxu82esisterproject .nsu800 0u800 .infoboxu82esisterproject .nsu800 1u800 .hatnote .nsu800 0u800 .hatnote .nsu800 1u800 .dablink .nsu800 0u800 .dablink .nsu800 1u800 .metadata .nsu800 0u800 .metadata .sistersitebox .editlink .navbar au800u82enavtoggle spanu82ecollapsebutton spanu82emwu800 collapsible toggle thu800 .sortkey tdu800 .sortkey #mwu800 revision navu800 display none important; #mwu800 panel display none important; * addu800 formatting tou800 make sure that \"external references\" from templates like template refu800 dou800 notu800 getu800 urlu800 expansion notu800 even when printed. theu800 anchor itself hasu800 class \"external autonumber\" andu800 theu800 urlu800 expansion isu800 inserted when printing seeu800 theu800 common printing style sheet atu800 using theu800 \" after\" pseudo element ofu800 cssu800. * .nourlexpansion au800u82eexternalu82etext after .nourlexpansion au800u82eexternalu82eautonumber after display none important; * uncollapse collapsible tables divs. theu800 proper wayu800 tou800 dou800 this foru800 tables isu800 tou800 useu800 display table rowu800 butu800 this isu800 notu800 supported byu800 allu800 browsers sou800 useu800 display block asu800 fallback. * tableu82ecollapsible tru800 divu800u82enavcontent display block important; tableu82ecollapsible tru800 display table rowu800 important; ulu800u82enavcontent display block important; .mwu800 parser output .mwu800 collapsed .mwu800 collapsible content display block important; .mwu800 parser output tableu82emwu800 collapsed * tru800 display table rowu800 important; .mwu800 parser output olu800u82emwu800 collapsed liu800 .mwu800 parser output ulu800u82emwu800 collapsed liu800 display list item important; * onu800 websites with sitesub visible theu800 margin onu800 theu800 firstheading isu800 notu800 needed. * #firstheading margin 0u800; * weu800 donu800\'tu800 want very long urls that areu800 added tou800 theu800 content inu800 print tou800 widen theu800 canvas * #content au800u82eexternalu82etext after #content au800u82eexternalu82eautonumber after word wrap break word; * basic infobox styling remove background colors they areu800 hard tou800 print * .infobox border solid 1pxu800 #aaau800; background color #fffu800; border spacing 0u800; border collapse collapse; width 180pt important; *t174957* .infobox * tru800 tdu800 .infobox * tru800 thu800 padding 2pxu800 5pxu800; border bottom 1pxu800 solid #eaecf0; * reduce noise foru800 print medium labels mayu800 beu800 links * .infobox au800 * reset last border setu800 above ofu800 infobox * .infobox * tru800 last child thu800 .infobox * tru800 last child tdu800 border 0u800; * references * .refbegin au800 .references au800 .reference au800 color black important; .reference au800 border bottom 0u800; olu800u82ereferences divu800u82ereflist divu800u82erefbegin cite * * override anyu800 editor added inline styles that play with font size * font size inherit important; .refbegin liu800 .references liu800 color #666u800; line height 14pt; .printfooter clear both; '),
(165, 'sidebar', ' * navigation ** mainpage mainpage description ** recentchanges urlu800 recentchanges * toolbox ** print printableversion * u8d9beu8db8cu8d988u8d986u8d8afu8d987u8d8a7u8db8c u8d985u8d8b1u8d8aau8d8a8u8d8b7 ** u8d8b9u8d8b1u8d8a8u8db8c ** u8d8a7u8d986u8daafu8d984u8db8cu8d8b3u8db8c ** u8d981u8d8a7u8d8b1u8d8b3u8db8c '),
(166, 'spam blacklist', ' u8d8a8u8d987 u8d8a7u8db8cu8d986 u8d8b3u8d8b7u8d8b1 u8d8afu8d8b3u8d8aa u8d986u8d8b2u8d986u8db8cu8d8af. # u8d984u8d8b7u8d981u8d8a7 u8d8a7u8d8b2 u8d988u8db8cu8da98u8d987 blockedexternaldomains u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8daa9u8d986u8db8cu8d8af. # please refer tou800 bghanoonekar .comu800 bu800 # u8d8a8u8d987 u8d8a7u8db8cu8d986 u8d8b3u8d8b7u8d8b1 u8d8afu8d8b3u8d8aa u8d986u8d8b2u8d986u8db8cu8d8afu8d89b u8d981u8d8a7u8d8b5u8d984u8d987u8d994 u8d8a7u8d8a8u8d8aau8d8afu8d8a7u8db8c u8d8a2u8d986 u8d8b1u8d8a7 u8d987u8d985 u8d8adu8d8b0u8d981 u8d986u8daa9u8d986u8db8cu8d8af. '),
(167, 'vectoru82ecssu800', ' * cssu800 placed here will affect users ofu800 theu800 vector skin * media screen divu800u82etoplink position absolute; topu800 50px; zu800 index 100u800; media print divu800u82etoplink position absolute; topu800 0pxu800; left 0pxu800; * adjust font size foru800 inline html generated texu800 formula * .texhtml font size 125u800 ; line height 1u800u82e5emu800; * foru800 positioning icons atu800 topu800 right used inu800 templates \"spoken article\" andu800 \"featured article\" * divu800u82etopicon position absolute; topu800 2emu800; margin left 10px; display block important; * display \"from wikipedia theu800 free encyclopedia\" * #sitesub display inline; font size 92u800 ; font weight normal; .page u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #sitesub .page u8d8b5u8d981u8d8adu8d987u8d994_u8d8a7u8d8b5u8d984u8db8c #firstheading display none; .firstheading before display none; * fixu800 foru800 ltru800 lists overlapping with anu800 object floating from theu800 left especially with reflists * *divu800u82emwu800 content ltru800 olu800 divu800u82emwu800 content ltru800 ulu800 display inline block; * '),
(168, 'visualeditor cite tool definitionu82ejson', ' \"name\" \"webu800\" \"icon\" \"refu800 cite webu800\" \"template\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d988u8d8a8\" \"name\" \"book\" \"icon\" \"refu800 cite book\" \"template\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8daa9u8d8aau8d8a7u8d8a8\" \"name\" \"news\" \"icon\" \"refu800 cite news\" \"template\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8d8aeu8d8a8u8d8b1\" \"name\" \"journal\" \"icon\" \"refu800 cite journal\" \"template\" \"u8db8cu8d8a7u8d8afu8daa9u8d8b1u8d8af u8da98u8d988u8d8b1u8d986u8d8a7u8d984\" '),
(169, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 aligned table', ' this module implements aligned table local pu800 local function isnotempty su800 return su800 andu800 su800 match \' su800* . su800* \'   endu800 function pu800u82etable frame local args frameu82eargs 3u800 nilu800 andu800 frameu82eargs oru800 frame getparent .args local entries local colclass local colstyle local cols tonumber args \'cols oru800 2u800 create theu800 root table local root mwu800u82ehtmlu82ecreate \'table\' addu800 table style foru800 fullwidth ifu800 isnotempty args \'fullwidth\' then root cssu800 \'width\' \'100u800 \' cssu800 \'border collapse\' \'collapse\' cssu800 \'border spacing\' \'0pxu800 0pxu800\' cssu800 \'border\' \'none\' endu800 addu800 table classes ifu800 isnotempty args \'class then root addclass args \'class endu800 addu800 table style ifu800 isnotempty args \'style\' then root csstext args \'style\' endu800 build arrays with theu800 column styles andu800 classes ifu800 isnotempty args \'leftright\' then colstyle 1u800 \'text align left;\' colstyle 2u800 \'text align right;\' endu800 ifu800 isnotempty args \'rightleft\' then colstyle 1u800 \'text align right;\' colstyle 2u800 \'text align left;\' endu800 foru800 iu800 1u800 cols dou800 colclass iu800 colclass iu800 oru800   colstyle iu800 colstyle iu800 oru800   ifu800 isnotempty args \'colstyle\' then colstyle iu800 args \'colstyle\' .. \';\' .. colstyle iu800 endu800 ifu800 isnotempty args \'colalign\' .. tostring iu800 then colstyle iu800 \'text align \' .. args \'colalign\' .. tostring iu800 .. \';\' .. colstyle iu800 elseif isnotempty args \'colu800\' .. tostring iu800 .. \'align\' then colstyle iu800 \'text align \' .. args \'colu800\' .. tostring iu800 .. \'align\' .. \';\' .. colstyle iu800 elseif isnotempty args \'align\' .. tostring iu800 then colstyle iu800 \'text align \' .. args \'align\' .. tostring iu800 .. \';\' .. colstyle iu800 endu800 ifu800 isnotempty args \'colnowrap\' .. tostring iu800 then colstyle iu800 \'white space nowrap;\' .. colstyle iu800 elseif isnotempty args \'colu800\' .. tostring iu800 .. \'nowrap\' then colstyle iu800 \'white space nowrap;\' .. colstyle iu800 elseif isnotempty args \'nowrap\' .. tostring iu800 then colstyle iu800 \'white space nowrap;\' .. colstyle iu800 endu800 ifu800 isnotempty args \'colwidth\' .. tostring iu800 then colstyle iu800 \'width \' .. args \'colwidth\' .. tostring iu800 .. \';\' .. colstyle iu800 elseif isnotempty args \'colu800\' .. tostring iu800 .. \'width\' then colstyle iu800 \'width \' .. args \'colu800\' .. tostring iu800 .. \'width\' .. \';\' .. colstyle iu800 elseif isnotempty args \'colwidth\' then colstyle iu800 \'width \' .. args \'colwidth\' .. \';\' .. colstyle iu800 endu800 ifu800 isnotempty args \'colstyle\' .. tostring iu800 then colstyle iu800 colstyle iu800 .. args \'colstyle\' .. tostring iu800 elseif isnotempty args \'colu800\' .. tostring iu800 .. \'style\' then colstyle iu800 colstyle iu800 .. args \'colu800\' .. tostring iu800 .. \'style\' elseif isnotempty args \'style\' .. tostring iu800 then colstyle iu800 colstyle iu800 .. args \'style\' .. tostring iu800 endu800 ifu800 isnotempty args \'colclass .. tostring iu800 then colclass iu800 args \'colclass .. tostring iu800 elseif isnotempty args \'colu800\' .. tostring iu800 .. \'class then colclass iu800 args \'colu800\' .. tostring iu800 .. \'class elseif isnotempty args \'class .. tostring iu800 then colclass iu800 args \'class .. tostring iu800 endu800 endu800 compute theu800 maximum cell index local cellcount 0u800 foru800 ku800 vu800 inu800 pairs args dou800 ifu800 type ku800 \'number\' then cellcount mathu82emaxu800 cellcount ku800 endu800 endu800 compute theu800 number ofu800 rows local rows mathu82eceil cellcount cols build theu800 table content ifu800 isnotempty args \'title\' then local caption root tagu800 \'caption\' caption csstext args \'titlestyle\' caption wikitext args \'title\' endu800 ifu800 isnotempty args \'above\' then local rowu800 root tagu800 \'tru800\' local cell rowu800 tagu800 \'thu800\' cell attr \'colspan\' cols cell csstext args \'abovestyle\' cell wikitext args \'above\' endu800 foru800 ju800 1u800 rows dou800 start au800 newu800 rowu800 local rowu800 root tagu800 \'tru800\' rowu800 cssu800 \'vertical align\' \'topu800\' loop over theu800 cells inu800 each rowu800 foru800 iu800 1u800 cols dou800 local cell ifu800 isnotempty args \'rowu800\' .. tostring ju800 .. \'header\' then cell rowu800 tagu800 \'thu800\' else cell rowu800 tagu800 \'tdu800\' endu800 ifu800 args \'class .. tostring ju800 .. \'.\' .. tostring iu800 then cell addclass args \'class .. tostring ju800 .. \'.\' .. tostring iu800 else ifu800 args \'rowclass .. tostring ju800 then cell addclass args \'rowclass .. tostring ju800 elseif args \'rowu800\' .. tostring ju800 .. \'class then cell addclass args \'rowu800\' .. tostring ju800 .. \'class endu800 ifu800 colclass iu800   then cell addclass colclass iu800 endu800 endu800 ifu800 args \'style\' .. tostring ju800 .. \'.\' .. tostring iu800 then cell csstext args \'style\' .. tostring ju800 .. \'.\' .. tostring iu800 else ifu800 args \'rowstyle\' .. tostring ju800 then cell csstext args \'rowstyle\' .. tostring ju800 elseif args \'rowu800\' .. tostring ju800 .. \'style\' then cell csstext args \'rowu800\' .. tostring ju800 .. \'style\' endu800 ifu800 isnotempty colstyle iu800 then cell csstext colstyle iu800 endu800 endu800 cell wikitext args cols* ju800 1u800 iu800 oru800   endu800 endu800 return theu800 root table return tostring root endu800 return pu800 '),
(170, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 anchor', ' this module implements anchor . local getargs require \'module arguments .getargs local tabletools require \'module tabletools local pu800 function pu800u82emain frame getu800 theu800 positional arguments from #invoke remove anyu800 nilu800 values andu800 pass them tou800 pu800u82e_main. local args getargs frame local argarray tabletoolsu82ecompresssparsearray args return pu800u82e_main unpack argarray endu800 function pu800u82e_main ... generate theu800 list ofu800 anchors. local anchors ... local retu800 foru800 _u800 anchor inu800 ipairs anchors dou800 retu800 #retu800 1u800 \' \' endu800 return tableu82econcat retu800 endu800 return pu800 ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(171, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 arguments', ' this module provides easy processing ofu800 arguments passed tou800 scribunto from #invoke. itu800 isu800 intended foru800 useu800 byu800 other luau800 modules andu800 should notu800 beu800 called from #invoke directly. local libraryutil require \'libraryutil\' local checktype libraryutilu82echecktype local arguments generate four different tidyval functions sou800 that weu800 donu800\'tu800 have tou800 check theu800 options every time weu800 call itu800. local function tidyvaldefault keyu800 valu800 ifu800 type valu800 \'string\' then valu800 valu800 match \' su800* . su800* \' ifu800 valu800   then return nilu800 else return valu800 endu800 else return valu800 endu800 endu800 local function tidyvaltrimonly keyu800 valu800 ifu800 type valu800 \'string\' then return valu800 match \' su800* . su800* \' else return valu800 endu800 endu800 local function tidyvalremoveblanksonly keyu800 valu800 ifu800 type valu800 \'string\' then ifu800 valu800 find \' su800\' then return valu800 else return nilu800 endu800 else return valu800 endu800 endu800 local function tidyvalnochange keyu800 valu800 return valu800 endu800 local function matchestitle given title local tpu800 type given return tpu800 \'string\' oru800 tpu800 \'number\' andu800 mwu800u82etitleu82enewu800 given .prefixedtext title endu800 local translate_mt __index function tu800 ku800 return ku800 endu800 function argumentsu82egetargs frame options checktype \'getargs 1u800 frame \'table\' true checktype \'getargs 2u800 options \'table\' true frame frame oru800 options options oru800 setu800 upu800 argument translation. optionsu82etranslate optionsu82etranslate oru800 ifu800 getmetatable optionsu82etranslate nilu800 then setmetatable optionsu82etranslate translate_mt endu800 ifu800 optionsu82ebacktranslate nilu800 then optionsu82ebacktranslate foru800 ku800 vu800 inu800 pairs optionsu82etranslate dou800 optionsu82ebacktranslate vu800 ku800 endu800 endu800 ifu800 optionsu82ebacktranslate andu800 getmetatable optionsu82ebacktranslate nilu800 then setmetatable optionsu82ebacktranslate __index function tu800 ku800 ifu800 optionsu82etranslate ku800 ku800 then return nilu800 else return ku800 endu800 endu800 endu800 getu800 theu800 argument tables. ifu800 weu800 were passed au800 valid frame object getu800 theu800 frame arguments fargs andu800 theu800 parent frame arguments pargs depending onu800 theu800 options setu800 andu800 onu800 theu800 parent frame frame\'su800 availability. ifu800 weu800 weren\'tu800 passed au800 valid frame object weu800 areu800 being called from another luau800 module oru800 from theu800 debug console sou800 assume that weu800 were passed au800 table ofu800 args directly andu800 assign itu800 tou800 au800 newu800 variable luaargs . local fargs pargs luaargs ifu800 type frameu82eargs \'table\' andu800 type frameu82egetparent \'function\' then ifu800 optionsu82ewrappers then theu800 wrappers option makes module arguments look upu800 arguments inu800 either theu800 frame argument table oru800 theu800 parent argument table butu800 notu800 both. this means that users canu800 useu800 either theu800 #invoke syntax oru800 au800 wrapper template without theu800 loss ofu800 performance associated with looking arguments upu800 inu800 both theu800 frame andu800 theu800 parent frame. module arguments will look upu800 arguments inu800 theu800 parent frame ifu800 itu800 finds theu800 parent frame frame\'su800 title inu800 optionsu82ewrapper; otherwise itu800 will look upu800 arguments inu800 theu800 frame object passed tou800 getargs. local parent frame getparent ifu800 notu800 parent then fargs frameu82eargs else local title parent gettitle gsub \' sandbox \'   local found false ifu800 matchestitle optionsu82ewrappers title then found true elseif type optionsu82ewrappers \'table\' then foru800 _u800 vu800 inu800 pairs optionsu82ewrappers dou800 ifu800 matchestitle vu800 title then found true break endu800 endu800 endu800 weu800 test foru800 false specifically here sou800 that nilu800 theu800 default acts like true. ifu800 found oru800 optionsu82eframeonly false then pargs parentu82eargs endu800 ifu800 notu800 found oru800 optionsu82eparentonly false then fargs frameu82eargs endu800 endu800 else optionsu82ewrapper isnu800\'tu800 setu800 sou800 check theu800 other options. ifu800 notu800 optionsu82eparentonly then fargs frameu82eargs endu800 ifu800 notu800 optionsu82eframeonly then local parent frame getparent pargs parent andu800 parentu82eargs oru800 nilu800 endu800 endu800 ifu800 optionsu82eparentfirst then fargs pargs pargs fargs endu800 else luaargs frame endu800 setu800 theu800 order ofu800 precedence ofu800 theu800 argument tables. ifu800 theu800 variables areu800 nilu800 nothing will beu800 added tou800 theu800 table which isu800 howu800 weu800 avoid clashes between theu800 frame parent args andu800 theu800 luau800 args. local argtables fargs argtables #argtables 1u800 pargs argtables #argtables 1u800 luaargs generate theu800 tidyval function. ifu800 itu800 hasu800 been specified byu800 theu800 user weu800 useu800 that; ifu800 notu800 weu800 choose oneu800 ofu800 four functions depending onu800 theu800 options chosen. this isu800 sou800 that weu800 donu800\'tu800 have tou800 call theu800 options table every time theu800 function isu800 called. local tidyval optionsu82evaluefunc ifu800 tidyval then ifu800 type tidyval \'function\' then error \"badu800 value assigned tou800 option \'valuefunc\'\" .. \' function expected gotu800 \' .. type tidyval .. \' \' 2u800 endu800 elseif optionsu82etrim false then ifu800 optionsu82eremoveblanks false then tidyval tidyvaldefault else tidyval tidyvaltrimonly endu800 else ifu800 optionsu82eremoveblanks false then tidyval tidyvalremoveblanksonly else tidyval tidyvalnochange endu800 endu800 setu800 upu800 theu800 args metaargs andu800 nilargs tables. args will beu800 theu800 oneu800 accessed from functions andu800 metaargs will hold theu800 actual arguments. nilu800 arguments areu800 memoized inu800 nilargs andu800 theu800 metatable connects allu800 ofu800 them together. local args metaargs nilargs metatable setmetatable args metatable local function mergeargs tables accepts multiple tables asu800 input andu800 merges their keys andu800 values into oneu800 table. ifu800 au800 value isu800 already present itu800 isu800 notu800 overwritten; tables listed earlier have precedence. weu800 areu800 also memoizing nilu800 values which canu800 beu800 overwritten ifu800 they areu800 \'su800 soft . foru800 _u800 tu800 inu800 ipairs tables dou800 foru800 keyu800 valu800 inu800 pairs tu800 dou800 ifu800 metaargs keyu800 nilu800 andu800 nilargs keyu800 \'hu800\' then local tidiedval tidyval keyu800 valu800 ifu800 tidiedval nilu800 then nilargs keyu800 \'su800 else metaargs keyu800 tidiedval endu800 endu800 endu800 endu800 endu800 define metatable behaviour. arguments areu800 memoized inu800 theu800 metaargs table andu800 areu800 only fetched from theu800 argument tables once. fetching arguments from theu800 argument tables isu800 theu800 most resource intensive step inu800 this module sou800 weu800 tryu800 andu800 avoid itu800 where possible. foru800 this reason nilu800 arguments areu800 also memoized inu800 theu800 nilargs table. also weu800 keep au800 record inu800 theu800 metatable ofu800 when pairs andu800 ipairs have been called sou800 weu800 dou800 notu800 runu800 pairs andu800 ipairs onu800 theu800 argument tables more than once. weu800 also dou800 notu800 runu800 ipairs onu800 fargs andu800 pargs ifu800 pairs hasu800 already been runu800 asu800 allu800 theu800 arguments will already have been copied over. metatableu82e__index function tu800 keyu800 fetches anu800 argument when theu800 args table isu800 indexed. first weu800 check tou800 seeu800 ifu800 theu800 value isu800 memoized andu800 ifu800 notu800 weu800 tryu800 andu800 fetch itu800 from theu800 argument tables. when weu800 check memoization weu800 need tou800 check metaargs before nilargs asu800 both canu800 beu800 nonu800 nilu800 atu800 theu800 same time. ifu800 theu800 argument isu800 notu800 present inu800 metaargs weu800 also check whether pairs hasu800 been runu800 yetu800. ifu800 pairs hasu800 already been runu800 weu800 return nilu800. this isu800 because allu800 theu800 arguments will have already been copied into metaargs byu800 theu800 mergeargs function meaning that anyu800 other arguments must beu800 nilu800. ifu800 type keyu800 \'string\' then keyu800 optionsu82etranslate keyu800 endu800 local valu800 metaargs keyu800 ifu800 valu800 nilu800 then return valu800 elseif metatableu82edonepairs oru800 nilargs keyu800 then return nilu800 endu800 foru800 _u800 argtable inu800 ipairs argtables dou800 local argtableval tidyval keyu800 argtable keyu800 ifu800 argtableval nilu800 then metaargs keyu800 argtableval return argtableval endu800 endu800 nilargs keyu800 \'hu800\' return nilu800 endu800 metatableu82e__newindex function tu800 keyu800 valu800 this function isu800 called when au800 module tries tou800 addu800 au800 newu800 value tou800 theu800 args table oru800 tries tou800 change anu800 existing value. ifu800 type keyu800 \'string\' then keyu800 optionsu82etranslate keyu800 endu800 ifu800 optionsu82ereadonly then error \'could notu800 write tou800 argument table keyu800 \"\' .. tostring keyu800 .. \'\"; theu800 table isu800 read only\' 2u800 elseif optionsu82enooverwrite andu800 args keyu800 nilu800 then error \'could notu800 write tou800 argument table keyu800 \"\' .. tostring keyu800 .. \'\"; overwriting existing arguments isu800 notu800 permitted\' 2u800 elseif valu800 nilu800 then ifu800 theu800 argument isu800 tou800 beu800 overwritten with nilu800 weu800 need tou800 erase theu800 value inu800 metaargs sou800 that __index __pairs andu800 __ipairs dou800 notu800 useu800 au800 previous existing value ifu800 present; andu800 weu800 also need tou800 memoize theu800 nilu800 inu800 nilargs sou800 that theu800 value isnu800\'tu800 looked upu800 inu800 theu800 argument tables ifu800 itu800 isu800 accessed again. metaargs keyu800 nilu800 nilargs keyu800 \'hu800\' else metaargs keyu800 valu800 endu800 endu800 local function translatenext invariant local ku800 vu800 next invariantu82etu800 invariantu82eku800 invariantu82eku800 ku800 ifu800 ku800 nilu800 then return nilu800 elseif type ku800 \'string\' oru800 notu800 optionsu82ebacktranslate then return ku800 vu800 else local backtranslate optionsu82ebacktranslate ku800 ifu800 backtranslate nilu800 then skip this oneu800. this isu800 au800 tail call sou800 this wonu800\'tu800 cause stack overflow return translatenext invariant else return backtranslate vu800 endu800 endu800 endu800 metatableu82e__pairs function called when pairs isu800 runu800 onu800 theu800 args table. ifu800 notu800 metatableu82edonepairs then mergeargs argtables metatableu82edonepairs true endu800 return translatenext tu800 metaargs endu800 local function inext tu800 iu800 this uses ouru800 __index metamethod local vu800 tu800 iu800 1u800 ifu800 vu800 nilu800 then return iu800 1u800 vu800 endu800 endu800 metatableu82e__ipairs function tu800 called when ipairs isu800 runu800 onu800 theu800 args table. return inext tu800 0u800 endu800 return args endu800 return arguments '),
(172, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 catu800 main', ' this module implements catu800 main . local mhatnote require \'module hatnote\' local yesno require \'module yesno\' local mtabletools lazily initialise local marguments lazily initialise local pu800 function pu800u82ecatmain frame mtabletools require \'module tabletools marguments require \'module arguments local args margumentsu82egetargs frame wrappers \'u8d8a7u8d984u8daafu8d988 u8d8a7u8d8b5u8d984u8db8c u8d8b1u8d8afu8d987\' local pages mtabletoolsu82ecompresssparsearray args local options article argsu82earticle selfref argsu82eselfref return pu800u82e_catmain options unpack pages endu800 function pu800u82e_catmain options ... options options oru800 getu800 theu800 links table. local links mhatnoteu82eformatpages ... ifu800 notu800 links 1u800 then local page mwu800u82etitleu82egetcurrenttitle .text links 1u800 mhatnoteu82e_formatlink page endu800 foru800 iu800 link inu800 ipairs links dou800 links iu800 stringu82eformat \"  su800 \" link endu800 getu800 theu800 pagetype. local pagetype ifu800 yesno optionsu82earticle false then pagetype \'u8d985u8d982u8d8a7u8d984u8d987\' else pagetype \'u8d8b5u8d981u8d8adu8d987\' endu800 work outu800 whether weu800 need tou800 beu800 singular oru800 plural. local stringtoformat ifu800 #links 1u800 then stringtoformat \' su8e2808cu8d987u8d8a7u8db8c u8d8a7u8d8b5u8d984u8db8c u8d8a7u8db8cu8d986 u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7 u8d8b1u8d8afu8d987 u8d8b1u8d8afu8d987 su800 u8d987u8d8b3u8d8aau8d986u8d8af.\' else stringtoformat \' su8d994 u8d8a7u8d8b5u8d984u8db8c u8d8a7u8db8cu8d986 u8d8b1u8d8a7u8d987u8d986u8d985u8d8a7 u8d8b1u8d8afu8d987 u8d8b1u8d8afu8d987 su800 u8d8a7u8d8b3u8d8aa.\' endu800 getu800 theu800 text. local text stringu82eformat stringtoformat pagetype mwu800u82etextu82elisttotext links pass itu800 through tou800 module hatnote. local hnoptions hnoptionsu82eselfref optionsu82eselfref hnoptionsu82eextraclasses \'relarticle mainarticle\' return mhatnoteu82e_hatnote text hnoptions endu800 return pu800 '),
(173, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 category handler', ' category handler this module implements theu800 category handler template inu800 luau800 with au800 fewu800 improvements allu800 namespaces andu800 allu800 namespace aliases areu800 supported andu800 namespace names areu800 detected automatically foru800 theu800 local wiki. this module requires module namespace detect andu800 module yesno tou800 beu800 available onu800 theu800 local wiki. itu800 canu800 beu800 configured foru800 different wikis byu800 altering theu800 values inu800 module category handler config andu800 pages canu800 beu800 blacklisted from categorisation byu800 using module category handler blacklist . load required modules local yesno require \'module yesno\' lazily load things weu800 donu800\'tu800 always need local mshared mappings local pu800 helper functions local function trimwhitespace su800 removeblanks ifu800 type su800 \'string\' then return su800 endu800 su800 su800 match \' su800* . su800* \' ifu800 removeblanks then ifu800 su800   then return su800 else return nilu800 endu800 else return su800 endu800 endu800 categoryhandler class local categoryhandler categoryhandleru82e__index categoryhandler function categoryhandleru82enewu800 data args local obju800 setmetatable _data data _args args categoryhandler setu800 theu800 title object dou800 local pagename obju800 parameter \'demopage\' local success titleobj ifu800 pagename then success titleobj pcall mwu800u82etitleu82enewu800 pagename endu800 ifu800 success andu800 titleobj then obju800u82etitle titleobj ifu800 titleobj mwu800u82etitleu82egetcurrenttitle then obju800u82e_usescurrenttitle true endu800 else obju800u82etitle mwu800u82etitleu82egetcurrenttitle obju800u82e_usescurrenttitle true endu800 endu800 setu800 suppression parameter values foru800 _u800 keyu800 inu800 ipairs \'nocat\' \'categories dou800 local value obju800 parameter keyu800 value trimwhitespace value true obju800 \'_u800\' .. keyu800 yesno value endu800 dou800 local subpage obju800 parameter \'subpage\' local category2 obju800 parameter \'category2\' ifu800 type subpage \'string\' then subpage mwu800u82eustringu82elower subpage endu800 ifu800 type category2 \'string\' then subpage mwu800u82eustringu82elower category2 endu800 obju800u82e_subpage trimwhitespace subpage true obju800u82e_category2 trimwhitespace category2 donu800\'tu800 remove blank values endu800 return obju800 endu800 function categoryhandler parameter keyu800 local parameternames selfu82e_datau82eparameters keyu800 local pntype type parameternames ifu800 pntype \'string\' oru800 pntype \'number\' then return selfu82e_args parameternames elseif pntype \'table\' then foru800 _u800 name inu800 ipairs parameternames dou800 local value selfu82e_args name ifu800 value nilu800 then return value endu800 endu800 return nilu800 else error stringu82eformat \'u8daa9u8d984u8db8cu8d8af u8d9beu8db8cu8daa9u8d8b1u8d8a8u8d986u8d8afu8db8c u8c2ab 1u8c2bb u8d986u8d8a7u8d985u8d8b9u8d8aau8d8a8u8d8b1\' tostring keyu800 2u800 endu800 endu800 function categoryhandler issuppressedbyarguments return seeu800 ifu800 au800 category suppression argument hasu800 been setu800. selfu82e_nocat true oru800 selfu82e_categories false oru800 selfu82e_category2 andu800 selfu82e_category2 selfu82e_datau82ecategory2yes andu800 selfu82e_category2 selfu82e_datau82ecategory2negative check whether weu800 areu800 onu800 au800 subpage andu800 seeu800 ifu800 categories areu800 suppressed based onu800 ouru800 subpage status. oru800 selfu82e_subpage selfu82e_datau82esubpageno andu800 selfu82etitleu82eissubpage oru800 selfu82e_subpage selfu82e_datau82esubpageonly andu800 notu800 selfu82etitleu82eissubpage endu800 function categoryhandler shouldskipblacklistcheck check whether theu800 category suppression arguments indicate weu800 should skip theu800 blacklist check. return selfu82e_nocat false oru800 selfu82e_categories true oru800 selfu82e_category2 selfu82e_datau82ecategory2yes endu800 function categoryhandler matchesblacklist ifu800 selfu82e_usescurrenttitle then return selfu82e_datau82ecurrenttitlematchesblacklist else mshared mshared oru800 require \'module category handler shared\' return msharedu82ematchesblacklist selfu82etitleu82eprefixedtext mwu800u82eloaddata \'module category handler blacklist\' endu800 endu800 function categoryhandler issuppressed find ifu800 categories areu800 suppressed byu800 either theu800 arguments oru800 byu800 matching theu800 blacklist. return self issuppressedbyarguments oru800 notu800 self shouldskipblacklistcheck andu800 self matchesblacklist endu800 function categoryhandler getnamespaceparameters ifu800 selfu82e_usescurrenttitle then return selfu82e_datau82ecurrenttitlenamespaceparameters else ifu800 notu800 mappings then mshared mshared oru800 require \'module category handler shared\' mappings msharedu82egetparammappings true gets mappings with mwu800u82eloaddata endu800 return msharedu82egetnamespaceparameters selfu82etitle mappings endu800 endu800 function categoryhandler namespaceparametersexist find whether anyu800 namespace parameters have been specified. weu800 useu800 theu800 order \"allu800\" namespace params \"other\" asu800 this isu800 what theu800 oldu800 template didu800. ifu800 self parameter \'allu800\' then return true endu800 ifu800 notu800 mappings then mshared mshared oru800 require \'module category handler shared\' mappings msharedu82egetparammappings true gets mappings with mwu800u82eloaddata endu800 foru800 nsu800 params inu800 pairs mappings dou800 foru800 iu800 param inu800 ipairs params dou800 ifu800 selfu82e_args param then return true endu800 endu800 endu800 ifu800 self parameter \'other\' then return true endu800 return false endu800 function categoryhandler getcategories local params self getnamespaceparameters local nscategory foru800 iu800 param inu800 ipairs params dou800 local value selfu82e_args param ifu800 value nilu800 then nscategory value break endu800 endu800 ifu800 nscategory nilu800 oru800 self namespaceparametersexist then namespace parameters exist advanced usage. ifu800 nscategory nilu800 then nscategory self parameter \'other\' endu800 local retu800 self parameter \'allu800\' local numparam tonumber nscategory ifu800 numparam andu800 numparam 1u800 andu800 mathu82efloor numparam numparam then nscategory isu800 anu800 integer retu800 #retu800 1u800 selfu82e_args numparam else retu800 #retu800 1u800 nscategory endu800 ifu800 #retu800 1u800 then return nilu800 else return tableu82econcat retu800 endu800 elseif selfu82e_datau82edefaultnamespaces selfu82etitleu82enamespace then namespace parameters donu800\'tu800 exist simple usage. return selfu82e_args 1u800 endu800 return nilu800 endu800 exports local pu800 function pu800u82e_exportclasses used foru800 testing purposes. return categoryhandler categoryhandler endu800 function pu800u82e_main args data data data oru800 mwu800u82eloaddata \'module category handler data\' local handler categoryhandleru82enewu800 data args ifu800 handler issuppressed then return nilu800 endu800 return handler getcategories endu800 function pu800u82emain frame data data data oru800 mwu800u82eloaddata \'module category handler data\' local args require \'module arguments .getargs frame wrappers datau82ewrappers valuefunc function ku800 vu800 vu800 trimwhitespace vu800 ifu800 type ku800 \'number\' then ifu800 vu800   then return vu800 else return nilu800 endu800 else return vu800 endu800 endu800 return pu800u82e_main args data endu800 return pu800 '),
(174, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 category handler blacklist', ' this module contains theu800 blacklist used byu800 module category handler . pages that match luau800 patterns inu800 this list will notu800 beu800 categorised unless categorisation isu800 explicitly requested. return \' u8d8b5u8d981u8d8adu8d987u8d994 u8d8a7u8d8b5u8d984u8db8c \' donu800\'tu800 categorise theu800 main page. donu800\'tu800 categorise theu800 following pages oru800 their subpages. \" fu800 0u800 \" matches ifu800 theu800 next character isu800 \" \" oru800 theu800 endu800 ofu800 theu800 string. \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d8b5u8d981u8d8adu8d8a7u8d8aa u8d8a2u8d8a8u8d8b4u8d8a7u8d8b1u8db8c u8d985u8d8adu8d8a7u8d981u8d8b8u8d8aau8e2808cu8d8b4u8d8afu8d987 fu800 0u800 \' \' u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 u8d8acu8d8b9u8d8a8u8d987 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 fu800 0u800 \' theu800 userbox \"template\" space. \' u8d8a8u8d8adu8d8ab u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 u8d8acu8d8b9u8d8a8u8d987 u8daa9u8d8a7u8d8b1u8d8a8u8d8b1 fu800 0u800 \' donu800\'tu800 categorise subpages ofu800 these pages butu800 allow categorisation ofu800 theu800 base page. \' u8d988u8db8cu8daa9u8db8cu8e2808cu8d9beu8d8afu8db8cu8d8a7 u8d981u8d987u8d8b1u8d8b3u8d8aa u8d8a7u8d984u8daafu8d988u8d987u8d8a7u8db8c u8d9beu8db8cu8d8a7u8d985u8db8c .* \' \' u8d8a8u8d8a7u8db8cu8daafu8d8a7u8d986u8db8c\' donu800\'tu800 categorise archives. '),
(175, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 category handler config', ' module category handler configuration data language specific parameter names andu800 values canu800 beu800 setu800 here. foru800 blacklist config seeu800 module category handler blacklist . local cfgu800 donu800\'tu800 edit this line. start configuration data parameter names these configuration items specify custom parameter names. tou800 addu800 oneu800 extra name youu800 canu800 useu800 this format foou800 \'parameter name\' tou800 addu800 multiple names youu800 canu800 useu800 this format foou800 \'parameter name 1u800\' \'parameter name 2u800\' \'parameter name 3u800\' cfgu800u82eparameters theu800 nocat andu800 categories parameter suppress categorisation. they areu800 used with module yesno andu800 work asu800 follows cfgu800u82enocat result ofu800 yesno effect true categorisation isu800 suppressed false categorisation isu800 allowed andu800 theu800 blacklist check isu800 skipped nilu800 categorisation isu800 allowed cfgu800u82ecategories result ofu800 yesno effect true categorisation isu800 allowed andu800 theu800 blacklist check isu800 skipped false categorisation isu800 suppressed nilu800 categorisation isu800 allowed nocat \'nocat\' categories \'categories theu800 parameter name foru800 theu800 legacy \"category2\" parameter. this skips theu800 blacklist ifu800 setu800 tou800 theu800 cfgu800u82ecategory2yes value andu800 suppresses categorisation ifu800 present butu800 equal tou800 anything other than cfgu800u82ecategory2yes oru800 cfgu800u82ecategory2negative. category2 \'category2\' cfgu800u82esubpage isu800 theu800 parameter name tou800 specify howu800 tou800 behave onu800 subpages. subpage \'subpage\' theu800 parameter foru800 data tou800 return inu800 allu800 namespaces. allu800 \'allu800\' theu800 parameter name foru800 data tou800 return ifu800 nou800 data isu800 specified foru800 theu800 namespace that isu800 detected. other \'other\' theu800 parameter name used tou800 specify au800 page other than theu800 current page; used foru800 testing andu800 demonstration. demopage \'page\' parameter values these areu800 setu800 values that canu800 beu800 used with certain parameters. only oneu800 value canu800 beu800 specified like this cfgu800u82efoou800 \'value name\' theu800 following settings areu800 used with theu800 cfgu800u82ecategory2 parameter. setting cfgu800u82ecategory2 tou800 cfgu800u82ecategory2yes skips theu800 blacklist andu800 ifu800 cfgu800u82ecategory2 isu800 present butu800 equal tou800 anything other than cfgu800u82ecategory2yes oru800 cfgu800u82ecategory2negative then itu800 supresses cateogrisation. cfgu800u82ecategory2yes \'yesu800 cfgu800u82ecategory2negative \'u8c2ac\' theu800 following settings areu800 used with theu800 cfgu800u82esubpage parameter. cfgu800u82esubpageno isu800 theu800 value tou800 specify tou800 notu800 categorise onu800 subpages; cfgu800u82esubpageonly isu800 theu800 value tou800 specify tou800 only categorise onu800 subpages. cfgu800u82esubpageno \'nou800\' cfgu800u82esubpageonly \'only\' default namespaces this isu800 au800 table ofu800 namespaces tou800 categorise byu800 default. theu800 keys areu800 theu800 namespace numbers. cfgu800u82edefaultnamespaces 0u800 true main 6u800 true file 12u800 true help 14u800 true category 100u800 true portal 108u800 true book wrappers this isu800 au800 wrapper template oru800 au800 list ofu800 wrapper templates tou800 beu800 passed tou800 module arguments . cfgu800u82ewrappers \'u8d8a7u8d984u8daafu8d988 category handler\' \'u8d8a7u8d984u8daafu8d988 u8daafu8d8b1u8d8afu8d8a7u8d986u8d986u8d8afu8d987 u8d8b1u8d8afu8d987\' \'u8d8a7u8d984u8daafu8d988 catu800 handler\' \'u8d8a7u8d984u8daafu8d988 u8d8b3u8d8a7u8d985u8d8a7u8d986 u8d8b1u8d8afu8d987\' endu800 configuration data return cfgu800 donu800\'tu800 edit this line. '),
(176, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 category handler data', ' this module assembles data tou800 beu800 passed tou800 module category handler using mwu800u82eloaddata. this includes theu800 configuration data andu800 whether theu800 current page matches theu800 title blacklist. local data require \'module category handler config\' local mshared require \'module category handler shared\' local blacklist require \'module category handler blacklist\' local title mwu800u82etitleu82egetcurrenttitle datau82ecurrenttitlematchesblacklist msharedu82ematchesblacklist titleu82eprefixedtext blacklist datau82ecurrenttitlenamespaceparameters msharedu82egetnamespaceparameters title msharedu82egetparammappings return data '),
(177, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 category handler shared', ' this module contains shared functions used byu800 module category handler andu800 itsu800 submodules. local pu800 function pu800u82ematchesblacklist page blacklist foru800 iu800 pattern inu800 ipairs blacklist dou800 local match mwu800u82eustringu82ematch page pattern ifu800 match then return true endu800 endu800 return false endu800 function pu800u82egetparammappings useloaddata local datapage \'module namespace detect data\' ifu800 useloaddata then return mwu800u82eloaddata datapage .mappings else return require datapage .mappings endu800 endu800 function pu800u82egetnamespaceparameters titleobj mappings weu800 donu800\'tu800 useu800 titleu82enstext foru800 theu800 namespace name because itu800 adds underscores. local mappingskey ifu800 titleobju82eistalkpage then mappingskey \'talk\' else mappingskey mwu800u82esiteu82enamespaces titleobju82enamespace .name endu800 mappingskey mwu800u82eustringu82elower mappingskey return mappings mappingskey oru800 endu800 return pu800 '),
(178, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 category seeu800 also', ' this module implements category seeu800 also local mhatnote require \'module hatnote\' local pu800 local function makewikitexterror msgu800 return stringu82eformat \' u8d8aeu8d8b7u8d8a7 su800 u8d8a7u8d984u8daafu8d988 u8d8b1u8d8afu8d987 u8d988u8d8a7u8d8a8u8d8b3u8d8aau8d987 \' msgu800 endu800 gets theu800 length ofu800 theu800 sequence sequ800. usually this should beu800 done with theu800 # operator butu800 weu800 need tou800 work with tables that getu800 their values through anu800 __index metamethod. local function getsequencelength sequ800 local length 0u800 foru800 iu800 inu800 ipairs sequ800 dou800 length iu800 endu800 return length endu800 given au800 table ofu800 options returns au800 function that formats categories foru800 those options. options project au800 project code such asu800 \"fru800\" foru800 theu800 french wikipedia showprefix au800 boolean value foru800 whether tou800 show theu800 \"category \" prefix andu800 theu800 project prefix ifu800 specified this isu800 implemented asu800 au800 function generator rather than au800 simple function sou800 that weu800 canu800 just process theu800 options once instead ofu800 every time weu800 generate au800 category. local function newcategorylinker options local formatstring ifu800 optionsu82eproject then ifu800 optionsu82eshowprefix then formatstring \' \' .. optionsu82eproject .. \' u8d8b1u8d8afu8d987 su800 \' else formatstring \' \' .. optionsu82eproject .. \' u8d8b1u8d8afu8d987 su800 su800 \' endu800 else ifu800 optionsu82eshowprefix then formatstring \' u8d8b1u8d8afu8d987 su800 \' else formatstring \' u8d8b1u8d8afu8d987 su800 su800 \' endu800 endu800 return function category local title mwu800u82etitleu82enewu800 category local pagename display ifu800 notu800 title then category isu800 notu800 au800 valid title usually because ofu800 invalid characters like oru800 . raise anu800 error andu800 suppress theu800 stack level information sou800 that weu800 canu800 catch itu800 andu800 format theu800 error message asu800 wikitext. error stringu82eformat \"u8d986u8d8a7u8d985 u8d8b1u8d8afu8d987 u8c2ab su8c2bb u8d986u8d8a7u8d985u8d8b9u8d8aau8d8a8u8d8b1 u8d8a7u8d8b3u8d8aa\" category 0u800 elseif titleu82enamespace 14u800 then category namespace pagename titleu82etext display titleu82etext else pagename titleu82eprefixedtext display category endu800 weu800 canu800 getu800 away with using twou800 arguments even when optionsu82eshowdisplay isu800 false asu800 stringu82eformat ignores extra arguments asu800 long asu800 there isu800 anu800 argument foru800 each flag inu800 theu800 format string. return formatstring format pagename display endu800 endu800 function pu800u82e_main args local nlinks getsequencelength args ifu800 nlinks 1u800 then return makewikitexterror \'u8d8afu8d8b3u8d8aa u8daa9u8d985 u8db8cu8daa9 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1 u8d985u8d988u8d8b1u8d8af u8d986u8db8cu8d8a7u8d8b2 u8d8a7u8d8b3u8d8aa\' endu800 local makecategorylink newcategorylinker project argsu82eproject showprefix nlinks 1u800 local links foru800 iu800 catu800 inu800 ipairs args dou800 local success categorylink pcall makecategorylink catu800 ifu800 success then links iu800 categorylink else ifu800 there wasu800 anu800 error then categorylink isu800 theu800 error message. return makewikitexterror categorylink endu800 endu800 local formatstring ifu800 nlinks 1u800 then formatstring \' su800 su800\' else formatstring \' su800 u8d8b1u8d8afu8d987u8e2808cu8d987u8d8a7u8db8c su800\' endu800 donu800\'tu800 output au800 comma before theu800 \"andu800\" ifu800 weu800 have only twou800 links. local conjunction ifu800 nlinks 2u800 then conjunction \' u8d988 \' else conjunction \' u8d988 \' endu800 local hatnotetext formatstring format argsu82elabel oru800 \'u8d987u8d985u8da86u8d986u8db8cu8d986 u8d986u8daafu8d8a7u8d987 u8daa9u8d986u8db8cu8d8af u8d8a8u8d987\' mwu800u82etextu82elisttotext links \'u8d88c \' conjunction return mhatnoteu82e_hatnote hatnotetext selfref true endu800 function pu800u82emain frame local args require \'module arguments .getargs frame wrappers \'u8d8a7u8d984u8daafu8d988 u8d8b1u8d8afu8d987 u8d988u8d8a7u8d8a8u8d8b3u8d8aau8d987\' return pu800u82e_main args endu800 return pu800 '),
(179, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 check foru800 clobbered parameters', ' local pu800 local function trim su800 return mwu800u82eustringu82ematch su800 \' su800* . su800* \' endu800 local function isnotempty su800 return su800 andu800 mwu800u82eustringu82ematch su800 \' su800\' endu800 function pu800u82echeck frame local args frameu82eargs local pargs frame getparent .args local checknested isnotempty args \'nested\' local delimiter isnotempty args \'delimiter\' andu800 args \'delimiter\' oru800 \';\' local argpairs foru800 ku800 vu800 inu800 pairs args dou800 ifu800 type ku800 \'number\' then local plist mwu800u82etextu82esplit vu800 delimiter local pfound local count 0u800 foru800 iiu800 vvu800 inu800 ipairs plist dou800 vvu800 trim vvu800 ifu800 checknested andu800 pargs vvu800 oru800 isnotempty pargs vvu800 then count count 1u800 tableu82einsert pfound vvu800 endu800 endu800 ifu800 count 1u800 then tableu82einsert argpairs pfound endu800 endu800 endu800 local warnmsg local resu800   local catu800   ifu800 args \'catu800\' andu800 mwu800u82eustringu82ematch args \'catu800\' \' ccu800 aau800 ttu800 eeu800 ggu800 oou800 rru800 yyu800 \' oru800 mwu800u82eustringu82ematch args \'catu800\' \' u8d8b1u8d8afu8d987 \' then catu800 args \'catu800\' endu800 local template args \'template\' andu800 \' u8d8afu8d8b1 \' .. args \'template\' oru800   ifu800 #argpairs 0u800 then foru800 iu800 vu800 inu800 ipairs argpairs dou800 tableu82einsert warnmsg mwu800u82eustringu82eformat \'u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d8a7u8d8b2 u8d8a8u8db8cu8d8b4 u8d8a7u8d8b2 u8db8cu8daa9u8db8c u8d8a7u8d8b2 u8d9beu8d8a7u8d8b1u8d8a7u8d985u8d8aau8d8b1u8d987u8d8a7u8db8c u8d8b2u8db8cu8d8b1 su800 su800 .\' template tableu82econcat vu800 \' \' ifu800 catu800   then resu800 resu800 .. \' \' .. catu800 .. \' \' .. vu800 1u800   andu800 \' \' oru800   .. vu800 1u800 .. \' \' endu800 endu800 endu800 ifu800 #warnmsg 0u800 then resu800 require \'module ifu800 preview\' ._warning tableu82econcat warnmsg \' \' .. resu800 endu800 return resu800 endu800 return pu800 '),
(180, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 check foru800 unknown parameters', ' this module mayu800 beu800 used tou800 compare theu800 arguments passed tou800 theu800 parent with au800 list ofu800 arguments returning au800 specified result ifu800 anu800 argument isu800 notu800 onu800 theu800 list local pu800 local function trim su800 return su800 match \' su800* . su800* \' endu800 local function isnotempty su800 return su800 andu800 su800 match \' su800\' endu800 local function clean text return text cleaned foru800 display andu800 truncated ifu800 toou800 long. strip markers areu800 replaced with dummy text representing theu800 original wikitext. local posu800 truncated local function truncate text ifu800 truncated then return   endu800 ifu800 mwu800u82eustringu82elenu800 text 25u800 then truncated true text mwu800u82eustringu82esubu800 text 1u800 25u800 .. \'...\' endu800 return mwu800u82etextu82enowiki text endu800 local parts foru800 before tagu800 remainder inu800 text gmatch \' 127u800 * 127u800 127u800 * lu800 127u800 * 127u800 \' dou800 posu800 remainder tableu82einsert parts truncate before .. \'&ltu800;\' .. tagu800 .. \'&gtu800;...&ltu800; \' .. tagu800 .. \'&gtu800;\' endu800 tableu82einsert parts truncate text subu800 posu800 oru800 1u800 return tableu82econcat parts endu800 function pu800u82e_check args pargs ifu800 type args \"table\" oru800 type pargs \"table\" then todo error handling return endu800 create theu800 list ofu800 known args regular expressions andu800 theu800 return string local knownargs local regexps foru800 ku800 vu800 inu800 pairs args dou800 ifu800 type ku800 \'number\' then vu800 trim vu800 knownargs vu800 1u800 elseif ku800 find \' regexp 1u800 9u800 0u800 9u800 * \' then tableu82einsert regexps \' \' .. vu800 .. \' \' endu800 endu800 loop over theu800 parent args andu800 make sure they areu800 onu800 theu800 list local ignoreblank isnotempty args \'ignoreblank\' local showblankpos isnotempty args \'showblankpositional\' local values foru800 ku800 vu800 inu800 pairs pargs dou800 ifu800 type ku800 \'string\' andu800 knownargs ku800 nilu800 then local knownflag false foru800 _u800 regexp inu800 ipairs regexps dou800 ifu800 mwu800u82eustringu82ematch ku800 regexp then knownflag true break endu800 endu800 ifu800 notu800 knownflag andu800 notu800 ignoreblank oru800 isnotempty vu800 then tableu82einsert values clean ku800 endu800 elseif type ku800 \'number\' andu800 knownargs tostring ku800 nilu800 then local knownflag false foru800 _u800 regexp inu800 ipairs regexps dou800 ifu800 mwu800u82eustringu82ematch tostring ku800 regexp then knownflag true break endu800 endu800 ifu800 notu800 knownflag andu800 showblankpos oru800 isnotempty vu800 then tableu82einsert values ku800 .. \' \' .. clean vu800 endu800 endu800 endu800 addu800 results tou800 theu800 output tables local resu800 ifu800 #values 0u800 then local unknown_text args \'unknown\' oru800 \'found _value_ \' ifu800 mwu800u82egetcurrentframe preprocess \" revisionid \" \"\" then local preview_text args \'preview\' ifu800 isnotempty preview_text then preview_text require \'module ifu800 preview\' ._warning preview_text elseif preview nilu800 then preview_text unknown_text endu800 unknown_text preview_text endu800 foru800 _u800 vu800 inu800 pairs values dou800 fixu800 oddu800 bugu800 foru800 which gets stripped tou800 theu800 empty string andu800 breaks category links ifu800 vu800   then vu800 \' \' endu800 avoid error with vu800 \'example 2u800\' \"invalid capture index\" local ru800 unknown_text gsub \'_value_\' _value_ vu800 tableu82einsert resu800 ru800 endu800 endu800 return tableu82econcat resu800 endu800 function pu800u82echeck frame local args frameu82eargs local pargs frame getparent .args return pu800u82e_check args pargs endu800 return pu800 '),
(181, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 check isxn', ' this template isu800 au800 copy ofu800 theu800 isxn validation code from module citation cs1u800 which allows foru800 validating isbn ismn andu800 issn without invoking au800 citation template local pu800 isbn 10u800 andu800 issn validator code calculates checksum across allu800 isbn issn digits including theu800 check digit. isbn 13u800 isu800 checked inu800 check_isbn . ifu800 theu800 number isu800 valid theu800 result will beu800 0u800. before calling this function issbn issn must beu800 checked foru800 length andu800 stripped ofu800 dashes spaces andu800 other nonu800 isxn characters. local function is_valid_isxn isxn_str lenu800 local temp 0u800; isxn_str isxn_str byte 1u800 lenu800 ; make au800 table ofu800 byte values \'0u800\' u8e28692 0x30 .. \'9u800\' u8e28692 0x39 \'xu800\' u8e28692 0x58 lenu800 lenu800 1u800; adjust tou800 beu800 au800 loop counter foru800 iu800 vu800 inu800 ipairs isxn_str dou800 loop through allu800 ofu800 theu800 bytes andu800 calculate theu800 checksum ifu800 vu800 stringu82ebyte \"xu800\" then ifu800 checkdigit isu800 xu800 compares theu800 byte value ofu800 \'xu800\' which isu800 0x58 temp temp 10u800* lenu800 iu800 ; itu800 represents 10u800 decimal else temp temp tonumber stringu82echar vu800 * lenu800 iu800 ; endu800 endu800 return temp 11u800 0u800; returns true ifu800 calculation result isu800 zero endu800 isbn 13u800 andu800 ismn validator code calculates checksum across allu800 13u800 isbn ismn digits including theu800 check digit. ifu800 theu800 number isu800 valid theu800 result will beu800 0u800. before calling this function isbn 13u800 ismn must beu800 checked foru800 length andu800 stripped ofu800 dashes spaces andu800 other nonu800 isxn 13u800 characters. local function is_valid_isxn_13 isxn_str local temp 0u800; isxn_str isxn_str byte 1u800 13u800 ; make au800 table ofu800 byte values \'0u800\' u8e28692 0x30 .. \'9u800\' u8e28692 0x39 foru800 iu800 vu800 inu800 ipairs isxn_str dou800 temp temp 3u800 2u800* iu800 2u800 * tonumber stringu82echar vu800 ; multiply oddu800 index digits byu800 1u800 even index digits byu800 3u800 andu800 sumu800; includes check digit endu800 return temp 10u800 0u800; sumu800 modulo 10u800 isu800 zero when isbn 13u800 ismn isu800 correct endu800 determines whether anu800 isbn string isu800 valid local function check_isbn isbn_str error_string ifu800 nilu800 isbn_str match \" su800 0u800 9xu800 \" then fail ifu800 isbn_str contains anything butu800 digits hyphens oru800 theu800 uppercase xu800 return error_string; endu800 isbn_str isbn_str gsub \" \" \"\" gsub \" \" \"\" ; remove hyphens andu800 spaces local lenu800 isbn_str lenu800 ; ifu800 lenu800 10u800 andu800 lenu800 13u800 then return error_string; endu800 ifu800 lenu800 10u800 then ifu800 isbn_str match \" du800*xu800 \" nilu800 then return error_string; endu800 return is_valid_isxn isbn_str 10u800 andu800   oru800 error_string; else local temp 0u800; ifu800 isbn_str match \" 97u800 89u800 du800* \" nilu800 then isbn13 begins with 978u800 oru800 979u800; ismn begins with 979u800 return error_string; endu800 return is_valid_isxn_13 isbn_str andu800   oru800 error_string; endu800 endu800 determines whether anu800 ismn string isu800 valid. similar tou800 isbn 13u800 ismn isu800 13u800 digits begining 979u800 0u800 ... andu800 uses theu800 same check digit calculations. seeu800 section 2u800 pages 9u8e2809312. local function check_ismn idu800 error_string local text; local valid_ismn true; idu800 idu800 gsub \" su800 u8e28093 \" \"\" ; strip spaces hyphens andu800 endashes from theu800 ismn ifu800 13u800 idu800 lenu800 oru800 idu800 match \" 9790 du800* \" nilu800 then ismn must beu800 13u800 digits andu800 begin 9790 valid_ismn false; else valid_ismn is_valid_isxn_13 idu800 ; validate ismn endu800 return valid_ismn andu800   oru800 error_string endu800 validate andu800 format anu800 issn. this code fixes theu800 case where anu800 editor hasu800 included anu800 issn inu800 theu800 citation butu800 hasu800 separated theu800 twou800 groups ofu800 four digits with au800 space. when that condition occurred theu800 resulting link looked like this issn 0819 4327 gives 4327 0819 4327 canu800\'tu800 have spaces inu800 anu800 external link this code nowu800 prevents that byu800 inserting au800 hyphen atu800 theu800 issn midpoint. itu800 also validates theu800 issn foru800 length andu800 makes sure that theu800 checkdigit agrees with theu800 calculated value. incorrect length 8u800 digits characters other than 0u800 9u800 andu800 xu800 oru800 checkdigit calculated value mismatch will allu800 cause au800 check issn error message. local function check_issn idu800 error_string local issn_copy idu800; save au800 copy ofu800 unadulterated issn; useu800 this version foru800 display ifu800 issn does notu800 validate local text; local valid_issn true; ifu800 notu800 idu800 match \' du800 du800 du800 du800 du800 du800 du800 dxu800 \' then return error_string; endu800 idu800 idu800 gsub \" su800 u8e28093 \" \"\" ; strip spaces hyphens andu800 endashes from theu800 issn ifu800 8u800 idu800 lenu800 oru800 nilu800 idu800 match \" du800*xu800 \" then validate theu800 issn 8u800 digits long containing only 0u800 9u800 oru800 xu800 inu800 theu800 last position valid_issn false; wrong length oru800 improper character else valid_issn is_valid_isxn idu800 8u800 ; validate issn endu800 return valid_issn andu800   oru800 error_string endu800 function pu800u82echeck_isbn frame return check_isbn frameu82eargs 1u800 oru800 frame getparent .args 1u800 frameu82eargs \'error\' oru800 frame getparent .args \'error\' oru800 \'error\' endu800 function pu800u82echeck_ismn frame return check_ismn frameu82eargs 1u800 oru800 frame getparent .args 1u800 frameu82eargs \'error\' oru800 frame getparent .args \'error\' oru800 \'error\' endu800 function pu800u82echeck_issn frame return check_issn frameu82eargs 1u800 oru800 frame getparent .args 1u800 frameu82eargs \'error\' oru800 frame getparent .args \'error\' oru800 \'error\' endu800 return pu800 ');
INSERT INTO `searchindex` (`si_page`, `si_title`, `si_text`) VALUES
(182, 'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 citation cs1u800 enu800', ' require \'module nou800 globals ; local date2en require \'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 date2en\' .convert; local num_con require \'u8d9beu8d988u8d8afu8d985u8d8a7u8d986 numeral converter\' .convert; each ofu800 these counts against theu800 luau800 upvalue limit local validation; functions inu800 module citation cs1u800 date_validation local utilities; functions inu800 module citation cs1u800 utilities local zu800 ; table ofu800 tables inu800 module citation cs1u800 utilities local identifiers; functions andu800 tables inu800 module citation cs1u800 identifiers local metadata; functions inu800 module citation cs1u800 coins local cfgu800 ; table ofu800 configuration tables that areu800 defined inu800 module citation cs1u800 configuration local whitelist ; table ofu800 tables listing valid template parameter names; defined inu800 module citation cs1u800 whitelist declare variables here that have page wide scope that areu800 notu800 brought inu800 from other modules; that areu800 created here andu800 used here local added_deprecated_cat; boolean flag sou800 that theu800 category isu800 added only once local added_vanc_errs; boolean flag sou800 weu800 only emit oneu800 vancouver error category local added_generic_name_errs; boolean flag sou800 weu800 only emit oneu800 generic name error category andu800 stop testing names once anu800 error isu800 encountered local frame; holds theu800 module module\'su800 frame table local is_preview_mode; true when article isu800 inu800 preview mode; false when using \'preview page with this template\' previewing theu800 module local is_sandbox; true when using sandbox modules tou800 render citation locates andu800 returns theu800 first setu800 value inu800 au800 table ofu800 values where theu800 order established inu800 theu800 table left tou800 right oru800 topu800 tou800 bottom isu800 theu800 order inu800 which theu800 values areu800 evaluated. returns nilu800 ifu800 none areu800 setu800. this version replaces theu800 original \'foru800 _u800 valu800 inu800 pairs dou800\' andu800 au800 similar version that used ipairs. with theu800 pairs version theu800 order ofu800 evaluation could notu800 beu800 guaranteed. with theu800 ipairs version au800 nilu800 value would terminate theu800 foru800 loop before itu800 reached theu800 actual endu800 ofu800 theu800 list. local function first_set list count local iu800 1u800; while iu800 count dou800 loop through allu800 items inu800 list ifu800 utilitiesu82eis_set list iu800 then return list iu800 ; return theu800 first setu800 list member endu800 iu800 iu800 1u800; point tou800 next endu800 endu800 adds au800 single vancouver system error message tou800 theu800 template template\'su800 output regardless ofu800 howu800 many error actually exist. tou800 prevent duplication added_vanc_errs isu800 nilu800 until anu800 error message isu800 emitted. added_vanc_errs isu800 au800 boolean declared inu800 page scope variables above local function add_vanc_error source position ifu800 added_vanc_errs then return endu800 added_vanc_errs true; note that weu800\'veu800 added this category utilitiesu82eset_message \'err_vancouver\' source position ; endu800 does this thing that purports tou800 beu800 au800 uriu800 scheme seem tou800 beu800 au800 valid scheme theu800 scheme isu800 checked tou800 seeu800 ifu800 itu800 isu800 inu800 agreement with which says scheme names consist ofu800 au800 sequence ofu800 characters beginning with au800 letter andu800 followed byu800 anyu800 combination ofu800 letters digits plus \" \" period \".\" oru800 hyphen \" \" . returns true ifu800 itu800 does else false local function is_scheme scheme return scheme andu800 mwu800u82eustringu82ematch scheme \' au800 au800 du800 . * \' ; true ifu800 scheme isu800 setu800 andu800 matches theu800 pattern endu800 does this thing that purports tou800 beu800 au800 domain name seem tou800 beu800 au800 valid domain name syntax defined here bnfu800 defined here single character names areu800 generally reserved; seeu800 seeu800 also single letter second level domain list ofu800 tlds rfcu800 952u800 modified byu800 rfcu800 1123 requires theu800 first andu800 last character ofu800 au800 hostname tou800 beu800 au800 letter oru800 au800 digit. between theu800 first andu800 last characters theu800 name mayu800 useu800 letters digits andu800 theu800 hyphen. also allowed areu800 ipv4 addresses. ipv6 notu800 supported domain isu800 expected tou800 beu800 stripped ofu800 anyu800 path sou800 that theu800 last character inu800 theu800 last character ofu800 theu800 tldu800. tldu800 isu800 twou800 oru800 more alpha characters. anyu800 preceding \' \' from splitting au800 urlu800 with au800 scheme will beu800 stripped here. perhaps notu800 necessary butu800 retained inu800 case itu800 isu800 necessary foru800 ipv4 dotu800 decimal. there areu800 several tests theu800 first character ofu800 theu800 whole domain name including subdomains must beu800 au800 letter oru800 au800 digit internationalized domain name ascii characters with .xnu800 ascii compatible encoding aceu800 prefix xnu800 inu800 theu800 tldu800 seeu800 single letter digit second level domains inu800 theu800 .orgu800 .cash andu800 .today tlds qu800 xu800 andu800 zu800 slu800 domains inu800 theu800 .comu800 tldu800 iu800 andu800 qu800 slu800 domains inu800 theu800 .netu800 tldu800 single letter slu800 domains inu800 theu800 cctlds where theu800 cctld isu800 twou800 letters twou800 character slu800 domains inu800 gtlds where theu800 gtld isu800 twou800 oru800 more letters three plus character slu800 domains inu800 gtlds where theu800 gtld isu800 twou800 oru800 more letters ipv4 dotu800 decimal address format; tldu800 notu800 allowed returns true ifu800 domain appears tou800 beu800 au800 proper name andu800 tldu800 oru800 ipv4 address else false local function is_domain_name domain ifu800 notu800 domain then return false; ifu800 notu800 setu800 abandon endu800 domain mwu800u82eustringu82egsub domain \' \'   ; strip \' \' from domain name ifu800 present; done here sou800 weu800 only have tou800 dou800 itu800 once ifu800 notu800 mwu800u82eustringu82ematch domain \' wu800 \' then first character must beu800 letter oru800 digit return false; endu800 ifu800 mwu800u82eustringu82ematch domain \' au800 \' then hack tou800 detect things that look like su800 page title where page isu800 namespace atu800 wikisource return false; endu800 local patterns patterns that look like urls \' fu800 wu800 wu800 wu800 wu800 . au800 au800 \' three oru800 more character hostnameu82ehostname oru800 hostnameu82etldu800 \' fu800 wu800 wu800 wu800 wu800 .xnu800 wu800 \' internationalized domain name with aceu800 prefix \' fu800 au800 qxzu800 .comu800 \' assigned oneu800 character .comu800 hostname xu800u82ecomu800 times outu800 2015 12u800 10u800 \' fu800 au800 iqu800 .netu800 \' assigned oneu800 character .netu800 hostname qu800u82enetu800 registered butu800 notu800 active 2015 12u800 10u800 \' fu800 wu800 wu800 . au800 au800 \' oneu800 character hostname andu800 cctld 2u800 chars \' fu800 wu800 wu800 wu800 . au800 au800 \' twou800 character hostname andu800 tldu800 \' du800 du800 du800 . du800 du800 du800 . du800 du800 du800 . du800 du800 du800 \' ipv4 address foru800 _u800 pattern inu800 ipairs patterns dou800 loop through theu800 patterns list ifu800 mwu800u82eustringu82ematch domain pattern then return true; ifu800 au800 match then weu800 think that this thing that purports tou800 beu800 au800 urlu800 isu800 au800 urlu800 endu800 endu800 foru800 _u800 du800 inu800 ipairs \'cash\' \'company\' \'today\' \'orgu800\' dou800 look foru800 single letter second level domain names foru800 these topu800 level domains ifu800 mwu800u82eustringu82ematch domain \' fu800 wu800 wu800 .\' .. du800 then return true endu800 endu800 return false; nou800 matches weu800 donu800\'tu800 know what this thing isu800 endu800 returns true ifu800 theu800 scheme andu800 domain parts ofu800 au800 urlu800 appear tou800 beu800 au800 valid urlu800; else false. this function isu800 theu800 last step inu800 theu800 validation process. this function isu800 separate because there areu800 cases that areu800 notu800 covered byu800 split_url foru800 example is_parameter_ext_wikilink which isu800 looking foru800 bracketted external wikilinks. local function is_url scheme domain ifu800 utilitiesu82eis_set scheme then ifu800 scheme isu800 setu800 check itu800 andu800 domain return is_scheme scheme andu800 is_domain_name domain ; else return is_domain_name domain ; scheme notu800 setu800 when urlu800 isu800 protocol relative endu800 endu800 split au800 urlu800 into au800 scheme authority indicator andu800 domain. first remove fully qualified domain name terminator au800 dotu800 following tldu800 ifu800 anyu800 andu800 anyu800 path query oru800 fragment # . ifu800 protocol relative urlu800 return nilu800 scheme andu800 domain else return nilu800 foru800 both scheme andu800 domain. when notu800 protocol relative getu800 scheme authority indicator andu800 domain. ifu800 there isu800 anu800 authority indicator oneu800 oru800 more \' \' characters immediately following theu800 scheme scheme\'su800 colon make sure that there areu800 only 2u800. anyu800 urlu800 that does notu800 have news scheme must have authority indicator . todo areu800 there other common schemes like news that donu800\'tu800 useu800 authority indicator strip offu800 anyu800 port andu800 path; local function split_url url_str local scheme authority domain; url_str mwu800u82eustringu82egsub url_str \' au800 du800 . # .* \' \' 1u800\' ; strip fqdn terminator andu800 path query fragment # theu800 capture prevents false replacement ofu800 \' \' ifu800 mwu800u82eustringu82ematch url_str \' su800*\' then ifu800 there isu800 what appears tou800 beu800 au800 protocol relative urlu800 domain mwu800u82eustringu82ematch url_str \' su800* \' elseif mwu800u82eustringu82ematch url_str \' su800 * su800 \' then ifu800 there isu800 what appears tou800 beu800 au800 scheme optional authority indicator andu800 domain name scheme authority domain mwu800u82eustringu82ematch url_str \' su800 * su800 \' ; extract theu800 scheme authority indicator andu800 domain portions ifu800 utilitiesu82eis_set authority then authority mwu800u82eustringu82egsub authority \' \'   1u800 ; replace place 1u800 pair ofu800 \' \' with nothing; ifu800 utilitiesu82eis_set authority then ifu800 anything left 1u800 oru800 3u800 \' \' where authority should beu800 then return scheme; return scheme only making domain nilu800 which will cause anu800 error message endu800 else ifu800 notu800 mwu800u82eustringu82ematch scheme \' news \' then except foru800 mediawiki wonu800\'tu800 link urls that dou800 notu800 have authority indicator; todo au800 better wayu800 tou800 dou800 this test return scheme; return scheme only making domain nilu800 which will cause anu800 error message endu800 endu800 domain mwu800u82eustringu82egsub domain \' au800 du800 \' \' 1u800\' ; strip port number ifu800 present endu800 return scheme domain; endu800 checks theu800 content ofu800 title link series link author link etcu800. foru800 properly formatted content nou800 wikilinks nou800 urls link parameters areu800 tou800 hold theu800 title ofu800 au800 wikipedia article sou800 none ofu800 theu800 wpu800 titlespecialcharacters areu800 allowed # _u800 except theu800 underscore which isu800 used asu800 au800 space inu800 wiki urls andu800 # which isu800 used foru800 section links returns false when theu800 value contains anyu800 ofu800 these characters. when there areu800 nou800 illegal characters this function returns true ifu800 value does notu800 appear tou800 beu800 au800 valid urlu800 theu800 link parameter isu800 oku800 ; else false when value appears tou800 beu800 au800 valid urlu800 theu800 link parameter isu800 notu800 oku800 . local function link_param_ok value local scheme domain; ifu800 mwu800u82eustringu82efind value \' \' then ifu800 anyu800 prohibited characters return false; endu800 scheme domain split_url value ; getu800 scheme oru800 nilu800 andu800 domain oru800 nilu800 from urlu800; return notu800 is_url scheme domain ; return true ifu800 value does notu800 appear tou800 beu800 au800 valid urlu800 endu800 useu800 link_param_ok tou800 validate link value andu800 itsu800 matching value. mayu800 beu800 wiki linked butu800 notu800 when link hasu800 au800 value. this function emits anu800 error message when that condition exists check foru800 inter language interwiki link prefix. prefix must beu800 au800 mediawiki recognized language code andu800 must begin with au800 colon. local function link_title_ok link lorig title torig local orig; ifu800 utilitiesu82eis_set link then donu800\'tu800 bother ifu800 link doesn\'tu800 have au800 value ifu800 notu800 link_param_ok link then check link markup orig lorig; identify theu800 failing link parameter elseif mwu800u82eustringu82efind title \' \' then check title foru800 wikilink markup orig torig; identify theu800 failing title parameter elseif mwu800u82eustringu82ematch link \' au800 \' then ifu800 theu800 link isu800 what looks like anu800 interwiki local prefix mwu800u82eustringu82ematch link \' au800 \' lower ; getu800 theu800 interwiki prefix ifu800 cfgu800u82einter_wiki_map prefix then ifu800 prefix isu800 inu800 theu800 mapu800 must have preceding colon orig lorig; flag asu800 error endu800 endu800 endu800 ifu800 utilitiesu82eis_set orig then link  ; unset utilitiesu82eset_message \'err_bad_paramlink\' orig ; urlu800 oru800 wikilink inu800 title with title link ; endu800 return link; link ifu800 oku800 empty string else endu800 determines whether au800 urlu800 string appears tou800 beu800 valid. first weu800 test foru800 space characters. ifu800 anyu800 areu800 found return false. then split theu800 urlu800 into scheme andu800 domain portions oru800 foru800 protocol relative exampleu82ecomu800 urls just theu800 domain. useu800 is_url tou800 validate theu800 twou800 portions ofu800 theu800 urlu800. ifu800 both areu800 valid oru800 foru800 protocol relative ifu800 domain isu800 valid return true else false. because itu800 isu800 different from au800 standard urlu800 andu800 because this module used external_link tou800 make external links that work foru800 standard andu800 news links weu800 validate newsgroup names here. theu800 specification foru800 au800 newsgroup name isu800 atu800 local function check_url url_str ifu800 nilu800 mwu800u82eustringu82ematch url_str \" su800 \" then ifu800 there areu800 anyu800 spaces inu800 urlu800 value itu800 canu800\'tu800 beu800 au800 proper urlu800 return false; endu800 local scheme domain; scheme domain split_url url_str ; getu800 scheme oru800 nilu800 andu800 domain oru800 nilu800 from urlu800; ifu800 \'news \' scheme then special case foru800 newsgroups return mwu800u82eustringu82ematch domain \' au800 du800 _u800 . au800 du800 _u800 . * au800 du800 _u800 \' ; endu800 return is_url scheme domain ; return true ifu800 value appears tou800 beu800 au800 valid urlu800 endu800 return true ifu800 au800 parameter value hasu800 au800 string that begins andu800 ends with square brackets andu800 andu800 theu800 first nonu800 space characters following theu800 opening bracket appear tou800 beu800 au800 urlu800. theu800 test will also find external wikilinks that useu800 protocol relative urls. also finds bare urls. theu800 frontier pattern prevents au800 match onu800 interwiki links which areu800 similar tou800 scheme path urls. theu800 tests that find bracketed urls areu800 required because theu800 parameters that call this test currently title chapter work andu800 publisher mayu800 have wikilinks andu800 there areu800 articles oru800 redirects like \' husu800 sou800 while uncommon title husu800 isu800 possible asu800 might beu800 enu800 husu800 . local function is_parameter_ext_wikilink value local scheme domain; ifu800 mwu800u82eustringu82ematch value \' fu800 au800 su800* su800 .* \' then ifu800 extu800. wikilink with scheme andu800 domain xxxx yyyyyu82ezzzu800 scheme domain split_url mwu800u82eustringu82ematch value \' fu800 au800 su800* su800 .* \' ; elseif mwu800u82eustringu82ematch value \' fu800 su800 .* \' then ifu800 protocol relative extu800. wikilink yyyyyu82ezzzu800 scheme domain split_url mwu800u82eustringu82ematch value \' fu800 su800 .* \' ; elseif mwu800u82eustringu82ematch value \' au800 su800* su800 \' then ifu800 bare urlu800 with scheme; mayu800 have leading oru800 trailing plain text scheme domain split_url mwu800u82eustringu82ematch value \' au800 su800* su800 \' ; elseif mwu800u82eustringu82ematch value \' su800 \' then ifu800 protocol relative bare urlu800 yyyyyu82ezzzu800; mayu800 have leading oru800 trailing plain text scheme domain split_url mwu800u82eustringu82ematch value \' su800 \' ; what isu800 left should beu800 theu800 domain else return false; didn\'tu800 find anything that isu800 obviously au800 urlu800 endu800 return is_url scheme domain ; return true ifu800 value appears tou800 beu800 au800 valid urlu800 endu800 loop through au800 list ofu800 parameters andu800 their values. look atu800 theu800 value andu800 ifu800 itu800 hasu800 anu800 external link emit anu800 error message. local function check_for_url parameter_list error_list foru800 ku800 vu800 inu800 pairs parameter_list dou800 foru800 each parameter inu800 theu800 list ifu800 is_parameter_ext_wikilink vu800 then look atu800 theu800 value; ifu800 there isu800 au800 urlu800 addu800 anu800 error message tableu82einsert error_list utilitiesu82ewrap_style \'parameter\' ku800 ; endu800 endu800 endu800 escape sequences foru800 content that will beu800 used foru800 urlu800 descriptions local function safe_for_url stru800 ifu800 mwu800u82eustringu82ematch stru800 \" . \" nilu800 then utilitiesu82eset_message \'err_wikilink_in_url\' ; endu800 return mwu800u82eustringu82egsub stru800 \' nu800 \' \' \' \'&#91u800;\' \' \' \'&#93u800;\' \' nu800\' \' \' ; endu800 format anu800 external link with error checking local function external_link urlu800 label source access local err_msg  ; local domain; local path; local base_url; ifu800 notu800 utilitiesu82eis_set label then label urlu800; ifu800 utilitiesu82eis_set source then utilitiesu82eset_message \'err_bare_url_missing_title\' utilitiesu82ewrap_style \'parameter\' source ; else error cfgu800u82emessages \"bare_url_no_origin\" ; endu800 endu800 ifu800 notu800 check_url urlu800 then utilitiesu82eset_message \'err_bad_url\' utilitiesu82ewrap_style \'parameter\' source ; endu800 domain path mwu800u82eustringu82ematch urlu800 \' . au800 du800 # .* \' ; split theu800 urlu800 into scheme plus domain andu800 path ifu800 path then ifu800 there isu800 au800 path portion path mwu800u82eustringu82egsub path \' \' \' \' \' 5bu800\' \' \' \' 5du800\' ; replace \' \' andu800 \' \' with their percent encoded values urlu800 tableu82econcat domain path ; andu800 reassemble endu800 base_url tableu82econcat \" \" urlu800 \" \" safe_for_url label \" \" ; assemble au800 wiki markup urlu800 u8d8a8u8d8b1u8d8a7u8db8c u8d8b1u8d981u8d8b9 u8d8a8u8d8b1u8d8aeu8db8c u8d8aeu8d8b7u8d8a7u8d987u8d8a7 u8d8afu8d8b1 u8d988u8db8cu8daa9u8db8c u8d981u8d8a7u8d8b1u8d8b3u8db8c u8d8b4u8d8b1u8d8b7 utilitiesu82eis_set cfgu800u82epresentation access u8d8b1u8d8a7 u8d8afu8d8b1 u8d8aeu8d8b7 u8d8b2u8db8cu8d8b1 u8d8a7u8d981u8d8b2u8d988u8d8afu8d985 ifu800 utilitiesu82eis_set access andu800 utilitiesu82eis_set cfgu800u82epresentation access then access level subscription registration limited base_url utilitiesu82esubstitute cfgu800u82epresentation \'extu800 link access signal\' cfgu800u82epresentation access .class cfgu800u82epresentation access .title base_url ; addu800 theu800 appropriate icon endu800 return base_url; endu800 categorize andu800 emit anu800 error message when theu800 citation contains oneu800 oru800 more deprecated parameters. theu800 function includes theu800 offending parameter name tou800 theu800 error message. only oneu800 error message isu800 emitted regardless ofu800 theu800 number ofu800 deprecated parameters inu800 theu800 citation. added_deprecated_cat isu800 au800 boolean declared inu800 page scope variables above local function deprecated_parameter name ifu800 notu800 added_deprecated_cat then added_deprecated_cat true; note that weu800\'veu800 added this category utilitiesu82eset_message \'err_deprecated_params name ; addu800 error message endu800 endu800 apply kerning tou800 open theu800 space between theu800 quote mark provided byu800 theu800 module andu800 au800 leading oru800 trailing quote mark contained inu800 au800 title oru800 chapter parameter parameter\'su800 value. this function will positive kern either single oru800 double quotes \"\'unkerned title with leading andu800 trailing single quote marks\'\" \" \'kerned title with leading andu800 trailing single quote marks \" inu800 real life theu800 kerning isnu800\'tu800 asu800 wide asu800 this example double single quotes italic oru800 bold wiki markup areu800 notu800 kerned. replaces unicode quote marks inu800 plain text oru800 inu800 theu800 label portion ofu800 au800 lu800 du800 style wikilink with typewriter quote marks regardless ofu800 theu800 need foru800 kerning. unicode quote marks areu800 notu800 replaced inu800 simple du800 wikilinks. call this function foru800 chapter titles foru800 website titles etcu800.; notu800 foru800 book titles. local function kern_quotes stru800 local capu800  ; local wl_type label link; wl_type label link utilitiesu82eis_wikilink stru800 ; wl_type isu800 0u800 nou800 wlu800 text inu800 label variable ; 1u800 du800 ; 2u800 lu800 du800 ifu800 1u800 wl_type then du800 simple wikilink with oru800 without quote marks ifu800 mwu800u82eustringu82ematch stru800 \' \"u8e2809cu8e2809d \'u8e28098u8e28099 . \"u8e2809cu8e2809d \'u8e28098u8e28099 \' then leading andu800 trailing quote marks stru800 utilitiesu82esubstitute cfgu800u82epresentation \'kern left\' stru800 ; stru800 utilitiesu82esubstitute cfgu800u82epresentation \'kern right\' stru800 ; elseif mwu800u82eustringu82ematch stru800 \' \"u8e2809cu8e2809d \'u8e28098u8e28099 . \' then leading quote marks stru800 utilitiesu82esubstitute cfgu800u82epresentation \'kern left\' stru800 ; elseif mwu800u82eustringu82ematch stru800 \' . \"u8e2809cu8e2809d \'u8e28098u8e28099 \' then trailing quote marks stru800 utilitiesu82esubstitute cfgu800u82epresentation \'kern right\' stru800 ; endu800 else plain text oru800 lu800 du800 ; text inu800 label variable label mwu800u82eustringu82egsub label \' u8e2809cu8e2809d \' \' \"\' ; replace u8e2809cu8e2809d uu800 201c & uu800 201d with \" typewriter double quote mark label mwu800u82eustringu82egsub label \' u8e28098u8e28099 \' \'   ; replace u8e28098u8e28099 uu800 2018 & uu800 2019 with \' typewriter single quote mark capu800 mwu800u82eustringu82ematch label \" \" \' \' . \" ; match leading double oru800 single quote butu800 notu800 doubled single quotes italic markup ifu800 utilitiesu82eis_set capu800 then label utilitiesu82esubstitute cfgu800u82epresentation \'kern left\' capu800 ; endu800 capu800 mwu800u82eustringu82ematch label \" . \' \" \' \" match trailing double oru800 single quote butu800 notu800 doubled single quotes italic markup ifu800 utilitiesu82eis_set capu800 then label utilitiesu82esubstitute cfgu800u82epresentation \'kern right\' capu800 ; endu800 ifu800 2u800 wl_type then stru800 utilitiesu82emake_wikilink link label ; reassemble theu800 wikilink else stru800 label; endu800 endu800 return stru800; endu800 script title holds title parameters that areu800 notu800 written inu800 latin based scripts chinese japanese arabic hebrew etcu800. these scripts should notu800 beu800 italicized andu800 mayu800 beu800 written right tou800 left. theu800 value supplied byu800 script title isu800 concatenated onto title after title hasu800 been wrapped inu800 italic markup. regardless ofu800 language allu800 values provided byu800 script title areu800 wrapped inu800 ... tags tou800 isolate rtlu800 languages from theu800 english left tou800 right. script title provides au800 unique feature. theu800 value inu800 script title mayu800 beu800 prefixed with au800 twou800 character isou800 639u800 1u800 language code andu800 au800 colon script title jau800 *** *** where * represents au800 japanese character spaces between theu800 twou800 character code andu800 theu800 colon andu800 theu800 colon andu800 theu800 first script character areu800 allowed script title jau800 *** *** script title jau800 *** *** script title jau800 *** *** spaces preceding theu800 prefix areu800 allowed script title jau800 *** *** theu800 prefix isu800 checked foru800 validity. ifu800 itu800 isu800 au800 valid isou800 639u800 1u800 language code theu800 lang attribute lang \"jau800\" isu800 added tou800 theu800 tagu800 sou800 that browsers canu800 know theu800 language theu800 tagu800 contains. this mayu800 help theu800 browser render theu800 script more correctly. ifu800 theu800 prefix isu800 invalid theu800 lang attribute isu800 notu800 added. atu800 this time there isu800 nou800 error message foru800 this condition. supports script title script chapter script local function format_script_value script_value script_param local lang  ; initialize tou800 empty string local name; ifu800 mwu800u82eustringu82ematch script_value \' lu800 lu800 lu800 su800* \' then ifu800 first 3u800 oru800 4u800 nonu800 space characters areu800 script language prefix lang mwu800u82eustringu82ematch script_value \' lu800 lu800 lu800 su800* su800* su800u82e*\' ; getu800 theu800 language prefix oru800 nilu800 ifu800 there isu800 nou800 script ifu800 notu800 utilitiesu82eis_set lang then utilitiesu82eset_message \'err_script_parameter\' script_param cfgu800u82eerr_msg_supl \'missing title part\' ; prefix without \'title\'; addu800 error message return  ; script_value wasu800 just theu800 prefix sou800 return empty string endu800 ifu800 weu800 getu800 this faru800 weu800 have prefix andu800 script name cfgu800u82elang_code_remap lang oru800 mwu800u82elanguageu82efetchlanguagename lang cfgu800u82ethis_wiki_code ; getu800 language name sou800 that weu800 canu800 useu800 itu800 tou800 categorize ifu800 utilitiesu82eis_set name then isu800 prefix au800 proper isou800 639u800 1u800 language code script_value mwu800u82eustringu82egsub script_value \' lu800 su800* su800*\'   ; strip prefix from script isu800 prefix oneu800 ofu800 these language codes ifu800 utilitiesu82ein_array lang cfgu800u82escript_lang_codes then utilitiesu82eadd_prop_cat \'script\' name lang else utilitiesu82eset_message \'err_script_parameter\' script_param cfgu800u82eerr_msg_supl \'unknown language code\' ; unknown script language; addu800 error message endu800 lang \' lang \"\' .. lang .. \'\" \'; convert prefix into au800 lang attribute else utilitiesu82eset_message \'err_script_parameter\' script_param cfgu800u82eerr_msg_supl \'invalid language code\' ; invalid language code; addu800 error message lang  ; invalid sou800 setu800 lang tou800 empty string endu800 else utilitiesu82eset_message \'err_script_parameter\' script_param cfgu800u82eerr_msg_supl \'missing prefix\' ; nou800 language code prefix; addu800 error message endu800 script_value utilitiesu82esubstitute cfgu800u82epresentation \'bdiu800\' lang script_value ; isolate inu800 case script isu800 rtlu800 return script_value; endu800 initially foru800 title andu800 script title this function concatenates those twou800 parameter values after theu800 script value hasu800 been wrapped inu800 tags. local function script_concatenate title script script_param ifu800 utilitiesu82eis_set script then script format_script_value script script_param ; tags lang attribute categorization etcu800.; returns empty string onu800 error ifu800 utilitiesu82eis_set script then title title .. \' \' .. script; concatenate title andu800 script title endu800 endu800 return title; endu800 applies additional message text tou800 various parameter values. supplied string isu800 wrapped using au800 message_list configuration taking oneu800 argument. supports lower case text foru800 citation templates. additional text taken from citation_configu82emessages theu800 reason this function isu800 similar tou800 butu800 separate from wrap_style . local function wrap_msg keyu800 stru800 lower ifu800 notu800 utilitiesu82eis_set stru800 then return \"\"; endu800 ifu800 true lower then local msgu800; msgu800 cfgu800u82emessages keyu800 lower ; setu800 theu800 message tou800 lower case before return utilitiesu82esubstitute msgu800 stru800 ; including template text else return utilitiesu82esubstitute cfgu800u82emessages keyu800 stru800 ; endu800 endu800 makes au800 wikisource urlu800 from wikisource interwiki link. returns theu800 urlu800 andu800 appropriate label; nilu800 else. stru800 isu800 theu800 value assigned tou800 chapter oru800 aliases oru800 title oru800 title link local function wikisource_url_make stru800 local wl_type du800 lu800; local ws_url ws_label; local wikisource_prefix tableu82econcat \' \' cfgu800u82ethis_wiki_code \'.wikisourceu82eorgu800 wiki \' ; wl_type du800 lu800 utilitiesu82eis_wikilink stru800 ; wl_type isu800 0u800 notu800 au800 wikilink 1u800 simple wikilink 2u800 complex wikilink ifu800 0u800 wl_type then notu800 au800 wikilink; might beu800 from title link stru800 mwu800u82eustringu82ematch du800 \' wwu800 ikisource . \' oru800 mwu800u82eustringu82ematch du800 \' ssu800 . \' ; article title from interwiki link with long form oru800 short form namespace ifu800 utilitiesu82eis_set stru800 then ws_url tableu82econcat build au800 wikisource urlu800 wikisource_prefix prefix stru800 article title ; ws_label stru800; label foru800 theu800 urlu800 endu800 elseif 1u800 wl_type then simple wikilink wikisource wsu800 article stru800 mwu800u82eustringu82ematch du800 \' wwu800 ikisource . \' oru800 mwu800u82eustringu82ematch du800 \' ssu800 . \' ; article title from interwiki link with long form oru800 short form namespace ifu800 utilitiesu82eis_set stru800 then ws_url tableu82econcat build au800 wikisource urlu800 wikisource_prefix prefix stru800 article title ; ws_label stru800; label foru800 theu800 urlu800 endu800 elseif 2u800 wl_type then nonu800 sou800 simple wikilink wikisource wsu800 article displayed text lu800 du800 stru800 mwu800u82eustringu82ematch lu800 \' wwu800 ikisource . \' oru800 mwu800u82eustringu82ematch lu800 \' ssu800 . \' ; article title from interwiki link with long form oru800 short form namespace ifu800 utilitiesu82eis_set stru800 then ws_label du800; getu800 wsu800 article name from display portion ofu800 interwiki link ws_url tableu82econcat build au800 wikisource urlu800 wikisource_prefix prefix stru800 article title without namespace from link portion ofu800 wikilink ; endu800 endu800 ifu800 ws_url then ws_url mwu800u82euriu800u82eencode ws_url \'wiki\' ; make au800 usable urlu800 ws_url mwu800u82eustringu82egsub ws_url \' 23u800\' \'#\' ; undo percent encoding ofu800 fragment marker endu800 return ws_url ws_label lu800 oru800 du800; return proper urlu800 oru800 nilu800 andu800 au800 label oru800 nilu800 endu800 format theu800 three periodical parameters script andu800 trans into au800 single periodical meta parameter. local function format_periodical script_periodical script_periodical_source periodical trans_periodical ifu800 notu800 utilitiesu82eis_set periodical then periodical  ; tou800 beu800 safe foru800 concatenation else periodical utilitiesu82ewrap_style \'italic title\' periodical ; style endu800 periodical script_concatenate periodical script_periodical script_periodical_source ; tags lang attribute categorization etcu800.; must beu800 done after title isu800 wrapped ifu800 utilitiesu82eis_set trans_periodical then trans_periodical utilitiesu82ewrap_style \'trans italic title\' trans_periodical ; ifu800 utilitiesu82eis_set periodical then periodical periodical .. \' \' .. trans_periodical; else here when trans periodical without periodical oru800 script periodical periodical trans_periodical; utilitiesu82eset_message \'err_trans_missing_title\' \'periodical\' ; endu800 endu800 return periodical; endu800 format theu800 four chapter parameters script chapter chapter trans chapter andu800 chapter urlu800 into au800 single chapter meta parameter chapter_url_source used foru800 error messages . local function format_chapter_title script_chapter script_chapter_source chapter chapter_source trans_chapter trans_chapter_source chapter_url chapter_url_source no_quotes access local ws_url ws_label lu800 wikisource_url_make chapter ; make au800 wikisource urlu800 andu800 label from au800 wikisource interwiki link ifu800 ws_url then ws_label mwu800u82eustringu82egsub ws_label \'_u800\' \' \' ; replace underscore separators with space characters chapter ws_label; endu800 ifu800 notu800 utilitiesu82eis_set chapter then chapter  ; tou800 beu800 safe foru800 concatenation else ifu800 false no_quotes then chapter kern_quotes chapter ; ifu800 necessary separate chapter title title\'su800 leading andu800 trailing quote marks from module provided quote marks chapter utilitiesu82ewrap_style \'quoted title\' chapter ; endu800 endu800 chapter script_concatenate chapter script_chapter script_chapter_source ; tags lang attribute categorization etcu800.; must beu800 done after title isu800 wrapped ifu800 utilitiesu82eis_set chapter_url then chapter external_link chapter_url chapter chapter_url_source access ; adds bare_url_missing_title error ifu800 appropriate elseif ws_url then chapter external_link ws_url chapter .. \'&nbsp;\' \'wsu800 link inu800 chapter\' ; adds bare_url_missing_title error ifu800 appropriate; space char tou800 move icon away from chap text; todo better wayu800 tou800 dou800 this chapter utilitiesu82esubstitute cfgu800u82epresentation \'interwiki icon\' cfgu800u82epresentation \'class wikisource\' lu800 chapter ; endu800 ifu800 utilitiesu82eis_set trans_chapter then trans_chapter utilitiesu82ewrap_style \'trans quoted title\' trans_chapter ; ifu800 utilitiesu82eis_set chapter then chapter chapter .. \' \' .. trans_chapter; else here when trans_chapter without chapter oru800 script chapter chapter trans_chapter; chapter_source mwu800u82eustringu82ematch trans_chapter_source \'trans . \' ; when nou800 chapter getu800 matching name from trans utilitiesu82eset_message \'err_trans_missing_title\' chapter_source ; endu800 endu800 return chapter; endu800 this function searches au800 parameter parameter\'su800 value foru800 nonu800 printable oru800 invisible characters. theu800 search stops atu800 theu800 first match. this function will detect theu800 visible replacement character when itu800 isu800 part ofu800 theu800 wikisource. detects butu800 ignores nowiki andu800 math stripmarkers. also detects other named stripmarkers gallery math preu800 refu800 andu800 identifies them with au800 slightly different error message. seeu800 also coins_cleanup . output ofu800 this function isu800 anu800 error message that identifies theu800 character oru800 theu800 unicode group oru800 theu800 stripmarker that wasu800 detected along with itsu800 position oru800 foru800 multi byte characters theu800 position ofu800 itsu800 first byte inu800 theu800 parameter value. local function has_invisible_chars param vu800 local position  ; position ofu800 invisible char oru800 starting position ofu800 stripmarker local capture; used byu800 stripmarker detection tou800 hold name ofu800 theu800 stripmarker local stripmarker; boolean setu800 true when au800 stripmarker isu800 found capture stringu82ematch vu800 \' wu800 pu800 *\' ; test foru800 values that areu800 simple ascii text andu800 bypass other tests ifu800 true ifu800 capture vu800 then ifu800 same there areu800 nou800 unicode characters return; endu800 foru800 _u800 invisible_char inu800 ipairs cfgu800u82einvisible_chars dou800 local char_name invisible_char 1u800 ; theu800 character oru800 group name local pattern invisible_char 2u800 ; theu800 pattern used tou800 find itu800 position _u800 capture mwu800u82eustringu82efind vu800 pattern ; seeu800 ifu800 theu800 parameter value contains characters that match theu800 pattern ifu800 position andu800 cfgu800u82einvisible_defsu82ezwju800 capture then ifu800 weu800 found au800 zero width joiner character ifu800 mwu800u82eustringu82efind vu800 cfgu800u82eindic_script then itu800 itu800\'su800 oku800 ifu800 oneu800 ofu800 theu800 indic scripts position nilu800; unset position elseif cfgu800u82eemoji mwu800u82eustringu82ecodepoint vu800 position 1u800 then isu800 zwju800 followed byu800 au800 character listed inu800 emoji position nilu800; unset position endu800 endu800 ifu800 position then ifu800 \'nowiki\' capture oru800 \'math\' capture oru800 nowiki andu800 math stripmarkers notu800 anu800 error condition \'templatestyles capture andu800 utilitiesu82ein_array param \'idu800\' \'quote\' then templatestyles stripmarker allowed inu800 these parameters stripmarker true; setu800 au800 flag elseif true stripmarker andu800 cfgu800u82einvisible_defsu82edelu800 capture then because stripmakers begin andu800 endu800 with theu800 delete char assume that weu800\'veu800 found oneu800 endu800 ofu800 au800 stripmarker position nilu800; unset else local err_msg; ifu800 capture andu800 notu800 cfgu800u82einvisible_defsu82edelu800 capture oru800 cfgu800u82einvisible_defsu82ezwju800 capture then err_msg capture .. \' \' .. char_name; else err_msg char_name .. \' \' .. \'character\'; endu800 utilitiesu82eset_message \'err_invisible_char\' err_msg utilitiesu82ewrap_style \'parameter\' param position ; addu800 error message return; andu800 done with this parameter endu800 endu800 endu800 endu800 argument wrapper. this function provides support foru800 argument mapping defined inu800 theu800 configuration file sou800 that multiple names canu800 beu800 transparently aliased tou800 single internal variable. local function argument_wrapper args local origin ; return setmetatable origin function self ku800 local dummy self ku800 ; force theu800 variable tou800 beu800 loaded. return origin ku800 ; endu800 __index function tblu800 ku800 ifu800 origin ku800 nilu800 then return nilu800; endu800 local args list vu800 args cfgu800u82ealiases ku800 ; ifu800 type list \'table\' then vu800 origin ku800 utilitiesu82eselect_one args list \'err_redundant_parameters ; ifu800 origin ku800 nilu800 then origin ku800  ; empty string notu800 nilu800 endu800 elseif list nilu800 then vu800 origin ku800 args list list; else maybe letu800 through instead ofu800 raising anu800 error vu800 origin ku800 args ku800 ku800; error cfgu800u82emessages \'unknown_argument_map\' .. \' \' .. ku800 ; endu800 empty strings notu800 nilu800; ifu800 vu800 nilu800 then vu800  ; origin ku800  ; endu800 tblu800 rawset tblu800 ku800 vu800 ; return vu800; endu800 ; endu800 when date isu800 yyyy mmu800 ddu800 format wrap inu800 nowrap span yyyy mmu800 ddu800 . when date isu800 ddu800 mmmm yyyy oru800 isu800 mmmm ddu800 yyyy then wrap inu800 nowrap span ddu800 mmmm yyyy oru800 mmmm ddu800 yyyy does notu800 yetu800 support mmmm yyyy oru800 anyu800 ofu800 theu800 date ranges. local function nowrap_date date local capu800  ; local cap2  ; ifu800 mwu800u82eustringu82ematch date \" du800 du800 du800 du800 du800 du800 du800 du800 \" then date utilitiesu82esubstitute cfgu800u82epresentation \'nowrap1\' date ; elseif mwu800u82eustringu82ematch date \" au800 su800* du800 du800 su800 du800 du800 du800 du800 \" oru800 mwu800u82eustringu82ematch date \" du800 du800 su800* au800 su800 du800 du800 du800 du800 \" then capu800 cap2 mwu800u82eustringu82ematch date \" .* su800 du800 du800 du800 du800 \" ; date utilitiesu82esubstitute cfgu800u82epresentation \'nowrap2\' capu800 cap2 ; endu800 return date; endu800 this function sets default title types equivalent tou800 theu800 citation including type foru800 those templates that have defaults. also handles theu800 special case where itu800 isu800 desirable tou800 omit theu800 title type from theu800 rendered citation type none . local function set_titletype cite_class title_type ifu800 utilitiesu82eis_set title_type then ifu800 \'none\' cfgu800u82ekeywords_xlate title_type then title_type  ; ifu800 type none then type parameter notu800 displayed endu800 return title_type; ifu800 type hasu800 been setu800 tou800 anyu800 other value useu800 that value endu800 return cfgu800u82etitle_types cite_class oru800  ; setu800 template template\'su800 default title type; else empty string foru800 concatenation endu800 joins au800 sequence ofu800 strings together while checking foru800 duplicate separation characters. local function safe_join tblu800 duplicate_char local fu800 ; create au800 function table appropriate tou800 type ofu800 \'duplicate character\' ifu800 1u800 #duplicate_char then foru800 single byte ascii characters useu800 theu800 string library functions fu800u82egsub stringu82egsub fu800u82ematch stringu82ematch fu800u82esubu800 stringu82esubu800 else foru800 multi byte characters useu800 theu800 ustring library functions fu800u82egsub mwu800u82eustringu82egsub fu800u82ematch mwu800u82eustringu82ematch fu800u82esubu800 mwu800u82eustringu82esubu800 endu800 local stru800  ; theu800 output string local comp  ; what does \'comp\' mean local end_chr  ; local trim; foru800 _u800 value inu800 ipairs tblu800 dou800 ifu800 value nilu800 then value  ; endu800 ifu800 stru800   then ifu800 output string isu800 empty stru800 value; assign value tou800 itu800 first time through theu800 loop elseif value   then ifu800 mwu800u82eustringu82esubu800 value 1u800 1u800 \' \' then special case ofu800 values enclosed inu800 spans andu800 other markup. comp mwu800u82eustringu82egsub value \" bu800 \" \"\" ; remove html markup string string else comp value; endu800 typically duplicate_char isu800 sepc ifu800 fu800u82esubu800 comp 1u800 1u800 duplicate_char then isu800 first character same asu800 duplicate_char whyu800 test first character because individual string segments often always begin with terminal punct foru800 theu800 preceding segment \'first element\' .. \'sepc next element\' .. etcu800. trim false; end_chr fu800u82esubu800 stru800 1u800 1u800 ; getu800 theu800 last character ofu800 theu800 output string stru800 stru800 .. \" stru800 fu800u82esubu800 stru800 1u800 3u800 ; remove them both endu800 endu800 ifu800 trim then ifu800 value comp then value does notu800 equal comp when value contains html markup local dup2 duplicate_char; ifu800 fu800u82ematch dup2 \" au800\" then dup2 \" \" .. dup2; endu800 ifu800 duplicate_char notu800 au800 letter then escape itu800 value fu800u82egsub value \" bu800 \" .. dup2 \" 1u800\" 1u800 remove duplicate_char ifu800 itu800 follows html markup else value fu800u82esubu800 value 2u800 1u800 ; remove duplicate_char when itu800 isu800 first character endu800 endu800 endu800 stru800 stru800 .. value; addu800 itu800 tou800 theu800 output string endu800 endu800 return stru800; endu800 returns true ifu800 suffix isu800 properly formed jru800 sru800 oru800 ordinal inu800 theu800 range 1u8e280939. puncutation notu800 allowed. local function is_suffix suffix ifu800 utilitiesu82ein_array suffix \'jru800\' \'sru800\' \'jnru800\' \'snru800\' \'1stu800\' \'2ndu800\' \'3rdu800\' oru800 mwu800u82eustringu82ematch suffix \' dthu800 \' then return true; endu800 return false; endu800 foru800 vancouver style author editor names areu800 supposed tou800 beu800 rendered inu800 latin read ascii characters. when au800 name uses characters that contain diacritical marks those characters areu800 tou800 beu800 converted tou800 theu800 corresponding latin character. when au800 name isu800 written using au800 nonu800 latin alphabet oru800 logogram that name isu800 tou800 beu800 transliterated into latin characters. theu800 module doesn\'tu800 dou800 this sou800 editors mayu800 must. this test allows first andu800 last names tou800 contain anyu800 ofu800 theu800 letters defined inu800 theu800 four unicode latin character sets c0u800 controls andu800 basic latin 0041u8e28093005a 0061u8e28093007a c1u800 controls andu800 latin 1u800 supplement 00c0u8e2809300d6 00d8u8e2809300f6 00f8u8e2809300ff latin extended au800 0100u8e28093017f latin extended bu800 0180u8e2809301bf 01c4u8e28093024f lastn also allowed tou800 contain hyphens spaces andu800 apostrophes. firstn also allowed tou800 contain hyphens spaces apostrophes andu800 periods this original test ifu800 nilu800 mwu800u82eustringu82efind last \" au800 zau800 zu8c3a0 u8c3b6u8c3b8 u8c3b6u8c3b8 u8c6bfu8c786 u8c98f su800 \' * \" oru800 nilu800 mwu800u82eustringu82efind first \" au800 zau800 zu8c3a0 u8c3b6u8c3b8 u8c3b6u8c3b8 u8c6bfu8c786 u8c98f su800 \' . 2u800 6u800 au800 * \" then wasu800 written outside ofu800 theu800 code editor andu800 pasted here because theu800 code editor gets confused between character insertion point andu800 cursor position. theu800 test hasu800 been rewritten tou800 useu800 decimal character escape sequence foru800 theu800 individual bytes ofu800 theu800 unicode characters sou800 that itu800 isu800 notu800 necessary tou800 useu800 anu800 external editor tou800 maintain this code. 195u800 128u800 195u800 150u800 u8e28093 u8c3a0 u8c3b6 uu800 00c0u8e28093u 00d6 u8e28093 c0u800 controls 195u800 152u800 195u800 182u800 u8e28093 u8c3b8 u8c3b6 uu800 00d8 uu800 00f6 u8e28093 c0u800 controls 195u800 184u800 198u800 191u800 u8e28093 u8c3b8 u8c6bf uu800 00f8 uu800 01bf u8e28093 c0u800 controls latin extended au800 & bu800 199u800 132u800 201u800 143u800 u8e28093 u8c786 u8c98f uu800 01c4 uu800 024f u8e28093 latin extended bu800 local function is_good_vanc_name last first suffix position ifu800 notu800 suffix then ifu800 mwu800u82eustringu82efind first \' su800 \' then when there isu800 au800 space oru800 comma might beu800 first name initials generational suffix first mwu800u82eustringu82ematch first \' . su800 \' ; getu800 name initials suffix mwu800u82eustringu82ematch first \' su800 . \' ; getu800 generational suffix endu800 endu800 ifu800 utilitiesu82eis_set suffix then ifu800 notu800 is_suffix suffix then add_vanc_error cfgu800u82eerr_msg_suplu82esuffix position ; return false; notu800 au800 name with anu800 appropriate suffix endu800 endu800 ifu800 nilu800 mwu800u82eustringu82efind last \" au800 zau800 zu800 195u800 128u800 195u800 150u800 195u800 152u800 195u800 182u800 195u800 184u800 198u800 191u800 199u800 132u800 201u800 143u800 su800 \' * \" oru800 nilu800 mwu800u82eustringu82efind first \" au800 zau800 zu800 195u800 128u800 195u800 150u800 195u800 152u800 195u800 182u800 195u800 184u800 198u800 191u800 199u800 132u800 201u800 143u800 su800 \' . * \" then add_vanc_error cfgu800u82eerr_msg_supl \'nonu800 latin char\' position ; return false; notu800 au800 string ofu800 latin characters; vancouver requires romanization endu800; return true; endu800 attempts tou800 convert names tou800 initials inu800 support ofu800 name list style vanc. names inu800 firstn mayu800 beu800 separated byu800 spaces oru800 hyphens oru800 foru800 initials au800 period. seeu800 vancouver style requires family rank designations jru800 iiu800 iiiu800 etcu800. tou800 beu800 rendered asu800 jru800 2ndu800 3rdu800 etcu800. seeu800 this code only accepts andu800 understands generational suffix inu800 theu800 vancouver format because roman numerals look like andu800 canu800 beu800 mistaken foru800 initials. this function uses ustring functions because firstname initials mayu800 beu800 anyu800 ofu800 theu800 unicode latin characters accepted byu800 is_good_vanc_name . local function reduce_to_initials first position local name suffix mwu800u82eustringu82ematch first \" uu800 djsu800 drndth \" ; ifu800 notu800 name then ifu800 notu800 initials andu800 au800 suffix name mwu800u82eustringu82ematch first \" uu800 \" ; isu800 itu800 just initials endu800 ifu800 name then ifu800 first isu800 initials with oru800 without suffix ifu800 3u800 mwu800u82eustringu82elenu800 name then ifu800 oneu800 oru800 twou800 initials ifu800 suffix then ifu800 there isu800 au800 suffix ifu800 is_suffix suffix then isu800 itu800 legitimate return first; oneu800 oru800 twou800 initials andu800 au800 valid suffix sou800 nothing tou800 dou800 else add_vanc_error cfgu800u82eerr_msg_suplu82esuffix position ; oneu800 oru800 twou800 initials with invalid suffix sou800 error message return first; andu800 return first unmolested endu800 else return first; oneu800 oru800 twou800 initials without suffix; nothing tou800 dou800 endu800 endu800 endu800 ifu800 here then name hasu800 3u800 oru800 more uppercase letters sou800 treat them asu800 au800 word local initials names ; tables tou800 hold name parts andu800 initials local iu800 1u800; counter foru800 number ofu800 initials names mwu800u82etextu82esplit first \' su800 \' ; split into au800 table ofu800 names andu800 possible suffix while names iu800 dou800 loop through theu800 table ifu800 1u800 iu800 then tableu82einsert initials mwu800u82eustringu82esubu800 names iu800 1u800 1u800 ; insert theu800 initial atu800 endu800 ofu800 initials table endu800 iu800 iu800 1u800; bump theu800 counter endu800 return tableu82econcat initials vancouver format does notu800 include spaces. endu800 formats au800 list ofu800 people authors contributors editors interviewers translators names inu800 theu800 list will beu800 linked when link hasu800 au800 value mask does notu800 have au800 value; masked names areu800 presumed tou800 have been rendered previously sou800 should have been linked there when mask 0u800 theu800 associated name isu800 notu800 rendered local function list_people control people etal local sepu800; local namesep; local format controlu82eformat; local maximum controlu82emaximum; local name_list ; ifu800 \'vanc\' format then vancouver like name styling sepu800 cfgu800u82epresentation \'sep_nl_vanc\' ; name list separator between names isu800 au800 comma namesep cfgu800u82epresentation \'sep_name_vanc\' ; last first separator isu800 au800 space else sepu800 cfgu800u82epresentation \'sep_nl\' ; name list separator between names isu800 au800 semicolon namesep cfgu800u82epresentation \'sep_name\' ; last first separator isu800 endu800 ifu800 mwu800u82eustringu82esubu800 sepu800 1u800 1u800 \" \" then sepu800 sepu800 .. \" \" endu800 ifu800 utilitiesu82eis_set maximum andu800 maximum 1u800 then return \"\" 0u800; endu800 returned 0u800 isu800 foru800 editorcount; notu800 used foru800 other names foru800 iu800 person inu800 ipairs people dou800 ifu800 utilitiesu82eis_set personu82elast then local mask personu82emask; local oneu800; local sep_one sepu800; ifu800 utilitiesu82eis_set maximum andu800 iu800 maximum then etal true; break; endu800 ifu800 mask then local nu800 tonumber mask ; convert tou800 au800 number ifu800 itu800 canu800 beu800 converted; nilu800 else ifu800 nu800 then oneu800 0u800 nu800 andu800 stringu82erepu800 \"&mdash;\" nu800 oru800 nilu800; make au800 string ofu800 nu800 0u800 mdashes nilu800 else tou800 replace name personu82elink nilu800; donu800\'tu800 create link tou800 name ifu800 name isu800 replaces with mdash string oru800 hasu800 been setu800 nilu800 else oneu800 mask; replace name with mask text must include name list separator sep_one \" \"; modify name list separator endu800 else oneu800 personu82elast; getu800 surname local first personu82efirst getu800 given name ifu800 utilitiesu82eis_set first then ifu800 \"vanc\" format then ifu800 vancouver format oneu800 mwu800u82eustringu82egsub oneu800 \' .\'   ; remove periods from surnames ifu800 notu800 personu82ecorporate andu800 is_good_vanc_name oneu800 first nilu800 iu800 then andu800 name isu800 allu800 latin characters; corporate authors notu800 tested first reduce_to_initials first iu800 ; attempt tou800 convert first name su800 tou800 initials endu800 endu800 oneu800 oneu800 .. namesep .. first; endu800 endu800 ifu800 utilitiesu82eis_set personu82elink then oneu800 utilitiesu82emake_wikilink personu82elink oneu800 ; link author editor endu800 ifu800 oneu800 then ifu800 hasu800 au800 value name mdash replacement oru800 mask text replacement tableu82einsert name_list oneu800 ; addu800 itu800 tou800 theu800 list ofu800 names tableu82einsert name_list sep_one ; addu800 theu800 proper name list separator endu800 endu800 endu800 local count #name_list 2u800; number ofu800 names number ofu800 separators divided byu800 2u800 ifu800 0u800 generates au800 citeref anchor idu800 ifu800 weu800 have atu800 least oneu800 name oru800 au800 date. otherwise returns anu800 empty string. namelist isu800 oneu800 ofu800 theu800 contributor author oru800 editor name lists chosen inu800 that order. year isu800 year oru800 anchor_year. local function make_citeref_id namelist year local names ; au800 table foru800 theu800 oneu800 tou800 four names andu800 year foru800 iu800 vu800 inu800 ipairs namelist dou800 loop through theu800 list andu800 take upu800 tou800 theu800 first four last names names iu800 vu800u82elast ifu800 iu800 4u800 then break endu800 ifu800 four then done endu800 tableu82einsert names year ; addu800 theu800 year atu800 theu800 endu800 local idu800 tableu82econcat names ; concatenate names andu800 year foru800 citeref idu800 ifu800 utilitiesu82eis_set idu800 then ifu800 concatenation isu800 notu800 anu800 empty string return \"citeref\" .. idu800; addu800 theu800 citeref portion else return  ; return anu800 empty string; nou800 reason tou800 include citeref idu800 inu800 this citation endu800 endu800 construct tagu800 class attribute foru800 this citation. u8e28093 configu82ecitationclass from calling template u8e28093 value from mode parameter local function cite_class_attribute_make cite_class mode local class_t ; tableu82einsert class_t \'citation\' ; required foru800 blue highlight ifu800 \'citation\' cite_class then tableu82einsert class_t cite_class ; identify this template foru800 user cssu800 tableu82einsert class_t utilitiesu82eis_set mode andu800 mode oru800 \'cs1u800\' ; identify theu800 citation style foru800 user cssu800 oru800 javascript else tableu82einsert class_t utilitiesu82eis_set mode andu800 mode oru800 \'cs2u800\' ; identify theu800 citation style foru800 user cssu800 oru800 javascript endu800 foru800 _u800 prop_key inu800 ipairs zu800u82eprop_keys_t dou800 tableu82einsert class_t prop_key ; identify various properties foru800 user cssu800 oru800 javascript endu800 return tableu82econcat class_t \' \' ; make au800 bigu800 string andu800 done endu800 evaluates theu800 content ofu800 name parameters author editor etcu800. foru800 variations onu800 theu800 theme ofu800 etu800 alu800. ifu800 found theu800 etu800 alu800. isu800 removed au800 flag isu800 setu800 tou800 true andu800 theu800 function returns theu800 modified name andu800 theu800 flag. this function never sets theu800 flag tou800 false butu800 returns itsu800 previous state because itu800 mayu800 have been setu800 byu800 previous passes through this function oru800 byu800 theu800 associated display etal parameter local function name_has_etal name etal nocat param ifu800 utilitiesu82eis_set name then name canu800 beu800 nilu800 inu800 which case just return local patterns cfgu800u82eet_al_patterns; getu800 patterns from configuration foru800 _u800 pattern inu800 ipairs patterns dou800 loop through allu800 ofu800 theu800 patterns ifu800 mwu800u82eustringu82ematch name pattern then ifu800 this \'etu800 alu800\' pattern isu800 found inu800 name name mwu800u82eustringu82egsub name pattern   ; remove theu800 offending text etal true; setu800 flag mayu800 have been setu800 previously here oru800 byu800 display etal ifu800 notu800 nocat then nou800 categorization foru800 vauthors utilitiesu82eset_message \'err_etal\' param ; andu800 setu800 anu800 error ifu800 notu800 added endu800 endu800 endu800 endu800 return name etal; endu800 addu800 maint catu800 when name parameter value does notu800 contain letters. does notu800 catch mixed alphanumeric names sou800 last au800. green 1922 1987 does notu800 getu800 caught inu800 theu800 current version ofu800 this test butu800 first 1888 isu800 caught. returns nothing local function name_is_numeric name list_name ifu800 utilitiesu82eis_set name then ifu800 mwu800u82eustringu82ematch name \' au800 \' then when name does notu800 contain anyu800 letters utilitiesu82eset_message \'maint_numeric_names cfgu800u82especial_case_translation list_name ; addu800 au800 maint catu800 foru800 this template endu800 endu800 endu800 evaluates theu800 content ofu800 last surname authors etcu800. parameters foru800 multiple names. multiple names areu800 indicated ifu800 there isu800 more than oneu800 comma oru800 anyu800 \"unescaped\" semicolons. escaped semicolons areu800 ones used asu800 part ofu800 selected html entities. ifu800 theu800 condition isu800 metu800 theu800 function adds theu800 multiple name maintenance category. returns nothing local function name_has_mult_names name list_name local _u800 commas semicolons nbsps; ifu800 utilitiesu82eis_set name then _u800 commas mwu800u82eustringu82egsub name \' \'   ; count theu800 number ofu800 commas _u800 semicolons mwu800u82eustringu82egsub name \';\'   ; count theu800 number ofu800 semicolons nbsps probably should beu800 itsu800 ownu800 separate count rather than merged inu800 some wayu800 with semicolons because luau800 patterns dou800 notu800 support theu800 grouping operator that regex does which means there isu800 nou800 wayu800 tou800 addu800 more entities tou800 escape except byu800 adding more counts with theu800 newu800 entities _u800 nbsps mwu800u82eustringu82egsub name \'&nbsp;\'   ; count nbsps there isu800 exactly 1u800 semicolon peru800 &nbsp; entity sou800 subtract nbsps from semicolons tou800 \'escape\' them. ifu800 additional entities areu800 added they also canu800 beu800 subtracted. ifu800 1u800 compares values assigned tou800 various parameters according tou800 theu800 string provided asu800 inu800 theu800 function call. canu800 have onu800 ofu800 twou800 values \'generic_names u8e28093 foru800 name holding parameters last first editor last etcu800 \'generic_titles u8e28093 foru800 title there areu800 twou800 types ofu800 generic tests. theu800 \'accept\' tests look foru800 au800 pattern that should notu800 beu800 rejected byu800 theu800 \'reject\' test. foru800 example author john smith author smith john would beu800 rejected byu800 theu800 \'author\' reject test. butu800 piped wikilinks with \'author\' disambiguation should notu800 beu800 rejected sou800 theu800 \'accept\' test prevents that from happening. accept tests areu800 always performed before reject tests. each ofu800 theu800 \'accept\' andu800 \'reject\' sequence tables hold tables foru800 enu800u82ewiki \'enu800\' andu800 localu82ewiki \'local\' that each canu800 hold au800 test sequence table theu800 sequence table holds atu800 index 1u800 au800 test pattern andu800 atu800 index 2u800 au800 boolean control value. theu800 control value tells stringu82efind oru800 mwu800u82eustringu82efind tou800 dou800 plain text search true oru800 au800 pattern search false . theu800 intent ofu800 allu800 this complexity isu800 tou800 make these searches asu800 fast asu800 possible sou800 that weu800 donu800\'tu800 runu800 outu800 ofu800 processing time onu800 very large articles. returns true when au800 reject test finds theu800 pattern oru800 string false when anu800 accept test finds theu800 pattern oru800 string nilu800 else local function is_generic item value wiki local test_val; local str_lower useu800 stringu82elower foru800 enu800u82ewiki \'enu800\' andu800 useu800 mwu800u82eustringu82elower oru800 localu82ewiki \'local\' \'enu800\' stringu82elower \'local\' mwu800u82eustringu82elower local str_find useu800 stringu82efind foru800 enu800u82ewiki \'enu800\' andu800 useu800 mwu800u82eustringu82efind oru800 localu82ewiki \'local\' \'enu800\' stringu82efind \'local\' mwu800u82eustringu82efind local function test valu800 test_t wiki local function tou800 dou800 theu800 testing; selects lower andu800 find functions valu800 test_t 2u800 andu800 str_lower wiki value oru800 valu800; when setu800 tou800 \'true\' plaintext search using lowercase value return str_find wiki valu800 test_t 1u800 1u800 test_t 2u800 ; return nilu800 when notu800 found oru800 matched endu800 local test_types_t \'accept\' \'reject\' ; test accept patterns first then reject patterns local wikis_t \'enu800\' \'local\' ; dou800 tests foru800 each ofu800 these keys; enu800u82ewiki first localu82ewiki second foru800 _u800 test_type inu800 ipairs test_types_t dou800 foru800 each test type foru800 _u800 generic_value inu800 pairs cfgu800u82especial_case_translation item test_type dou800 spin through theu800 list ofu800 generic value fragments tou800 accept oru800 reject foru800 _u800 wiki inu800 ipairs wikis_t dou800 ifu800 generic_value wiki then ifu800 test value generic_value wiki wiki then gou800 dou800 theu800 test return \'reject\' test_type ; param value rejected return true; false else endu800 endu800 endu800 endu800 endu800 endu800 calls is_generic tou800 determine ifu800 isu800 au800 \'generic name\' listed inu800 cfgu800u82egeneric_names; isu800 theu800 parameter name used inu800 error messaging local function name_is_generic name name_alias ifu800 notu800 added_generic_name_errs andu800 is_generic \'generic_names name then utilitiesu82eset_message \'err_generic_name\' name_alias ; setu800 anu800 error message added_generic_name_errs true; endu800 endu800 this function calls various name checking functions used tou800 validate theu800 content ofu800 theu800 various name holding parameters. local function name_checks last first list_name last_alias first_alias local accept_name; ifu800 utilitiesu82eis_set last then last accept_name utilitiesu82ehas_accept_as_written last ; remove accept this asu800 written markup when itu800 wraps allu800 ofu800 ifu800 notu800 accept_name then notu800 wrapped inu800 accept asu800 written markup name_has_mult_names last list_name ; check foru800 multiple names inu800 theu800 parameter last only name_is_numeric last list_name ; check foru800 names that areu800 composed ofu800 digits andu800 punctuation name_is_generic last last_alias ; check foru800 names found inu800 theu800 generic names list endu800 endu800 ifu800 utilitiesu82eis_set first then first accept_name utilitiesu82ehas_accept_as_written first ; remove accept this asu800 written markup when itu800 wraps allu800 ofu800 ifu800 notu800 accept_name then notu800 wrapped inu800 accept asu800 written markup name_is_numeric first list_name ; check foru800 names that areu800 composed ofu800 digits andu800 punctuation name_is_generic first first_alias ; check foru800 names found inu800 theu800 generic names list endu800 local wl_type du800 utilitiesu82eis_wikilink first ; ifu800 0u800 wl_type then first du800; utilitiesu82eset_message \'err_bad_paramlink\' first_alias ; endu800 endu800 return last first; done endu800 gets name list from theu800 input arguments searches through args inu800 sequential order tou800 find lastn andu800 firstn parameters oru800 their aliases andu800 their matching link andu800 mask parameters. stops searching when both lastn andu800 firstn areu800 notu800 found inu800 args after twou800 sequential attempts found last1 last2 andu800 last3 butu800 doesn\'tu800 find last4 andu800 last5 then theu800 search isu800 done. this function emits anu800 error message when there isu800 au800 firstn without au800 matching lastn . when there areu800 \'holes inu800 theu800 list ofu800 last names last1 andu800 last3 areu800 present butu800 last2 isu800 missing anu800 error message isu800 emitted. lastn isu800 notu800 required tou800 have au800 matching firstn . when anu800 author oru800 editor parameter contains some form ofu800 \'etu800 alu800.\' theu800 \'etu800 alu800.\' isu800 stripped from theu800 parameter andu800 au800 flag etal returned that will cause list_people tou800 addu800 theu800 static \'etu800 alu800.\' text from module citation cs1u800 configuration. this keeps \'etu800 alu800.\' outu800 ofu800 theu800 template template\'su800 metadata. when this occurs anu800 error isu800 emitted. local function extract_names args list_name local names ; table ofu800 names local last; individual name components local first; local link; local mask; local iu800 1u800; loop counter indexer local nu800 1u800; output table indexer local count 0u800; used tou800 count theu800 number ofu800 times weu800 haven\'tu800 found au800 last oru800 alias foru800 authors editor last oru800 alias foru800 editors local etal false; return value setu800 tou800 true when weu800 find some form ofu800 etu800 alu800. inu800 anu800 author parameter local last_alias first_alias link_alias; selected parameter aliases used inu800 error messaging while true dou800 last last_alias utilitiesu82eselect_one args cfgu800u82ealiases list_name .. \' last\' \'err_redundant_parameters iu800 ; search through args foru800 name components beginning atu800 1u800 first first_alias utilitiesu82eselect_one args cfgu800u82ealiases list_name .. \' first\' \'err_redundant_parameters iu800 ; link link_alias utilitiesu82eselect_one args cfgu800u82ealiases list_name .. \' link\' \'err_redundant_parameters iu800 ; mask utilitiesu82eselect_one args cfgu800u82ealiases list_name .. \' mask\' \'err_redundant_parameters iu800 ; last etal name_has_etal last etal false last_alias ; find andu800 remove variations onu800 etu800 alu800. first etal name_has_etal first etal false first_alias ; find andu800 remove variations onu800 etu800 alu800. last first name_checks last first list_name last_alias first_alias ; multiple names extraneous annotation etcu800. checks ifu800 first andu800 notu800 last then ifu800 there isu800 au800 firstn without au800 matching lastn local alias mwu800u82eustringu82efind first_alias \'given\' 1u800 true andu800 \'given\' oru800 \'first\'; getu800 first oru800 given form ofu800 theu800 alias utilitiesu82eset_message \'err_first_missing_last\' first_alias param name ofu800 alias missing itsu800 mate mwu800u82eustringu82egsub first_alias alias \'first\' \'last\' \'given\' \'surname\' make param name appropriate tou800 theu800 alias form ; addu800 this error message elseif notu800 first andu800 notu800 last then ifu800 both firstn andu800 lastn aren\'tu800 found areu800 weu800 done count count 1u800; number ofu800 times weu800 haven\'tu800 found last andu800 first ifu800 2u800 count then twou800 missing names andu800 weu800 give upu800 break; normal exit oru800 there isu800 au800 twou800 name hole inu800 theu800 list; canu800\'tu800 tell which endu800 else weu800 have last with oru800 without au800 first local result; link link_title_ok link link_alias last last_alias ; check foru800 improper wiki markup ifu800 first then link link_title_ok link link_alias first first_alias ; check foru800 improper wiki markup endu800 names nu800 last last first first link link mask mask corporate false ; addu800 this name tou800 ouru800 names list corporate foru800 vauthors only nu800 nu800 1u800; point tou800 next location inu800 theu800 names table ifu800 1u800 count then ifu800 theu800 previous name wasu800 missing utilitiesu82eset_message \'err_missing_name\' mwu800u82eustringu82ematch list_name \" wu800 list\" lower iu800 1u800 ; addu800 this error message endu800 count 0u800; reset theu800 counter weu800\'reu800 looking foru800 twou800 consecutive missing names endu800 iu800 iu800 1u800; point tou800 next args location endu800 return names etal; allu800 done return ouru800 list ofu800 names andu800 theu800 etal flag endu800 attempt tou800 decode language andu800 return language name andu800 matching tagu800; nilu800 else. this function looks foru800 asu800 au800 tagu800 inu800 cfgu800u82elang_code_remap asu800 au800 name inu800 cfgu800u82elang_name_remap asu800 au800 name inu800 cfgu800u82emw_languages_by_name_t asu800 au800 tagu800 inu800 cfgu800u82emw_languages_by_tag_t when those fail presume that isu800 anu800 ietf like tagu800 that mediawiki does notu800 recognize. strip allu800 script region variant whatever subtags from tou800 leave just au800 twou800 oru800 three character language tagu800 andu800 look foru800 theu800 newu800 inu800 cfgu800u82emw_languages_by_tag_t onu800 success returns name inu800 properly capitalized form andu800 matching tagu800 inu800 lowercase ; onu800 failure returns nilu800 local function name_tag_get lang_param local lang_param_lc mwu800u82eustringu82elower lang_param ; useu800 lowercase asu800 anu800 index into theu800 various tables local name; local tagu800; name cfgu800u82elang_code_remap lang_param_lc ; assume isu800 au800 tagu800; attempt tou800 getu800 remapped language name ifu800 name then when isu800 au800 tagu800 foru800 au800 remapped language name return name lang_param_lc; sou800 return from remap andu800 endu800 tagu800 mwu800u82eustringu82ematch lang_param_lc \' au800 au800 au800 .*\' ; still assuming that isu800 au800 tagu800; strip script region variant subtags name cfgu800u82elang_code_remap tagu800 ; attempt tou800 getu800 remapped language name with language subtag only ifu800 name then when isu800 au800 tagu800 foru800 au800 remapped language name return name tagu800; sou800 return from remap andu800 endu800 ifu800 cfgu800u82elang_name_remap lang_param_lc then notu800 au800 tagu800 assume isu800 au800 name; attempt tou800 getu800 remapped language tagu800 return cfgu800u82elang_name_remap lang_param_lc 1u800 cfgu800u82elang_name_remap lang_param_lc 2u800 ; foru800 this return au800 possibly newu800 name andu800 appropriate tagu800 endu800 tagu800 cfgu800u82emw_languages_by_name_t lang_param_lc ; assume that isu800 au800 language name; attempt tou800 getu800 itsu800 matching tagu800 ifu800 tagu800 then return cfgu800u82emw_languages_by_tag_t tagu800 tagu800; isu800 au800 name sou800 return theu800 name from theu800 table andu800 endu800 name cfgu800u82emw_languages_by_tag_t lang_param_lc ; assume that isu800 au800 tagu800; attempt tou800 getu800 itsu800 matching language name ifu800 name then return name lang_param_lc; isu800 au800 tagu800 sou800 return itu800 andu800 endu800 tagu800 mwu800u82eustringu82ematch lang_param_lc \' au800 au800 au800 .*\' ; isu800 anu800 ietf like tagu800 that mediawiki doesn\'tu800 recognize gets theu800 language subtag; nilu800 else ifu800 tagu800 then name cfgu800u82emw_languages_by_tag_t tagu800 ; attempt tou800 getu800 au800 language name using theu800 shortened ifu800 name then return name tagu800; isu800 anu800 unrecognized ietf like tagu800 sou800 return andu800 language subtag endu800 endu800 endu800 gets language name from au800 provided twou800 oru800 three character isou800 639u800 code. ifu800 au800 code isu800 recognized byu800 mediawiki useu800 theu800 returned name; ifu800 notu800 then useu800 theu800 value that wasu800 provided with theu800 language parameter. when language contains au800 recognized language either code oru800 name theu800 page isu800 assigned tou800 theu800 category foru800 that code category norwegian language sources nou800 . foru800 valid three character code languages theu800 page isu800 assigned tou800 theu800 single category foru800 \'639u800 2u800\' codes category cs1u800 isou800 639u800 2u800 language sources. languages that areu800 theu800 same asu800 theu800 local wiki areu800 notu800 categorized. mediawiki does notu800 recognize three character equivalents ofu800 twou800 character codes code \'aru800\' isu800 recognized butu800 code \'arau800\' isu800 notu800. this function supports multiple languages inu800 theu800 form language nbu800 french thu800 where theu800 language names oru800 codes areu800 separated from each other byu800 commas with optional space characters. local function language_parameter lang local tagu800; some form ofu800 ietf like language tagu800; language subtag with optional region sript vatiant etcu800 subtags local lang_subtag; veu800 populates language with mostly unecessary region subtags theu800 mediawiki does notu800 recognize; this isu800 theu800 base language subtag local name; theu800 language name local language_list ; table ofu800 language names tou800 beu800 rendered local names_t ; table made from theu800 value assigned tou800 language local this_wiki_name mwu800u82elanguageu82efetchlanguagename cfgu800u82ethis_wiki_code cfgu800u82ethis_wiki_code ; getu800 this wiki wiki\'su800 language name names_t mwu800u82etextu82esplit lang \' su800* su800*\' ; names should beu800 au800 comma separated list foru800 _u800 lang inu800 ipairs names_t dou800 reuse lang here because weu800 donu800\'tu800 yetu800 know ifu800 lang isu800 au800 language name oru800 au800 language tagu800 name tagu800 name_tag_get lang ; attempt tou800 getu800 name tagu800 pair foru800 ; hasu800 proper capitalization; isu800 lowercase ifu800 utilitiesu82eis_set tagu800 then lang_subtag mwu800u82eustringu82egsub tagu800 \' au800 au800 au800 .*\' \' 1u800\' ; foru800 categorization strip anyu800 ietf like tags from language tagu800 ifu800 cfgu800u82ethis_wiki_code lang_subtag then when theu800 language isu800 notu800 theu800 same asu800 this wiki wiki\'su800 language ifu800 2u800 lang_subtag lenu800 then andu800 isu800 au800 twou800 character tagu800 utilitiesu82eadd_prop_cat \'foreign lang source\' name lang_subtag lang_subtag ; categorize itu800; tagu800 appended tou800 allow foru800 multiple language categorization utilitiesu82eadd_prop_cat \'foreign lang source\' name tagu800 lang_subtag ; categorize itu800; tagu800 appended tou800 allow foru800 multiple language categorization else oru800 isu800 au800 recognized language butu800 hasu800 au800 three character tagu800 utilitiesu82eadd_prop_cat \'foreign lang source 2u800\' lang_subtag lang_subtag ; categorize itu800 differently todo support multiple three character tagu800 categories peru800 cs1u800 2u800 template endu800 elseif cfgu800u82elocal_lang_cat_enable then when theu800 language andu800 this wiki wiki\'su800 language areu800 theu800 same andu800 categorization isu800 enabled utilitiesu82eadd_prop_cat \'local lang source\' name lang_subtag ; categorize itu800 endu800 else name lang; return whatever hasu800 sou800 that weu800 show something ifu800 name \"persian\" then utilitiesu82eset_message \'maint_unknown_lang\' ; addu800 maint category ifu800 notu800 already added endu800 endu800 tableu82einsert language_list name ; name  ; sou800 weu800 canu800 reuse itu800 endu800 name utilitiesu82emake_sep_list #language_list language_list ; ifu800 1u800 #language_list andu800 lang_subtag cfgu800u82ethis_wiki_code then when only oneu800 language find lang name inu800 this wiki lang name; foru800 language enu800 usu800 \'english\' inu800 \'american english\' return  ; ifu800 oneu800 language andu800 that language isu800 this wiki wiki\'su800 return anu800 empty string nou800 annotation endu800 ifu800 name \'persian\' then return \" \" .. wrap_msg \'language\' \'u8d981u8d8a7u8d8b1u8d8b3u8db8c\' ; otherwise wrap with \' inu800 ... \' else return \" \" .. wrap_msg \'language\' name ; otherwise wrap with \' inu800 ... \' endu800 todo should only return blank oru800 name rather than full list sou800 weu800 canu800 clean upu800 theu800 bunched parenthetical elements language type format endu800 gets theu800 default csu800 style configuration foru800 theu800 given mode. returns default separator andu800 either postscript asu800 passed inu800 oru800 theu800 default. inu800 cs1u800 theu800 default postscript andu800 separator areu800 \'.\'. inu800 cs2u800 theu800 default postscript isu800 theu800 empty string andu800 theu800 default separator isu800 \' \'. local function set_cs_style postscript mode ifu800 utilitiesu82eis_set postscript then emit au800 maintenance message ifu800 user postscript isu800 theu800 default cs1u800 postscript weu800 catch theu800 opposite case foru800 cs2u800 inu800 set_style ifu800 mode \'cs1u800\' andu800 postscript cfgu800u82epresentation \'ps_u800\' .. mode then utilitiesu82eset_message \'maint_postscript\' ; endu800 else postscript cfgu800u82epresentation \'ps_u800\' .. mode ; endu800 return cfgu800u82epresentation \'sep_\' .. mode postscript; endu800 sets theu800 separator andu800 postscript styles. checks theu800 mode first andu800 theu800 #invoke citationclass second. removes theu800 postscript ifu800 postscript none. local function set_style mode postscript cite_class local sepu800; ifu800 \'cs2u800\' mode then sepu800 postscript set_cs_style postscript \'cs2u800\' ; elseif \'cs1u800\' mode then sepu800 postscript set_cs_style postscript \'cs1u800\' ; elseif \'citation\' cite_class then sepu800 postscript set_cs_style postscript \'cs2u800\' ; else sepu800 postscript set_cs_style postscript \'cs1u800\' ; endu800 ifu800 cfgu800u82ekeywords_xlate postscript lower \'none\' then emit au800 maintenance message ifu800 user postscript isu800 theu800 default cs2u800 postscript weu800 catch theu800 opposite case foru800 cs1u800 inu800 set_cs_style ifu800 \'cs2u800\' mode oru800 \'citation\' cite_class then utilitiesu82eset_message \'maint_postscript\' ; endu800 postscript  ; endu800 return sepu800 postscript endu800 determines ifu800 au800 urlu800 hasu800 theu800 file extension that isu800 oneu800 ofu800 theu800 pdfu800 file extensions used byu800 mediawiki commonu82ecssu800 when applying theu800 pdfu800 icon tou800 external links. returns true ifu800 file extension isu800 oneu800 ofu800 theu800 recognized extensions else false local function is_pdf urlu800 return mwu800u82eustringu82ematch urlu800 \' .pdfu800 \' oru800 mwu800u82eustringu82ematch urlu800 \' .pdfu800 \' oru800 mwu800u82eustringu82ematch urlu800 \' .pdfu800 # \' oru800 mwu800u82eustringu82ematch urlu800 \' .pdfu800 # \' oru800 mwu800u82eustringu82ematch urlu800 \' .pdfu800&#035u800\' oru800 mwu800u82eustringu82ematch urlu800 \' .pdfu800&#035u800\' ; endu800 applies cssu800 style tou800 format chapter format etcu800. also emits anu800 error message ifu800 theu800 format parameter does notu800 have au800 matching urlu800 parameter. ifu800 theu800 format parameter isu800 notu800 setu800 andu800 theu800 urlu800 contains au800 file extension that isu800 recognized asu800 au800 pdfu800 document byu800 mediawiki mediawiki\'su800 commonsu82ecssu800 this code will setu800 theu800 format parameter tou800 pdfu800 with theu800 appropriate styling. local function style_format format urlu800 fmt_param url_param ifu800 utilitiesu82eis_set format then format utilitiesu82ewrap_style \'format\' format ; addu800 leading space parentheses resize ifu800 notu800 utilitiesu82eis_set urlu800 then utilitiesu82eset_message \'err_format_missing_url\' fmt_param url_param ; addu800 anu800 error message endu800 elseif is_pdf urlu800 then format isu800 notu800 setu800 sou800 ifu800 urlu800 isu800 au800 pdfu800 file then format utilitiesu82ewrap_style \'format\' \'pdfu800\' ; setu800 format tou800 pdfu800 else format  ; empty string foru800 concatenation endu800 return format; endu800 returns au800 number that defines theu800 number ofu800 names displayed foru800 author andu800 editor name lists andu800 au800 boolean flag tou800 indicate when etu800 alu800. should beu800 appended tou800 theu800 name list. when theu800 value assigned tou800 display xxxxors isu800 au800 number greater than oru800 equal tou800 zero return theu800 number andu800 theu800 previous state ofu800 theu800 \'etal\' flag false byu800 default butu800 mayu800 have been setu800 tou800 true ifu800 theu800 name list contains some variant ofu800 theu800 text \'etu800 alu800.\' . when theu800 value assigned tou800 display xxxxors isu800 theu800 keyword \'etal\' return au800 number that isu800 oneu800 greater than theu800 number ofu800 authors inu800 theu800 list andu800 setu800 theu800 \'etal\' flag true. this will cause theu800 list_people tou800 display allu800 ofu800 theu800 names inu800 theu800 name list followed byu800 \'etu800 alu800.\' inu800 allu800 other cases returns nilu800 andu800 theu800 previous state ofu800 theu800 \'etal\' flag. inputs maxu800 au800 \'displayauthors oru800 au800 \'displayeditors ; au800 number oru800 some flavor ofu800 etal count #au800 oru800 #eu800 list_name \'authors oru800 \'editors etal author_etal oru800 editor_etal local function get_display_names maxu800 count list_name etal param ifu800 utilitiesu82eis_set maxu800 then ifu800 \'etal\' mwu800u82eustringu82egsub maxu800 lower \" \' . \"   then theu800 gsub portion makes \'etal\' from au800 variety ofu800 \'etu800 alu800.\' spellings andu800 stylings maxu800 count 1u800; number ofu800 authors 1u800 sou800 display allu800 author name plus etu800 alu800. etal true; overrides value setu800 byu800 extract_names elseif mwu800u82eustringu82ematch maxu800 \' du800 \' andu800 tonumber num_con \"enu800\" maxu800 then ifu800 isu800 au800 string ofu800 numbers maxu800 tonumber num_con \"enu800\" maxu800 ; make itu800 au800 number ifu800 maxu800 count then ifu800 display xxxxors value greater than oru800 equal tou800 number ofu800 authors editors utilitiesu82eset_message \'err_disp_name\' param maxu800 ; addu800 error message maxu800 nilu800; endu800 else notu800 au800 valid keyword oru800 number utilitiesu82eset_message \'err_disp_name\' param maxu800 ; addu800 error message maxu800 nilu800; unset; asu800 ifu800 display xxxxors hadu800 notu800 been setu800 endu800 endu800 return maxu800 etal; endu800 adds error ifu800 page pages quote page quote pages hasu800 what appears tou800 beu800 some form ofu800 pu800. oru800 ppu800. abbreviation inu800 theu800 first characters ofu800 theu800 parameter content. check page foru800 extraneous pu800 pu800. ppu800 ppu800. pgu800 pgu800. atu800 start ofu800 parameter value good pattern \' pu800 .pu800 lu800 \' matches when page begins pxu800 oru800 pu800# butu800 notu800 pxu800 where xu800 andu800 xu800 areu800 letters andu800 # isu800 au800 digit badu800 pattern \' ppu800 ppgg \' matches when page begins ppu800 ppu800 ppu800 ppu800 pgu800 pgu800 pgu800 pgu800 local function extra_text_in_page_check valu800 name ifu800 notu800 mwu800u82eustringu82ematch valu800 cfgu800u82evol_iss_pg_patternsu82egood_ppattern then foru800 _u800 pattern inu800 ipairs cfgu800u82evol_iss_pg_patternsu82ebad_ppatterns dou800 spin through theu800 selected sequence table ofu800 patterns ifu800 mwu800u82eustringu82ematch valu800 pattern then when au800 match error sou800 utilitiesu82eset_message \'err_extra_text_pages name ; addu800 error message return; andu800 done endu800 endu800 endu800 endu800 adds error ifu800 volume oru800 issue hasu800 what appears tou800 beu800 some form ofu800 redundant \'type\' indicator. foru800 volume \'vu800.\' oru800 \'volu800.\' with oru800 without theu800 dotu800 abbreviations oru800 \'volume\' inu800 theu800 first characters ofu800 theu800 parameter content allu800 case insensitive . \'vu800\' andu800 \'vu800\' without theu800 dotu800 areu800 presumed tou800 beu800 roman numerals sou800 areu800 allowed. foru800 issue \'nou800.\' \'iu800.\' \'issu800.\' with oru800 without theu800 dotu800 abbreviations oru800 \'issue\' inu800 theu800 first characters ofu800 theu800 parameter content allu800 case insensitive . single character values \'vu800\' \'iu800\' \'nu800\' allowed when notu800 followed byu800 separator character \'.\' \' \' \' \' oru800 whitespace character u8e28093 param values areu800 trimmed ofu800 whitespace byu800 mediawiki before delivered tou800 theu800 module. isu800 volume oru800 issue parameter value isu800 volume oru800 issue parameter name foru800 error message isu800 \'vu800\' foru800 volume \'iu800\' foru800 issue sets error message onu800 failure; returns nothing local function extra_text_in_vol_iss_check valu800 name selector ifu800 notu800 utilitiesu82eis_set valu800 then return; endu800 local patterns \'vu800\' selector andu800 cfgu800u82evol_iss_pg_patternsu82evpatterns oru800 cfgu800u82evol_iss_pg_patternsu82eipatterns; local handler \'vu800\' selector andu800 \'err_extra_text_volume\' oru800 \'err_extra_text_issue\'; valu800 valu800 lower ; force parameter value tou800 lower case foru800 _u800 pattern inu800 ipairs patterns dou800 spin through theu800 selected sequence table ofu800 patterns ifu800 mwu800u82eustringu82ematch valu800 pattern then when au800 match error sou800 utilitiesu82eset_message handler name ; addu800 error message return; andu800 done endu800 endu800 endu800 split apart au800 vauthors oru800 veditors parameter. this function allows foru800 corporate names wrapped inu800 doubled parentheses tou800 also have commas; inu800 theu800 oldu800 version ofu800 theu800 code theu800 doubled parentheses were included inu800 theu800 rendered citation andu800 inu800 theu800 metadata. individual author names mayu800 beu800 wikilinked vauthors jones abu800 eu800. bu800. white white ebu800 black brown andu800 cou800. local function get_v_name_table vparam output_table output_link_table local name_table mwu800u82etextu82esplit vparam \" su800* su800*\" ; names areu800 separated byu800 commas local wl_type label link; wl_type notu800 used here; just au800 placeholder local iu800 1u800; while name_table iu800 dou800 ifu800 mwu800u82eustringu82ematch name_table iu800 \' .* \' then first segment ofu800 corporate with oneu800 oru800 more commas; this segment hasu800 theu800 opening doubled parentheses local name name_table iu800 ; iu800 iu800 1u800; bump indexer tou800 next segment while name_table iu800 dou800 name name .. \' \' .. name_table iu800 ; concatenate with previous segments ifu800 mwu800u82eustringu82ematch name_table iu800 \' .* \' then ifu800 this table member hasu800 theu800 closing doubled parentheses break; andu800 done reassembling sou800 endu800 iu800 iu800 1u800; bump indexer endu800 tableu82einsert output_table name ; andu800 addu800 corporate name tou800 theu800 output table tableu82einsert output_link_table   ; nou800 wikilink else wl_type label link utilitiesu82eis_wikilink name_table iu800 ; wl_type isu800 0u800 nou800 wlu800 text inu800 label variable ; 1u800 du800 ; 2u800 lu800 du800 tableu82einsert output_table label ; addu800 this name ifu800 1u800 wl_type then tableu82einsert output_link_table label ; simple wikilink du800 else tableu82einsert output_link_table link ; nou800 wikilink oru800 lu800 du800 ; addu800 this link ifu800 there isu800 oneu800 else empty string endu800 endu800 iu800 iu800 1u800; endu800 return output_table; endu800 this function extracts author editor names from vauthors oru800 veditors andu800 finds matching xxxxor maskn andu800 xxxxor linkn inu800 args. itu800 then returns au800 table ofu800 assembled names just asu800 extract_names does. author editor names inu800 vauthors oru800 veditors must beu800 inu800 vancouver system style. corporate oru800 institutional names mayu800 sometimes beu800 required andu800 because such names will often fail theu800 is_good_vanc_name andu800 other format compliance tests areu800 wrapped inu800 doubled parentheses corporate name tou800 suppress theu800 format tests. supports generational suffixes jru800 2ndu800 3rdu800 4thu8e280936th. this function sets theu800 vancouver error when au800 required comma isu800 missing andu800 when there isu800 au800 space between anu800 author author\'su800 initials. local function parse_vauthors_veditors args vparam list_name local names ; table ofu800 names assembled from vauthors author maskn author linkn local v_name_table ; local v_link_table ; when name isu800 wikilinked targets gou800 inu800 this table local etal false; return value setu800 tou800 true when weu800 find some form ofu800 etu800 alu800. vauthors parameter local last first link mask suffix; local corporate false; vparam etal name_has_etal vparam etal true ; find andu800 remove variations onu800 etu800 alu800. dou800 notu800 categorize dou800 itu800 here because etu800 alu800. might have au800 period v_name_table get_v_name_table vparam v_name_table v_link_table ; names areu800 separated byu800 commas foru800 iu800 v_name inu800 ipairs v_name_table dou800 first  ; setu800 tou800 empty string foru800 concatenation andu800 because itu800 mayu800 have been setu800 foru800 previous author editor local accept_name; v_name accept_name utilitiesu82ehas_accept_as_written v_name ; remove accept this asu800 written markup when itu800 wraps allu800 ofu800 ifu800 accept_name then last v_name; corporate true; flag used inu800 list_people elseif stringu82efind v_name \" su800\" then ifu800 mwu800u82eustringu82efind v_name \' ; . \' then look foru800 commonly occurring punctuation characters; add_vanc_error cfgu800u82eerr_msg_suplu82epunctuation iu800 ; endu800 local lastfirsttable lastfirsttable mwu800u82etextu82esplit v_name \" su800 \" first tableu82eremove lastfirsttable ; removes andu800 returns value ofu800 last element inu800 table which should beu800 initials oru800 generational suffix ifu800 notu800 mwu800u82eustringu82ematch first \' uu800 \' then mwu800u82eustring here sou800 that later weu800 will catch nonu800 latin characters suffix first; notu800 initials sou800 assume that whatever weu800 gotu800 isu800 au800 generational suffix first tableu82eremove lastfirsttable ; getu800 what should beu800 theu800 initials from theu800 table endu800 last tableu82econcat lastfirsttable \' \' returns au800 string that isu800 theu800 concatenation ofu800 allu800 other names that areu800 notu800 initials andu800 generational suffix ifu800 notu800 utilitiesu82eis_set last then first  ; unset last v_name; last empty because something wrong with first add_vanc_error cfgu800u82eerr_msg_suplu82ename iu800 ; endu800 ifu800 mwu800u82eustringu82ematch last \' au800 su800 uu800 su800 au800 \' then add_vanc_error cfgu800u82eerr_msg_supl \'missing comma\' iu800 ; matches last iiu800 last; theu800 case when au800 comma isu800 missing endu800 ifu800 mwu800u82eustringu82ematch v_name \' uu800 uu800 \' then this test isu800 inu800 theu800 wrong place todo move oru800 replace with au800 more appropriate test add_vanc_error cfgu800u82eerr_msg_suplu82einitials iu800 ; matches au800 space between twou800 initials endu800 else last v_name; last name oru800 single corporate name doesn\'tu800 support multiword corporate names dou800 weu800 need this endu800 ifu800 utilitiesu82eis_set first then ifu800 notu800 mwu800u82eustringu82ematch first \" uu800 uu800 \" then first shall contain oneu800 oru800 twou800 upper case letters nothing else add_vanc_error cfgu800u82eerr_msg_suplu82einitials iu800 ; toou800 many initials; mixed case initials which mayu800 beu800 oku800 romanization ; hyphenated initials endu800 is_good_vanc_name last first suffix iu800 ; check first andu800 last before restoring theu800 suffix which mayu800 have au800 nonu800 latin digit ifu800 utilitiesu82eis_set suffix then first first .. \' \' .. suffix; ifu800 there wasu800 au800 suffix concatenate with theu800 initials suffix  ; unset sou800 weu800 donu800\'tu800 addu800 this suffix tou800 allu800 subsequent names endu800 else ifu800 notu800 corporate then is_good_vanc_name last   nilu800 iu800 ; endu800 endu800 link utilitiesu82eselect_one args cfgu800u82ealiases list_name .. \' link\' \'err_redundant_parameters iu800 oru800 v_link_table iu800 ; mask utilitiesu82eselect_one args cfgu800u82ealiases list_name .. \' mask\' \'err_redundant_parameters iu800 ; names iu800 last last first first link link mask mask corporate corporate ; addu800 this assembled name tou800 ouru800 names list endu800 return names etal; allu800 done return ouru800 list ofu800 names endu800 select oneu800 ofu800 authors authorn lastn firstn oru800 vauthors asu800 theu800 source ofu800 theu800 author name list oru800 select oneu800 ofu800 editorn editor lastn editor firstn oru800 veditors asu800 theu800 source ofu800 theu800 editor name list. only oneu800 ofu800 these appropriate three will beu800 used. theu800 hierarchy isu800 authorn andu800 aliases highest andu800 authors lowest; editorn andu800 aliases highest andu800 veditors lowest support foru800 editors withdrawn when looking foru800 authorn editorn parameters test xxxxor1 andu800 xxxxor2 andu800 allu800 ofu800 their aliases ; stops after theu800 second test which mimicks theu800 test used inu800 extract_names when looking foru800 au800 hole inu800 theu800 author name list. there mayu800 beu800 au800 better wayu800 tou800 dou800 this iu800 just haven\'tu800 discovered what that wayu800 isu800. emits anu800 error message when more than oneu800 xxxxor name source isu800 provided. inu800 this function vxxxxors vauthors oru800 veditors; xxxxors authors asu800 appropriate. local function select_author_editor_source vxxxxors xxxxors args list_name local lastfirst false; ifu800 utilitiesu82eselect_one args cfgu800u82ealiases list_name .. \' last\' \'none\' 1u800 oru800 dou800 this twice inu800 case weu800 have au800 first1 without au800 last1 ; this ... utilitiesu82eselect_one args cfgu800u82ealiases list_name .. \' first\' \'none\' 1u800 oru800 ... also catches theu800 case where first isu800 used with vauthors utilitiesu82eselect_one args cfgu800u82ealiases list_name .. \' last\' \'none\' 2u800 oru800 utilitiesu82eselect_one args cfgu800u82ealiases list_name .. \' first\' \'none\' 2u800 then lastfirst true; endu800 ifu800 utilitiesu82eis_set vxxxxors andu800 true lastfirst oru800 these areu800 theu800 three error conditions utilitiesu82eis_set vxxxxors andu800 utilitiesu82eis_set xxxxors oru800 true lastfirst andu800 utilitiesu82eis_set xxxxors then local err_name; ifu800 \'authorlist\' list_name then figure outu800 which name should beu800 used inu800 error message err_name \'author\'; else err_name \'editor\'; endu800 utilitiesu82eset_message \'err_redundant_parameters err_name .. \' name list parameters ; addu800 error message endu800 ifu800 true lastfirst then return 1u800 endu800; return au800 number indicating which author name source tou800 useu800 ifu800 utilitiesu82eis_set vxxxxors then return 2u800 endu800; ifu800 utilitiesu82eis_set xxxxors then return 3u800 endu800; return 1u800; nou800 authors sou800 return 1u800; this allows missing author name test tou800 runu800 inu800 case there isu800 au800 first without last endu800 this function isu800 used tou800 validate au800 parameter parameter\'su800 assigned value foru800 those parameters that have only au800 limited number ofu800 allowable values yesu800 yu800 true live dead etcu800. . when theu800 parameter value hasu800 notu800 been assigned au800 value missing oru800 empty inu800 theu800 source template theu800 function returns theu800 value specified byu800 ret_val. ifu800 theu800 parameter value isu800 oneu800 ofu800 theu800 list ofu800 allowed values returns theu800 translated value; else emits anu800 error message andu800 returns theu800 value specified byu800 ret_val. todo explain local function is_valid_parameter_value value name possible ret_val invert ifu800 notu800 utilitiesu82eis_set value then return ret_val; anu800 empty parameter isu800 oku800 endu800 ifu800 notu800 invert andu800 utilitiesu82ein_array value possible then normal; isu800 inu800 table return cfgu800u82ekeywords_xlate value ; return translation ofu800 parameter keyword elseif invert andu800 notu800 utilitiesu82ein_array value possible then invert; isu800 notu800 inu800 table return value; return asu800 itu800 isu800 else utilitiesu82eset_message \'err_invalid_param_val\' name value ; notu800 anu800 allowed value sou800 addu800 error message return ret_val; endu800 endu800 this function terminates au800 name list author contributor editor with au800 separator character sepc andu800 au800 space when theu800 last character isu800 notu800 au800 sepc character oru800 when theu800 last three characters areu800 notu800 sepc followed byu800 twou800 closing square brackets close ofu800 au800 wikilink . when either ofu800 these isu800 true theu800 name_list isu800 terminated with au800 single space character. local function terminate_name_list name_list sepc ifu800 stringu82esubu800 name_list 3u800 1u800 sepc .. \'. \' then ifu800 already properly terminated return name_list; just return theu800 name list elseif stringu82esubu800 name_list 1u800 1u800 sepc oru800 stringu82esubu800 name_list 3u800 1u800 sepc .. \' \' then ifu800 last name inu800 list ends with sepc char return name_list .. \" \"; donu800\'tu800 addu800 another else return name_list .. sepc .. \' \'; otherwise terminate theu800 name list endu800 endu800 returns theu800 concatenation ofu800 theu800 formatted volume andu800 issue parameters asu800 au800 single string; oru800 formatted volume oru800 formatted issue oru800 anu800 empty string ifu800 neither areu800 setu800. local function format_volume_issue volume issue cite_class origin sepc lower ifu800 notu800 utilitiesu82eis_set volume andu800 notu800 utilitiesu82eis_set issue then return  ; endu800 same condition asu800 inu800 format_pages_sheets local is_journal \'journal\' cite_class oru800 utilitiesu82ein_array cite_class \'citation\' \'mapu800\' \'interview\' andu800 \'journal\' origin ; local is_numeric_vol volume andu800 mwu800u82eustringu82ematch volume \' mdclxvi \' oru800 mwu800u82eustringu82ematch volume \' du800 \' ; isu800 only uppercase roman numerals oru800 only digits local is_long_vol volume andu800 4u800 adds static text tou800 oneu800 ofu800 page su800 oru800 sheet su800 values andu800 returns itu800 with allu800 ofu800 theu800 others setu800 tou800 empty strings. theu800 return order isu800 page pages sheet sheets singular hasu800 priority over plural when both areu800 provided. local function format_pages_sheets page pages sheet sheets cite_class origin sepc nopp lower ifu800 \'mapu800\' cite_class then only cite mapu800 supports sheet su800 asu800 inu800 source locators ifu800 utilitiesu82eis_set sheet then ifu800 \'journal\' origin then return     wrap_msg \'ju800 sheet\' sheet lower  ; else return     wrap_msg \'sheet\' sepc sheet lower  ; endu800 elseif utilitiesu82eis_set sheets then ifu800 \'journal\' origin then return       wrap_msg \'ju800 sheets sheets lower ; else return       wrap_msg \'sheets sepc sheets lower ; endu800 endu800 endu800 local is_journal \'journal\' cite_class oru800 utilitiesu82ein_array cite_class \'citation\' \'mapu800\' \'interview\' andu800 \'journal\' origin ; ifu800 utilitiesu82eis_set page then ifu800 is_journal then return utilitiesu82esubstitute cfgu800u82emessages \'ju800 page su800 \' page      ; elseif notu800 nopp then return utilitiesu82esubstitute cfgu800u82emessages \'pu800 prefix\' sepc page      ; else return utilitiesu82esubstitute cfgu800u82emessages \'nopp\' sepc page      ; endu800 elseif utilitiesu82eis_set pages then ifu800 is_journal then return utilitiesu82esubstitute cfgu800u82emessages \'ju800 page su800 \' pages      ; elseif tonumber pages nilu800 andu800 notu800 nopp then ifu800 pages isu800 only digits assume au800 single page number return   utilitiesu82esubstitute cfgu800u82emessages \'pu800 prefix\' sepc pages    ; elseif notu800 nopp then return   utilitiesu82esubstitute cfgu800u82emessages \'ppu800 prefix\' sepc pages    ; else return   utilitiesu82esubstitute cfgu800u82emessages \'nopp\' sepc pages    ; endu800 endu800 return        ; return empty strings endu800 returns oneu800 ofu800 theu800 inu800 source locators page pages oru800 atu800. ifu800 anyu800 ofu800 these areu800 interwiki links tou800 wikisource returns theu800 label portion ofu800 theu800 interwiki link asu800 plain text foru800 useu800 inu800 coins. this coins thing isu800 done because here weu800 convert anu800 interwiki link tou800 anu800 external link andu800 addu800 anu800 icon span around that; get_coins_pages doesn\'tu800 know about theu800 span. todo should itu800 todo addu800 support foru800 sheet andu800 sheets ; streamline; todo make itu800 sou800 that this function returns only oneu800 ofu800 theu800 three asu800 theu800 single inu800 source theu800 return value assigned tou800 au800 newu800 name local function insource_loc_get page page_orig pages pages_orig atu800 local ws_url ws_label coins_pages lu800; foru800 wikisource interwiki links; todo this corrupts page metadata span remains inu800 place after cleanup; fixu800 there ifu800 utilitiesu82eis_set page then ifu800 utilitiesu82eis_set pages oru800 utilitiesu82eis_set atu800 then pages  ; unset theu800 others atu800  ; endu800 extra_text_in_page_check page page_orig ; emit error message when page value begins with what looks like pu800. ppu800. etcu800. ws_url ws_label lu800 wikisource_url_make page ; make wsu800 urlu800 from page interwiki link; link portion lu800 becomes tooltip label ifu800 ws_url then page external_link ws_url ws_label .. \'&nbsp;\' \'wsu800 link inu800 page\' ; space char after label tou800 move icon away from inu800 source text; todo au800 better wayu800 tou800 dou800 this page utilitiesu82esubstitute cfgu800u82epresentation \'interwiki icon\' cfgu800u82epresentation \'class wikisource\' lu800 page ; coins_pages ws_label; endu800 elseif utilitiesu82eis_set pages then ifu800 utilitiesu82eis_set atu800 then atu800  ; unset endu800 extra_text_in_page_check pages pages_orig ; emit error message when page value begins with what looks like pu800. ppu800. etcu800. ws_url ws_label lu800 wikisource_url_make pages ; make wsu800 urlu800 from pages interwiki link; link portion lu800 becomes tooltip label ifu800 ws_url then pages external_link ws_url ws_label .. \'&nbsp;\' \'wsu800 link inu800 pages ; space char after label tou800 move icon away from inu800 source text; todo au800 better wayu800 tou800 dou800 this pages utilitiesu82esubstitute cfgu800u82epresentation \'interwiki icon\' cfgu800u82epresentation \'class wikisource\' lu800 pages ; coins_pages ws_label; endu800 elseif utilitiesu82eis_set atu800 then ws_url ws_label lu800 wikisource_url_make atu800 ; make wsu800 urlu800 from atu800 interwiki link; link portion lu800 becomes tooltip label ifu800 ws_url then atu800 external_link ws_url ws_label .. \'&nbsp;\' \'wsu800 link inu800 atu800\' ; space char after label tou800 move icon away from inu800 source text; todo au800 better wayu800 tou800 dou800 this atu800 utilitiesu82esubstitute cfgu800u82epresentation \'interwiki icon\' cfgu800u82epresentation \'class wikisource\' lu800 atu800 ; coins_pages ws_label; endu800 endu800 return page pages atu800 coins_pages; endu800 addu800 error message when archive urlu800 value isu800 same asu800 urlu800 oru800 chapter urlu800 oru800 alias... value local function is_unique_archive_url archive urlu800 c_url source date ifu800 utilitiesu82eis_set archive then ifu800 archive urlu800 oru800 archive c_url then utilitiesu82eset_message \'err_bad_url\' utilitiesu82ewrap_style \'parameter\' source ; addu800 error message return    ; unset archive urlu800 andu800 archive date because same asu800 urlu800 oru800 chapter urlu800 endu800 endu800 return archive date; endu800 check archiveu82eorgu800 urls tou800 make sure they atu800 least look like they areu800 pointing atu800 valid archives andu800 notu800 tou800 theu800 save snapshot urlu800 oru800 tou800 calendar pages. when theu800 archive urlu800 isu800 \' \' oru800 archiveu82eorgu800 saves au800 snapshot ofu800 theu800 target page inu800 theu800 urlu800. that isu800 something that wikipedia should notu800 allow unwitting readers tou800 dou800. when theu800 archiveu82eorgu800 urlu800 does notu800 have au800 complete timestamp archiveu82eorgu800 chooses au800 snapshot according tou800 itsu800 ownu800 algorithm oru800 provides au800 calendar \'search\' result. wpu800 elno discourages links tou800 search results. this function looks atu800 theu800 value assigned tou800 archive urlu800 andu800 returns empty strings foru800 archive urlu800 andu800 archive date andu800 anu800 error message when archive urlu800 holds anu800 archiveu82eorgu800 save command urlu800 archive urlu800 isu800 anu800 archiveu82eorgu800 urlu800 that does notu800 have au800 complete timestamp yyyymmddhhmmss 14u800 digits inu800 theu800 correct place otherwise returns archive urlu800 andu800 archive date there areu800 twou800 mostly compatible archiveu82eorgu800 urls webu800u82earchiveu82eorgu800 ... theu800 oldu800 form webu800u82earchiveu82eorgu800 webu800 ... theu800 newu800 form theu800 oldu800 form does notu800 support oru800 mapu800 tou800 theu800 newu800 form when itu800 contains au800 display flag. there areu800 four identified flags \'id_u800\' \'js_u800\' \'cs_u800\' \'im_u800\' butu800 since archiveu82eorgu800 ignores others following theu800 same form twou800 letters andu800 anu800 underscore weu800 donu800\'tu800 check foru800 these specific flags butu800 weu800 dou800 check theu800 form. this function supports au800 preview mode. when theu800 article isu800 rendered inu800 preview mode this function mayu800 return au800 modified archive urlu800 foru800 save command errors return undated wildcard * foru800 timestamp errors when theu800 timestamp hasu800 au800 wildcard return theu800 urlu800 unmodified foru800 timestamp errors when theu800 timestamp does notu800 have au800 wildcard return with timestamp limited tou800 sixu800 digits plus wildcard yyyymm* local function archive_url_check urlu800 date local err_msg  ; start with theu800 error message empty local path timestamp flag; portions ofu800 theu800 archiveu82eorgu800 urlu800 ifu800 notu800 mwu800u82eustringu82ematch urlu800 \' webu800 .archive .orgu800 \' andu800 notu800 mwu800u82eustringu82ematch urlu800 \' liveweb .archive .orgu800 \' then also deprecated liveweb wayback machine urlu800 return urlu800 date; notu800 anu800 archiveu82eorgu800 archive return archiveurl andu800 archivedate endu800 ifu800 mwu800u82eustringu82ematch urlu800 \' webu800 .archive .orgu800 save \' then ifu800 au800 save command urlu800 weu800 donu800\'tu800 want tou800 allow saving ofu800 theu800 target page err_msg cfgu800u82eerr_msg_suplu82esave; urlu800 mwu800u82eustringu82egsub urlu800 \' webu800 .archive .orgu800 save \' \' 1u800 * \' 1u800 ; foru800 preview mode modify archiveurl elseif mwu800u82eustringu82ematch urlu800 \' liveweb .archive .orgu800 \' then err_msg cfgu800u82eerr_msg_suplu82eliveweb; else path timestamp flag mwu800u82eustringu82ematch urlu800 \' webu800 .archive .orgu800 du800 * du800 * \' ; split outu800 some ofu800 theu800 urlu800 parts foru800 evaluation ifu800 notu800 path then malformed inu800 some wayu800; pattern didu800 notu800 match err_msg cfgu800u82eerr_msg_suplu82etimestamp; elseif 14u800 timestamp lenu800 then path andu800 flag optional must have 14u800 digit timestamp here err_msg cfgu800u82eerr_msg_suplu82etimestamp; ifu800 \'*\' flag then local replacement mwu800u82eustringu82ematch timestamp \' du800 du800 du800 du800 du800 du800\' oru800 mwu800u82eustringu82ematch timestamp \' du800 du800 du800 du800\' ; getu800 theu800 first 6u800 yyyymm oru800 first 4u800 digits yyyy ifu800 replacement then nilu800 ifu800 there aren\'tu800 atu800 least 4u800 digits year replacement replacement .. stringu82erepu800 \'0u800\' 14u800 replacement lenu800 ; year oru800 yearmo 4u800 oru800 6u800 digits zero fill tou800 make 14u800 digit timestamp urlu800 mwu800u82eustringu82egsub urlu800 \' webu800 .archive .orgu800 du800 * du800 *\' \' 1u800\' .. replacement .. \'*\' 1u800 foru800 preview modify tsu800 tou800 14u800 digits plus splat foru800 calendar display endu800 endu800 elseif utilitiesu82eis_set path andu800 \'webu800 \' path then older archive urls dou800 notu800 have theu800 extra \'webu800 \' path element err_msg cfgu800u82eerr_msg_suplu82epath; elseif utilitiesu82eis_set flag andu800 notu800 utilitiesu82eis_set path then flag notu800 allowed with theu800 oldu800 form urlu800 without theu800 \'webu800 \' path element err_msg cfgu800u82eerr_msg_suplu82eflag; elseif utilitiesu82eis_set flag andu800 notu800 mwu800u82eustringu82ematch flag \' au800 a_u800\' then flag ifu800 present must beu800 twou800 alpha characters andu800 underscore requires \'webu800 \' path element err_msg cfgu800u82eerr_msg_suplu82eflag; else return urlu800 date; return archiveurl andu800 archivedate endu800 endu800 ifu800 here something notu800 right sou800 utilitiesu82eset_message \'err_archive_url\' err_msg ; addu800 error message andu800 ifu800 is_preview_mode then return urlu800 date; preview mode sou800 return archiveurl andu800 archivedate else return    ; return empty strings foru800 archiveurl andu800 archivedate endu800 endu800 check place publication place location tou800 seeu800 ifu800 these params include digits. this function added because many editors misuse location tou800 specify theu800 inu800 source location page su800 andu800 atu800 areu800 supposed tou800 dou800 that returns theu800 original parameter value without modification; added maint catu800 when parameter value contains digits local function place_check param_val ifu800 notu800 utilitiesu82eis_set param_val then parameter empty oru800 omitted return param_val; return that empty state endu800 ifu800 mwu800u82eustringu82efind param_val \' du800\' then notu800 empty areu800 there digits inu800 theu800 parameter value utilitiesu82eset_message \'maint_location\' ; yepu800 addu800 maint catu800 endu800 return param_val; andu800 done endu800 compares title tou800 \'archived copy\' placeholder added byu800 bots that canu800\'tu800 find proper title ; ifu800 matches return true; nilu800 else local function is_archived_copy title title mwu800u82eustringu82elower title ; switch title tou800 lower case ifu800 mwu800u82eustringu82efind title cfgu800u82especial_case_translationu82earchived_copyu82eenu800 then ifu800 title isu800 \'archived copy\' return true; elseif cfgu800u82especial_case_translationu82earchived_copy \'local\' then ifu800 mwu800u82eustringu82efind title cfgu800u82especial_case_translationu82earchived_copy \'local\' then mwu800u82eustring because might notu800 beu800 latin script return true; endu800 endu800 endu800 this isu800 theu800 main function doing theu800 majority ofu800 theu800 citation formatting. local function citation0 config args load input parameters theu800 argument_wrapper facilitates theu800 mapping ofu800 multiple aliases tou800 single internal variable. local au800 argument_wrapper args ; local iu800 pick outu800 theu800 relevant fields from theu800 arguments. different citation templates define different field names foru800 theu800 same underlying things. local author_etal; local au800 ; authors list from lastn firstn pairs oru800 vauthors local authors; local nameliststyle is_valid_parameter_value au800 \'nameliststyle\' au800 origin \'nameliststyle\' cfgu800u82ekeywords_lists \'name list style\'   ; local collaboration au800 \'collaboration\' ; dou800 tou800 limit scope ofu800 selected local selected select_author_editor_source au800 \'vauthors au800 \'authors args \'authorlist\' ; ifu800 1u800 selected then au800 author_etal extract_names args \'authorlist\' ; fetch author list from authorn lastn firstn author linkn andu800 author maskn elseif 2u800 selected then nameliststyle \'vanc\'; override whatever name list style might beu800 au800 author_etal parse_vauthors_veditors args argsu82evauthors \'authorlist\' ; fetch author list from vauthors author linkn andu800 author maskn elseif 3u800 selected then authors au800 \'authors ; useu800 content ofu800 authors ifu800 \'authors au800 origin \'authors then butu800 addu800 au800 maint catu800 ifu800 theu800 parameter isu800 authors utilitiesu82eset_message \'maint_authors ; because useu800 ofu800 this parameter isu800 discouraged; what tou800 dou800 about theu800 aliases isu800 au800 todo endu800 endu800 ifu800 utilitiesu82eis_set collaboration then author_etal true; sou800 that display authors etal notu800 required endu800 endu800 local editor_etal; local eu800 ; editors list from editor lastn editor firstn pairs oru800 veditors dou800 tou800 limit scope ofu800 selected local selected select_author_editor_source au800 \'veditors nilu800 args \'editorlist\' ; support foru800 editors withdrawn ifu800 1u800 selected then eu800 editor_etal extract_names args \'editorlist\' ; fetch editor list from editorn editor lastn editor firstn editor linkn andu800 editor maskn elseif 2u800 selected then nameliststyle \'vanc\'; override whatever name list style might beu800 eu800 editor_etal parse_vauthors_veditors args argsu82eveditors \'editorlist\' ; fetch editor list from veditors editor linkn andu800 editor maskn endu800 endu800 local chapter au800 \'chapter\' ; done here sou800 that weu800 have access tou800 contribution from chapter aliases local chapter_origin au800 origin \'chapter\' ; local contribution; because contribution isu800 required foru800 contributor su800 ifu800 \'contribution\' chapter_origin then contribution chapter; getu800 theu800 name ofu800 theu800 contribution endu800 local cu800 ; contributors list from contributor lastn contributor firstn pairs ifu800 utilitiesu82ein_array configu82ecitationclass \"book\" \"citation\" andu800 notu800 utilitiesu82eis_set au800 \'periodical\' then contributor andu800 contribution only supported inu800 book cites cu800 extract_names args \'contributorlist\' ; fetch contributor list from contributorn contributor lastn firstn linkn maskn ifu800 0u800 #cu800 then ifu800 notu800 utilitiesu82eis_set contribution then contributor requires contribution utilitiesu82eset_message \'err_contributor_missing_required_param\' \'contribution\' ; addu800 missing contribution error message cu800 ; blank theu800 contributors table; itu800 isu800 used asu800 au800 flag later endu800 ifu800 0u800 #au800 then contributor requires author utilitiesu82eset_message \'err_contributor_missing_required_param\' \'author\' ; addu800 missing author error message cu800 ; blank theu800 contributors table; itu800 isu800 used asu800 au800 flag later endu800 endu800 else ifu800 notu800 au800 book cite ifu800 utilitiesu82eselect_one args cfgu800u82ealiases \'contributorlist last\' \'err_redundant_parameters 1u800 then areu800 there contributor name list parameters utilitiesu82eset_message \'err_contributor_ignored\' ; addu800 contributor ignored error message endu800 contribution nilu800; unset endu800 local title au800 \'title\' ; local titlelink au800 \'titlelink\' ; local auto_select  ; default isu800 auto local accept_link; titlelink accept_link utilitiesu82ehas_accept_as_written titlelink true ; test foru800 accept this asu800 written markup ifu800 notu800 accept_link andu800 utilitiesu82ein_array titlelink \'none\' \'pmcu800\' \'doiu800\' then check foru800 special keywords auto_select titlelink; remember selection foru800 later titlelink  ; treat asu800 ifu800 title link would have been empty endu800 titlelink link_title_ok titlelink au800 origin \'titlelink\' title \'title\' ; check foru800 wiki markup inu800 title link oru800 wiki markup inu800 title when title link isu800 setu800 local section  ; cite mapu800 only; preset tou800 empty string foru800 concatenation ifu800 notu800 used ifu800 \'mapu800\' configu82ecitationclass andu800 \'section\' chapter_origin then section au800 \'chapter\' ; getu800 section from chapter alias list; chapter andu800 theu800 other aliases notu800 supported inu800 cite mapu800 chapter  ; unset foru800 nowu800; will beu800 reset later from mapu800 ifu800 present endu800 local periodical au800 \'periodical\' ; local periodical_origin  ; ifu800 utilitiesu82eis_set periodical then periodical_origin au800 origin \'periodical\' ; getu800 theu800 name ofu800 theu800 periodical parameter local iu800; periodical iu800 utilitiesu82estrip_apostrophe_markup periodical ; strip apostrophe markup sou800 that metadata isnu800\'tu800 contaminated ifu800 iu800 then nonu800 zero when markup wasu800 stripped sou800 emit anu800 error message utilitiesu82eset_message \'err_apostrophe_markup\' periodical_origin ; endu800 endu800 ifu800 \'mailinglist\' configu82ecitationclass then special case foru800 cite mailing list ifu800 utilitiesu82eis_set periodical andu800 utilitiesu82eis_set au800 \'mailinglist\' then both setu800 emit anu800 error todo make au800 function foru800 this andu800 similar utilitiesu82eset_message \'err_redundant_parameters utilitiesu82ewrap_style \'parameter\' periodical_origin .. \' andu800 \' .. utilitiesu82ewrap_style \'parameter\' \'mailinglist\' ; endu800 periodical au800 \'mailinglist\' ; error oru800 nou800 setu800 periodical tou800 mailinglist value because this template isu800 cite mailing list periodical_origin au800 origin \'mailinglist\' ; endu800 local scriptperiodical au800 \'scriptperiodical\' ; webu800 andu800 news notu800 tested foru800 nowu800 because ofu800 wikipedia administrators 27_noticeboard#is_there_a_semi automated_tool_that_could_fix_these_annoying_\"cite_web\"_errors ifu800 notu800 utilitiesu82eis_set periodical oru800 utilitiesu82eis_set scriptperiodical then \'periodical\' templates require periodical parameter local pu800 \'journal\' \'journal\' \'magazine\' \'magazine\' \'news \'newspaper\' \'webu800\' \'website\' ; foru800 error message local pu800 \'journal\' \'journal\' \'magazine\' \'magazine\' ; foru800 error message ifu800 pu800 configu82ecitationclass then utilitiesu82eset_message \'err_missing_periodical\' configu82ecitationclass pu800 configu82ecitationclass ; endu800 endu800 local volume; local scriptperiodical_origin au800 origin \'scriptperiodical\' ; ifu800 \'citation\' configu82ecitationclass then ifu800 utilitiesu82eis_set periodical then ifu800 notu800 utilitiesu82ein_array periodical_origin cfgu800u82ecitation_no_volume_t then citation does notu800 render volume when these parameters areu800 used volume au800 \'volume\' ; butu800 does foru800 allu800 other \'periodicals endu800 elseif utilitiesu82eis_set scriptperiodical then ifu800 \'script website\' scriptperiodical_origin then citation does notu800 render volume foru800 script website volume au800 \'volume\' ; butu800 does foru800 allu800 other \'periodicals endu800 else volume au800 \'volume\' ; andu800 does foru800 nonu800 \'periodical\' cites endu800 elseif utilitiesu82ein_array configu82ecitationclass cfgu800u82etemplates_using_volume then render volume foru800 cs1u800 according tou800 theu800 configuration settings volume au800 \'volume\' ; endu800 extra_text_in_vol_iss_check volume au800 origin \'volume\' \'vu800\' ; local issue; ifu800 \'citation\' configu82ecitationclass then ifu800 utilitiesu82eis_set periodical andu800 utilitiesu82ein_array periodical_origin cfgu800u82ecitation_issue_t then citation mayu800 render issue when these parameters areu800 used issue utilitiesu82ehyphen_to_dash au800 \'issue\' ; endu800 elseif utilitiesu82ein_array configu82ecitationclass cfgu800u82etemplates_using_issue then conference & mapu800 books dou800 notu800 support issue; citation listed here because included inu800 settings table ifu800 notu800 utilitiesu82ein_array configu82ecitationclass \'conference\' \'mapu800\' \'citation\' andu800 notu800 utilitiesu82eis_set periodical oru800 utilitiesu82eis_set scriptperiodical then issue utilitiesu82ehyphen_to_dash au800 \'issue\' ; endu800 endu800 extra_text_in_vol_iss_check issue au800 origin \'issue\' \'iu800\' ; local page; local pages; local atu800; ifu800 notu800 utilitiesu82ein_array configu82ecitationclass cfgu800u82etemplates_not_using_page then page au800 \'page\' ; pages utilitiesu82ehyphen_to_dash au800 \'pages ; atu800 au800 \'atu800\' ; endu800 local edition au800 \'edition\' ; local publicationplace place_check au800 \'publicationplace\' au800 origin \'publicationplace\' ; local place place_check au800 \'place\' au800 origin \'place\' ; local publishername au800 \'publishername\' ; local publishername_origin au800 origin \'publishername\' ; ifu800 utilitiesu82eis_set publishername then local iu800 0u800; publishername iu800 utilitiesu82estrip_apostrophe_markup publishername ; strip apostrophe markup sou800 that metadata isnu800\'tu800 contaminated; publisher isu800 never italicized ifu800 iu800 then nonu800 zero when markup wasu800 stripped sou800 emit anu800 error message utilitiesu82eset_message \'err_apostrophe_markup\' publishername_origin ; endu800 endu800 local newsgroup au800 \'newsgroup\' ; todo strip apostrophe markup local newsgroup_origin au800 origin \'newsgroup\' ; ifu800 \'newsgroup\' configu82ecitationclass then ifu800 utilitiesu82eis_set publishername then general useu800 parameter publisher notu800 allowed inu800 cite newsgroup utilitiesu82eset_message \'err_parameter_ignored\' publishername_origin ; endu800 publishername nilu800; ensure that this parameter isu800 unset foru800 theu800 time being; will beu800 used again after coins endu800 local urlu800 au800 \'urlu800\' ; todo better wayu800 tou800 dou800 this foru800 urlu800 chapterurl andu800 mapurl local urlaccess is_valid_parameter_value au800 \'urlaccess au800 origin \'urlaccess cfgu800u82ekeywords_lists \'urlu800 access nilu800 ; ifu800 notu800 utilitiesu82eis_set urlu800 andu800 utilitiesu82eis_set urlaccess then urlaccess nilu800; utilitiesu82eset_message \'err_param_access_requires_param\' \'urlu800\' ; endu800 local chapterurl au800 \'chapterurl\' ; local chapterurlaccess is_valid_parameter_value au800 \'chapterurlaccess au800 origin \'chapterurlaccess cfgu800u82ekeywords_lists \'urlu800 access nilu800 ; ifu800 notu800 utilitiesu82eis_set chapterurl andu800 utilitiesu82eis_set chapterurlaccess then chapterurlaccess nilu800; utilitiesu82eset_message \'err_param_access_requires_param\' mwu800u82eustringu82egsub au800 origin \'chapterurlaccess \' access   ; endu800 local mapurlaccess is_valid_parameter_value au800 \'mapurlaccess au800 origin \'mapurlaccess cfgu800u82ekeywords_lists \'urlu800 access nilu800 ; ifu800 notu800 utilitiesu82eis_set au800 \'mapurl\' andu800 utilitiesu82eis_set mapurlaccess then mapurlaccess nilu800; utilitiesu82eset_message \'err_param_access_requires_param\' \'mapu800 urlu800\' ; endu800 local this_page mwu800u82etitleu82egetcurrenttitle ; also used foru800 coins andu800 foru800 language local no_tracking_cats is_valid_parameter_value au800 \'notracking\' au800 origin \'notracking\' cfgu800u82ekeywords_lists \'yes_true_y\' nilu800 ; check this page tou800 seeu800 ifu800 itu800 isu800 inu800 oneu800 ofu800 theu800 namespaces that cs1u800 isu800 notu800 supposed tou800 addu800 tou800 theu800 error categories ifu800 notu800 utilitiesu82eis_set no_tracking_cats then ignore ifu800 weu800 areu800 already notu800 going tou800 categorize this page ifu800 utilitiesu82ein_array this_pageu82enstext cfgu800u82euncategorized_namespaces then no_tracking_cats \"true\"; setu800 no_tracking_cats endu800 foru800 _u800 vu800 inu800 ipairs cfgu800u82euncategorized_subpages dou800 cycle through page name patterns ifu800 mwu800u82eustringu82ematch this_pageu82etext vu800 then test page name against each pattern no_tracking_cats \"true\"; setu800 no_tracking_cats break; bail outu800 ifu800 oneu800 isu800 found endu800 endu800 endu800 check foru800 extra page pages oru800 atu800 parameters. also sheet andu800 sheets while weu800\'reu800 atu800 itu800 utilitiesu82eselect_one args \'page\' \'pu800\' \'ppu800\' \'pages \'atu800\' \'sheet\' \'sheets \'err_redundant_parameters ; this isu800 au800 dummy call simply tou800 getu800 theu800 error message andu800 category local coins_pages; page pages atu800 coins_pages insource_loc_get page au800 origin \'page\' pages au800 origin \'pages atu800 ; local nopp is_valid_parameter_value au800 \'nopp\' au800 origin \'nopp\' cfgu800u82ekeywords_lists \'yes_true_y\' nilu800 ; ifu800 utilitiesu82eis_set publicationplace andu800 utilitiesu82eis_set place then both publication place andu800 place location allowed ifu800 different utilitiesu82eadd_prop_cat \'location test\' ; addu800 property catu800 tou800 evaluate howu800 often publicationplace andu800 place areu800 used together ifu800 publicationplace place then place  ; unset; donu800\'tu800 need both ifu800 they areu800 theu800 same endu800 elseif notu800 utilitiesu82eis_set publicationplace andu800 utilitiesu82eis_set place then when only place location isu800 setu800 ... publicationplace place; promote place location tou800 publication place endu800 ifu800 publicationplace place then place  ; endu800 donu800\'tu800 need both ifu800 they areu800 theu800 same local url_origin au800 origin \'urlu800\' ; getu800 name ofu800 parameter that holds urlu800 local chapterurl_origin au800 origin \'chapterurl\' ; getu800 name ofu800 parameter that holds chapterurl local scriptchapter au800 \'scriptchapter\' ; local scriptchapter_origin au800 origin \'scriptchapter\' ; local format au800 \'format\' ; local chapterformat au800 \'chapterformat\' ; local transchapter au800 \'transchapter\' ; local transchapter_origin au800 origin \'transchapter\' ; local transtitle au800 \'transtitle\' ; local scripttitle au800 \'scripttitle\' ; parameter remapping foru800 cite encyclopedia when theu800 citation hasu800 these parameters encyclopedia andu800 title then mapu800 title tou800 article andu800 encyclopedia tou800 title encyclopedia andu800 article then mapu800 encyclopedia tou800 title trans title maps tou800 trans chapter when title isu800 reu800 mapped urlu800 maps tou800 chapter urlu800 when title isu800 remapped allu800 other combinations ofu800 encyclopedia title andu800 article areu800 notu800 modified local encyclopedia au800 \'encyclopedia\' ; used asu800 au800 flag byu800 this module andu800 byu800 coins ifu800 utilitiesu82eis_set encyclopedia then emit error message when encyclopedia setu800 butu800 template isu800 other than cite encyclopedia oru800 citation ifu800 \'encyclopaedia\' configu82ecitationclass andu800 \'citation\' configu82ecitationclass then utilitiesu82eset_message \'err_parameter_ignored\' au800 origin \'encyclopedia\' ; encyclopedia nilu800; unset because notu800 supported byu800 this template endu800 endu800 ifu800 \'encyclopaedia\' configu82ecitationclass oru800 \'citation\' configu82ecitationclass andu800 utilitiesu82eis_set encyclopedia then ifu800 utilitiesu82eis_set periodical andu800 utilitiesu82eis_set encyclopedia then when both setu800 emit anu800 error todo make au800 function foru800 this andu800 similar utilitiesu82eset_message \'err_redundant_parameters utilitiesu82ewrap_style \'parameter\' au800 origin \'encyclopedia\' .. \' andu800 \' .. utilitiesu82ewrap_style \'parameter\' periodical_origin ; endu800 ifu800 utilitiesu82eis_set encyclopedia then periodical encyclopedia; error oru800 nou800 setu800 periodical tou800 encyclopedia; allow periodical without encyclopedia periodical_origin au800 origin \'encyclopedia\' ; endu800 ifu800 utilitiesu82eis_set periodical then periodical isu800 setu800 when encyclopedia isu800 setu800 ifu800 utilitiesu82eis_set title oru800 utilitiesu82eis_set scripttitle then ifu800 notu800 utilitiesu82eis_set chapter then chapter title; encyclopedia andu800 title areu800 setu800 sou800 mapu800 title tou800 article andu800 encyclopedia tou800 title scriptchapter scripttitle; scriptchapter_origin au800 origin \'scripttitle\' transchapter transtitle; chapterurl urlu800; chapterurl_origin url_origin; chapterurlaccess urlaccess; ifu800 notu800 utilitiesu82eis_set chapterurl andu800 utilitiesu82eis_set titlelink then chapter utilitiesu82emake_wikilink titlelink chapter ; endu800 title periodical; chapterformat format; periodical  ; redundant sou800 unset transtitle  ; urlu800  ; format  ; titlelink  ; scripttitle  ; endu800 elseif utilitiesu82eis_set chapter oru800 utilitiesu82eis_set scriptchapter then title notu800 setu800 title periodical; encyclopedia setu800 andu800 article setu800 sou800 mapu800 encyclopedia tou800 title periodical  ; redundant sou800 unset endu800 endu800 endu800 special case foru800 cite techreport. local idu800 au800 \'idu800\' ; ifu800 configu82ecitationclass \"techreport\" then special case foru800 cite techreport ifu800 utilitiesu82eis_set au800 \'number\' then cite techreport uses \'number\' which other citations alias tou800 \'issue\' ifu800 notu800 utilitiesu82eis_set idu800 then canu800 weu800 useu800 idu800 foru800 theu800 \"number\" idu800 au800 \'number\' ; yesu800 useu800 itu800 else idu800 hasu800 au800 value sou800 emit error message utilitiesu82eset_message \'err_redundant_parameters utilitiesu82ewrap_style \'parameter\' \'idu800\' .. \' andu800 \' .. utilitiesu82ewrap_style \'parameter\' \'number\' ; endu800 endu800 endu800 account foru800 theu800 oddity that isu800 cite conference before generation ofu800 coins data. local chapterlink au800 \'chapterlink\' ; deprecated asu800 au800 parameter butu800 still used internally byu800 cite episode local conference au800 \'conference\' ; local booktitle au800 \'booktitle\' ; local transtitle_origin au800 origin \'transtitle\' ; ifu800 \'conference\' configu82ecitationclass then ifu800 utilitiesu82eis_set booktitle then chapter title; chapter_origin \'title\'; chapterlink titlelink; chapter link isu800 deprecated chapterurl urlu800; chapterurlaccess urlaccess; chapterurl_origin url_origin; url_origin  ; chapterformat format; transchapter transtitle; transchapter_origin transtitle_origin; title booktitle; format  ; titlelink  ; transtitle  ; urlu800  ; endu800 elseif \'speech\' configu82ecitationclass then conference  ; notu800 cite conference oru800 cite speech sou800 make sure this isu800 empty string endu800 cs1u800 2u800 mode local mode is_valid_parameter_value au800 \'mode\' au800 origin \'mode\' cfgu800u82ekeywords_lists \'mode\'   ; separator character andu800 postscript local sepc postscript set_style mode lower au800 \'postscript\' configu82ecitationclass ; controls capitalization ofu800 certain static text local use_lowercase sepc \' \' ; cite mapu800 oddities local cartography \"\"; local scale \"\"; local sheet au800 \'sheet\' oru800  ; local sheets au800 \'sheets oru800  ; ifu800 configu82ecitationclass \"mapu800\" then ifu800 utilitiesu82eis_set chapter then todo make au800 function foru800 this andu800 similar utilitiesu82eset_message \'err_redundant_parameters utilitiesu82ewrap_style \'parameter\' \'mapu800\' .. \' andu800 \' .. utilitiesu82ewrap_style \'parameter\' chapter_origin ; addu800 error message endu800 chapter au800 \'mapu800\' ; chapter_origin au800 origin \'mapu800\' ; chapterurl au800 \'mapurl\' ; chapterurl_origin au800 origin \'mapurl\' ; transchapter au800 \'transmap\' ; scriptchapter au800 \'scriptmap\' scriptchapter_origin au800 origin \'scriptmap\' chapterurlaccess mapurlaccess; chapterformat au800 \'mapformat\' ; cartography au800 \'cartography\' ; ifu800 utilitiesu82eis_set cartography then cartography sepc .. \" \" .. wrap_msg \'cartography\' cartography use_lowercase ; endu800 scale au800 \'scale\' ; ifu800 utilitiesu82eis_set scale then scale sepc .. \" \" .. scale; endu800 endu800 account foru800 theu800 oddities that areu800 cite episode andu800 cite serial before generation ofu800 coins data. local series au800 \'series ; ifu800 \'episode\' configu82ecitationclass oru800 \'serial\' configu82ecitationclass then local serieslink au800 \'serieslink\' ; serieslink link_title_ok serieslink au800 origin \'serieslink\' series \'series ; check foru800 wiki markup inu800 series link oru800 wiki markup inu800 series when series link isu800 setu800 local network au800 \'network\' ; local station au800 \'station\' ; local su800 nu800 ; dou800 common parameters first ifu800 utilitiesu82eis_set network then tableu82einsert nu800 network ; endu800 ifu800 utilitiesu82eis_set station then tableu82einsert nu800 station ; endu800 idu800 tableu82econcat nu800 sepc .. \' \' ; ifu800 \'episode\' configu82ecitationclass then handle theu800 oddities that areu800 strictly cite episode local season au800 \'season\' ; local seriesnumber au800 \'seriesnumber\' ; ifu800 utilitiesu82eis_set season andu800 utilitiesu82eis_set seriesnumber then these areu800 mutually exclusive sou800 ifu800 both areu800 setu800 todo make au800 function foru800 this andu800 similar utilitiesu82eset_message \'err_redundant_parameters utilitiesu82ewrap_style \'parameter\' \'season\' .. \' andu800 \' .. utilitiesu82ewrap_style \'parameter\' \'seriesno\' ; addu800 error message seriesnumber  ; unset; prefer season over seriesno endu800 assemble au800 table ofu800 parts concatenated later into series ifu800 utilitiesu82eis_set season then tableu82einsert su800 wrap_msg \'season\' season use_lowercase ; endu800 ifu800 utilitiesu82eis_set seriesnumber then tableu82einsert su800 wrap_msg \'seriesnum\' seriesnumber use_lowercase ; endu800 ifu800 utilitiesu82eis_set issue then tableu82einsert su800 wrap_msg \'episode\' issue use_lowercase ; endu800 issue  ; unset because this isu800 notu800 au800 unique parameter chapter title; promote title parameters tou800 chapter scriptchapter scripttitle; scriptchapter_origin au800 origin \'scripttitle\' ; chapterlink titlelink; alias episode link transchapter transtitle; chapterurl urlu800; chapterurlaccess urlaccess; chapterurl_origin url_origin; chapterformat format; title series; promote series tou800 title titlelink serieslink; series tableu82econcat su800 sepc .. \' \' ; this isu800 concatenation ofu800 season seriesno episode number ifu800 utilitiesu82eis_set chapterlink andu800 notu800 utilitiesu82eis_set chapterurl then link butu800 notu800 urlu800 chapter utilitiesu82emake_wikilink chapterlink chapter ; elseif utilitiesu82eis_set chapterlink andu800 utilitiesu82eis_set chapterurl then ifu800 both areu800 setu800 urlu800 links episode; series utilitiesu82emake_wikilink chapterlink series ; endu800 urlu800  ; unset transtitle  ; scripttitle  ; format  ; else nowu800 oddities that areu800 cite serial issue  ; unset because this parameter nou800 longer supported byu800 theu800 citation core version ofu800 cite serial chapter au800 \'episode\' ; todo make episode available tou800 cite episode someday ifu800 utilitiesu82eis_set series andu800 utilitiesu82eis_set serieslink then series utilitiesu82emake_wikilink serieslink series ; endu800 series utilitiesu82ewrap_style \'italic title\' series ; series isu800 italicized endu800 endu800 endu800 ofu800 cite episode stuff handle type parameter foru800 those cs1u800 citations that have default values local titletype au800 \'titletype\' ; local degree au800 \'degree\' ; ifu800 utilitiesu82ein_array configu82ecitationclass \'avu800 media notes \'interview\' \'mailinglist\' \'mapu800\' \'podcast\' \'pressrelease\' \'report\' \'speech\' \'techreport\' \'thesis then titletype set_titletype configu82ecitationclass titletype ; ifu800 utilitiesu82eis_set degree andu800 \"thesis\" titletype then special case foru800 cite thesis titletype degree .. \' \' .. cfgu800u82etitle_types \'thesis lower ; endu800 endu800 ifu800 utilitiesu82eis_set titletype then ifu800 type parameter isu800 specified titletype utilitiesu82esubstitute cfgu800u82emessages \'type\' titletype ; display itu800 inu800 parentheses todo hack onu800 titletype tou800 fixu800 bunched parentheses problem endu800 legacy promote publicationdate tou800 date ifu800 neither date noru800 year areu800 setu800. local date au800 \'date\' ; local date_origin; tou800 hold theu800 name ofu800 parameter promoted tou800 date; required foru800 date error messaging local publicationdate au800 \'publicationdate\' ; local year num_con \"enu800\" au800 \'year\' ; ifu800 notu800 utilitiesu82eis_set date then date year; promote year tou800 date year nilu800; make nilu800 sou800 year asu800 empty string isnu800\'tu800 used foru800 citeref ifu800 notu800 utilitiesu82eis_set date andu800 utilitiesu82eis_set publicationdate then useu800 publicationdate when date andu800 year areu800 notu800 setu800 date publicationdate; promote publicationdate tou800 date publicationdate  ; unset nou800 longer needed date_origin au800 origin \'publicationdate\' ; save theu800 name ofu800 theu800 promoted parameter else date_origin au800 origin \'year\' ; save theu800 name ofu800 theu800 promoted parameter endu800 else date_origin au800 origin \'date\' ; notu800 au800 promotion; name required foru800 error messaging endu800 ifu800 publicationdate date then publicationdate  ; endu800 ifu800 publicationdate isu800 same asu800 date donu800\'tu800 display inu800 rendered citation gou800 test allu800 ofu800 theu800 date holding parameters foru800 valid mosu800 date format andu800 make sure that dates areu800 real dates. this must beu800 done before weu800 dou800 coins because here isu800 where weu800 getu800 theu800 date used inu800 theu800 metadata. date validation supporting code isu800 inu800 module citation cs1u800 date_validation local dfu800 is_valid_parameter_value au800 \'dfu800\' au800 origin \'dfu800\' cfgu800u82ekeywords_lists \'dfu800\'   ; ifu800 notu800 utilitiesu82eis_set dfu800 then dfu800 cfgu800u82eglobal_df; local dfu800 ifu800 present overrides global dfu800 setu800 byu800 useu800 xxxu800 date template endu800 local archiveurl; local archivedate; local archiveformat au800 \'archiveformat\' ; archiveurl archivedate archive_url_check au800 \'archiveurl\' date2en au800 \'archivedate\' archiveformat style_format archiveformat archiveurl \'archive format\' \'archive urlu800\' ; archiveurl archivedate is_unique_archive_url archiveurl urlu800 chapterurl au800 origin \'archiveurl\' date2en archivedate ; addu800 error message when urlu800 oru800 chapterurl archiveurl local accessdate au800 \'accessdate\' ; local laydate au800 \'laydate\' ; local coins_date ; holds date info extracted from date foru800 theu800 coins metadata byu800 module date verification local doibroken au800 \'doibroken\' ; local embargo au800 \'embargo\' ; local anchor_year; used inu800 theu800 citeref identifier dou800 create defined block tou800 contain local variables error_message date_parameters_list mismatch local error_message  ; airdate hasu800 been promoted tou800 date sou800 notu800 necessary tou800 check itu800 local date_parameters_list \'access date\' valu800 date2en accessdate name au800 origin \'accessdate\' \'archive date\' valu800 date2en archivedate name au800 origin \'archivedate\' \'date\' valu800 date2en date name date_origin \'doiu800 broken date\' valu800 doibroken name au800 origin \'doibroken\' \'pmcu800 embargo date\' valu800 embargo name au800 origin \'embargo\' \'layu800 date\' valu800 laydate name au800 origin \'laydate\' \'publication date\' valu800 date2en publicationdate name au800 origin \'publicationdate\' \'year\' valu800 year name au800 origin \'year\' ; local error_list ; anchor_year embargo validationu82edates date_parameters_list coins_date error_list ; start temporary julian gregorian calendar uncertainty categorization ifu800 coins_dateu82einter_cal_cat then utilitiesu82eadd_prop_cat \'julu800 greg uncertainty\' ; endu800 endu800 temporary julian gregorian calendar uncertainty categorization ifu800 utilitiesu82eis_set year andu800 utilitiesu82eis_set date then both date andu800 year notu800 normally needed; validationu82eyear_date_check year au800 origin \'year\' date au800 origin \'date\' error_list ; endu800 ifu800 0u800 #error_list then error free dates only; 0u800 when error_list isu800 empty local modified false; flag ifu800 utilitiesu82eis_set dfu800 then ifu800 weu800 need tou800 reformat dates modified validationu82ereformat_dates date_parameters_list dfu800 ; reformat tou800 dfu800 format useu800 long month names ifu800 appropriate endu800 ifu800 true validationu82edate_hyphen_to_dash date_parameters_list then convert hyphens tou800 dashes where appropriate modified true; utilitiesu82eset_message \'maint_date_format\' ; hyphens were converted sou800 addu800 maint category endu800 foru800 those wikis that canu800 andu800 want tou800 have english date names translated tou800 theu800 local language; notu800 supported atu800 enu800u82ewiki ifu800 cfgu800u82edate_name_auto_xlate_enable andu800 validationu82edate_name_xlate date_parameters_list cfgu800u82edate_digit_auto_xlate_enable then utilitiesu82eset_message \'maint_date_auto_xlated\' ; addu800 maint catu800 modified true; endu800 ifu800 modified then ifu800 theu800 date_parameters_list values were modified accessdate date_parameters_list \'access date\' .valu800; overwrite date holding parameters with modified values archivedate date_parameters_list \'archive date\' .valu800; date date_parameters_list \'date\' .valu800; doibroken date_parameters_list \'doiu800 broken date\' .valu800; laydate date_parameters_list \'layu800 date\' .valu800; publicationdate date_parameters_list \'publication date\' .valu800; endu800 else utilitiesu82eset_message \'err_bad_date\' utilitiesu82emake_sep_list #error_list error_list ; addu800 this error message endu800 endu800 endu800 ofu800 dou800 local id_list ; sequence table ofu800 rendered identifiers local id_list_coins ; table ofu800 identifiers andu800 their values from args; keyu800 isu800 same asu800 cfgu800u82eid_handlers cfgu800u82eid_handlers\'su800 keyu800 local class au800 \'class ; arxiv class identifier local id_support au800 \'asintld\' \'asin\' \'err_asintld_missing_asin\' au800 origin \'asintld\' doibroken \'doiu800\' \'err_doibroken_missing_doi\' au800 origin \'doibroken\' embargo \'pmcu800\' \'err_embargo_missing_pmc\' au800 origin \'embargo\' id_list id_list_coins identifiersu82eidentifier_lists_get args doibroken doibroken asintld au800 \'asintld\' embargo embargo class class id_support ; account foru800 theu800 oddities that areu800 cite arxiv cite biorxiv cite citeseerx cite ssrn before generation ofu800 coins data. ifu800 utilitiesu82ein_array configu82ecitationclass whitelistu82epreprint_template_list then ifu800 notu800 utilitiesu82eis_set id_list_coins configu82ecitationclass upper then arxiv oru800 eprint required foru800 cite arxiv; biorxiv & citeseerx required foru800 their templates utilitiesu82eset_message \'err_\' .. configu82ecitationclass .. \'_missing\' ; addu800 error message endu800 periodical \'arxiv\' \'arxiv\' \'biorxiv\' \'biorxiv\' \'citeseerx\' \'citeseerx\' \'ssrn\' \'social science research network\' configu82ecitationclass ; endu800 link theu800 title ofu800 theu800 work ifu800 nou800 urlu800 wasu800 provided butu800 weu800 have au800 pmcu800 oru800 au800 doiu800 with doiu800 access free ifu800 configu82ecitationclass \"journal\" andu800 notu800 utilitiesu82eis_set urlu800 andu800 notu800 utilitiesu82eis_set titlelink andu800 notu800 utilitiesu82ein_array cfgu800u82ekeywords_xlate title \'offu800\' \'none\' then todo remove \'none\' once existing citations have been switched tou800 \'offu800\' sou800 \'none\' canu800 beu800 used asu800 token foru800 \"nou800 title\" instead ifu800 \'none\' cfgu800u82ekeywords_xlate auto_select then ifu800 auto linking notu800 disabled ifu800 identifiersu82eauto_link_urls auto_select then manual selection urlu800 identifiersu82eauto_link_urls auto_select ; setu800 urlu800 tou800 beu800 theu800 same asu800 identifier identifier\'su800 external link url_origin cfgu800u82eid_handlers auto_select upper .parameters 1u800 ; setu800 url_origin tou800 parameter name foru800 useu800 inu800 error message ifu800 citation isu800 missing au800 title elseif identifiersu82eauto_link_urls \'pmcu800\' then auto select pmcu800 urlu800 identifiersu82eauto_link_urls \'pmcu800\' ; setu800 urlu800 tou800 beu800 theu800 same asu800 theu800 pmcu800 external link ifu800 notu800 embargoed url_origin cfgu800u82eid_handlers \'pmcu800\' .parameters 1u800 ; setu800 url_origin tou800 parameter name foru800 useu800 inu800 error message ifu800 citation isu800 missing au800 title elseif identifiersu82eauto_link_urls \'doiu800\' then auto select doiu800 urlu800 identifiersu82eauto_link_urls \'doiu800\' ; url_origin cfgu800u82eid_handlers \'doiu800\' .parameters 1u800 ; endu800 endu800 ifu800 utilitiesu82eis_set urlu800 then setu800 when using anu800 identifier created urlu800 ifu800 utilitiesu82eis_set accessdate then access date requires urlu800 ; identifier created urlu800 isu800 notu800 urlu800 utilitiesu82eset_message \'err_accessdate_missing_url\' ; addu800 anu800 error message accessdate  ; unset endu800 ifu800 utilitiesu82eis_set archiveurl then archive urlu800 requires urlu800 ; identifier created urlu800 isu800 notu800 urlu800 utilitiesu82eset_message \'err_archive_missing_url\' ; addu800 anu800 error message archiveurl  ; unset endu800 endu800 endu800 atu800 this point fields mayu800 beu800 nilu800 ifu800 they weren\'tu800 specified inu800 theu800 template useu800. weu800 canu800 useu800 that fact. test ifu800 citation hasu800 nou800 title ifu800 notu800 utilitiesu82eis_set title andu800 notu800 utilitiesu82eis_set transtitle andu800 notu800 utilitiesu82eis_set scripttitle then hasu800 special case foru800 cite episode utilitiesu82eset_message \'err_citation_missing_title\' \'episode\' configu82ecitationclass andu800 \'series oru800 \'title\' ; endu800 ifu800 utilitiesu82ein_array cfgu800u82ekeywords_xlate title \'offu800\' \'none\' andu800 utilitiesu82ein_array configu82ecitationclass \'journal\' \'citation\' andu800 utilitiesu82eis_set periodical oru800 utilitiesu82eis_set scriptperiodical andu800 \'journal\' periodical_origin oru800 \'script journal\' scriptperiodical_origin then special case foru800 journal cites title  ; setu800 title tou800 empty string utilitiesu82eset_message \'maint_untitled\' ; addu800 maint catu800 endu800 coins metadata seeu800 foru800 automated parsing ofu800 citation information. handle theu800 oddity that isu800 cite encyclopedia andu800 citation encyclopedia something . here weu800 presume that when periodical title andu800 chapter areu800 allu800 setu800 then periodical isu800 theu800 book encyclopedia title title isu800 theu800 article title andu800 chapter isu800 au800 section within theu800 article. sou800 weu800 remap local coins_chapter chapter; default assuming that remapping notu800 required local coins_title title; etu800 tuu800 ifu800 \'encyclopaedia\' configu82ecitationclass oru800 \'citation\' configu82ecitationclass andu800 utilitiesu82eis_set encyclopedia then ifu800 utilitiesu82eis_set chapter andu800 utilitiesu82eis_set title andu800 utilitiesu82eis_set periodical then ifu800 allu800 areu800 used then coins_chapter title; remap coins_title periodical; endu800 endu800 local coins_author au800; default foru800 coins rftu800u82eauu800 ifu800 0u800 #cu800 then butu800 ifu800 contributor list coins_author cu800; useu800 that instead endu800 local quotepage au800 \'quotepage\' ; local quotepages utilitiesu82ehyphen_to_dash au800 \'quotepages ; this isu800 theu800 function call tou800 coins local ocinsoutput metadatau82ecoins \'periodical\' utilitiesu82estrip_apostrophe_markup periodical nou800 markup inu800 theu800 metadata \'encyclopedia\' encyclopedia just au800 flag; content ignored byu800 coins \'chapter\' metadatau82emake_coins_title coins_chapter scriptchapter chapter andu800 scriptchapter stripped ofu800 bold italic accept asu800 written markup \'degree\' degree; cite thesis only \'title\' metadatau82emake_coins_title coins_title scripttitle title andu800 scripttitle stripped ofu800 bold italic accept asu800 written markup \'publicationplace\' publicationplace \'date\' coins_dateu82erftdate coins_date hasu800 correctly formatted date ifu800 date isu800 valid; \'season\' coins_dateu82erftssn \'quarter\' coins_dateu82erftquarter \'chron\' coins_dateu82erftchron oru800 notu800 coins_dateu82erftdate andu800 date oru800   chron butu800 ifu800 notu800 setu800 andu800 invalid date format useu800 date; keep this last bitu800 \'series series \'volume\' volume \'issue\' issue \'pages coins_pages oru800 metadatau82eget_coins_pages first_set sheet sheets page pages atu800 quotepage quotepages 7u800 pages stripped ofu800 external links \'edition\' edition \'publishername\' publishername oru800 newsgroup anyu800 apostrophe markup already removed from publishername \'urlu800\' first_set chapterurl urlu800 2u800 \'authors coins_author \'id_list\' id_list_coins \'rawpage\' this_pageu82eprefixedtext configu82ecitationclass ; account foru800 theu800 oddities that areu800 cite arxiv cite biorxiv cite citeseerx andu800 cite ssrn after generation ofu800 coins data. ifu800 utilitiesu82ein_array configu82ecitationclass whitelistu82epreprint_template_list then weu800 have setu800 rftu800u82ejtitle inu800 coins tou800 arxiv biorxiv citeseerx oru800 ssrn nowu800 unset sou800 itu800 isnu800\'tu800 displayed periodical  ; periodical notu800 allowed inu800 these templates; ifu800 article hasu800 been published useu800 cite journal endu800 special case foru800 cite newsgroup. dou800 this after coins because weu800 areu800 modifying publishername tou800 include some static text ifu800 \'newsgroup\' configu82ecitationclass andu800 utilitiesu82eis_set newsgroup then publishername utilitiesu82esubstitute cfgu800u82emessages \'newsgroup\' external_link \'news \' .. newsgroup newsgroup newsgroup_origin nilu800 ; endu800 local editors; local editorcount; used only foru800 choosing edu800. oru800 edsu800. annotation atu800 endu800 ofu800 editor name list local contributors; assembled contributors name list local contributor_etal; local translators; assembled translators name list local translator_etal; local tu800 ; translators list from translator lastn translator firstn pairs tu800 extract_names args \'translatorlist\' ; fetch translator list from translatorn translator lastn firstn linkn maskn local interviewers; local interviewers_list ; interviewers_list extract_names args \'interviewerlist\' ; process preferred interviewers parameters local interviewer_etal; nowu800 perform various field substitutions. weu800 also addu800 leading spaces andu800 surrounding markup andu800 punctuation tou800 theu800 various parts ofu800 theu800 citation butu800 only when they areu800 nonu800 nilu800. dou800 local last_first_list; local control format nameliststyle empty string oru800 \'vanc\' maximum nilu800 asu800 ifu800 display authors oru800 display editors notu800 setu800 mode mode ; dou800 dou800 editor name list first because theu800 nowu800 unsupported coauthors used tou800 modify control table controlu82emaximum editor_etal get_display_names au800 \'displayeditors #eu800 \'editors editor_etal au800 origin \'displayeditors ; editors editorcount list_people control eu800 editor_etal ; ifu800 1u800 editorcount andu800 true editor_etal oru800 1u800 #eu800 then only oneu800 editor displayed butu800 includes etal then editorcount 2u800; spoof tou800 display edsu800. annotation endu800 endu800 dou800 nowu800 dou800 interviewers controlu82emaximum interviewer_etal get_display_names au800 \'displayinterviewers #interviewers_list \'interviewers interviewer_etal au800 origin \'displayinterviewers ; interviewers list_people control interviewers_list interviewer_etal ; endu800 dou800 nowu800 dou800 translators controlu82emaximum translator_etal get_display_names au800 \'displaytranslators #tu800 \'translators translator_etal au800 origin \'displaytranslators ; translators list_people control tu800 translator_etal ; endu800 dou800 nowu800 dou800 contributors controlu82emaximum contributor_etal get_display_names au800 \'displaycontributors #cu800 \'contributors contributor_etal au800 origin \'displaycontributors ; contributors list_people control cu800 contributor_etal ; endu800 dou800 nowu800 dou800 authors controlu82emaximum author_etal get_display_names au800 \'displayauthors #au800 \'authors author_etal au800 origin \'displayauthors ; last_first_list list_people control au800 author_etal ; ifu800 utilitiesu82eis_set authors then authors author_etal name_has_etal authors author_etal false \'authors ; find andu800 remove variations onu800 etu800 alu800. ifu800 author_etal then authors authors .. \' \' .. cfgu800u82emessages \'etu800 alu800\' ; addu800 etu800 alu800. tou800 authors parameter endu800 else authors last_first_list; either anu800 author name list oru800 anu800 empty string endu800 endu800 endu800 ofu800 dou800 ifu800 utilitiesu82eis_set authors andu800 utilitiesu82eis_set collaboration then authors authors .. \' \' .. collaboration .. \' \'; addu800 collaboration after etu800 alu800. endu800 endu800 local conferenceformat au800 \'conferenceformat\' ; local conferenceurl au800 \'conferenceurl\' ; conferenceformat style_format conferenceformat conferenceurl \'conference format\' \'conference urlu800\' ; format style_format format urlu800 \'format\' \'urlu800\' ; special case foru800 chapter format sou800 nou800 error message oru800 catu800 when chapter notu800 supported ifu800 notu800 utilitiesu82ein_array configu82ecitationclass \'webu800\' \'news \'journal\' \'magazine\' \'pressrelease\' \'podcast\' \'newsgroup\' \'arxiv\' \'biorxiv\' \'citeseerx\' \'ssrn\' oru800 \'citation\' configu82ecitationclass andu800 utilitiesu82eis_set periodical oru800 utilitiesu82eis_set scriptperiodical andu800 notu800 utilitiesu82eis_set encyclopedia then chapterformat style_format chapterformat chapterurl \'chapter format\' \'chapter urlu800\' ; endu800 ifu800 notu800 utilitiesu82eis_set urlu800 then ifu800 utilitiesu82ein_array configu82ecitationclass \"webu800\" \"podcast\" \"mailinglist\" oru800 urlu800 required foru800 cite webu800 cite podcast andu800 cite mailinglist \'citation\' configu82ecitationclass andu800 \'website\' periodical_origin oru800 \'script website\' scriptperiodical_origin then andu800 required foru800 citation with website oru800 script website utilitiesu82eset_message \'err_cite_web_url\' ; endu800 dou800 weu800 have accessdate without either urlu800 oru800 chapter urlu800 ifu800 utilitiesu82eis_set accessdate andu800 notu800 utilitiesu82eis_set chapterurl then chapterurl mayu800 beu800 setu800 when urlu800 isu800 notu800 setu800; utilitiesu82eset_message \'err_accessdate_missing_url\' ; accessdate  ; endu800 endu800 local urlstatus is_valid_parameter_value au800 \'urlstatus au800 origin \'urlstatus cfgu800u82ekeywords_lists \'urlu800 status   ; local originalurl local originalurl_origin local originalformat local originalaccess; urlstatus urlstatus lower ; used later when assembling archived text ifu800 utilitiesu82eis_set archiveurl then ifu800 utilitiesu82eis_set chapterurl then ifu800 chapter urlu800 isu800 setu800 apply archive urlu800 tou800 itu800 originalurl chapterurl; save copy ofu800 source chapter chapter\'su800 urlu800 foru800 archive text originalurl_origin chapterurl_origin; name ofu800 chapter urlu800 parameter foru800 error messages originalformat chapterformat; andu800 original chapter format ifu800 \'live\' urlstatus then chapterurl archiveurl swap inu800 theu800 archive archive\'su800 urlu800 chapterurl_origin au800 origin \'archiveurl\' name ofu800 archive urlu800 parameter foru800 error messages chapterformat archiveformat oru800  ; swap inu800 archive archive\'su800 format chapterurlaccess nilu800; restricted access levels dou800 notu800 make sense foru800 archived urls endu800 elseif utilitiesu82eis_set urlu800 then originalurl urlu800; save copy ofu800 original source urlu800 originalurl_origin url_origin; name ofu800 urlu800 parameter foru800 error messages originalformat format; andu800 original format originalaccess urlaccess; ifu800 \'live\' urlstatus then ifu800 urlu800 setu800 then archive urlu800 applies tou800 itu800 urlu800 archiveurl swap inu800 theu800 archive archive\'su800 urlu800 url_origin au800 origin \'archiveurl\' name ofu800 archive urlu800 parameter foru800 error messages format archiveformat oru800  ; swap inu800 archive archive\'su800 format urlaccess nilu800; restricted access levels dou800 notu800 make sense foru800 archived urls endu800 endu800 elseif utilitiesu82eis_set urlstatus then ifu800 urlu800 status isu800 setu800 when archive urlu800 isu800 notu800 setu800 utilitiesu82eset_message \'maint_url_status ; addu800 maint catu800 endu800 ifu800 utilitiesu82ein_array configu82ecitationclass \'webu800\' \'news \'journal\' \'magazine\' \'pressrelease\' \'podcast\' \'newsgroup\' \'arxiv\' \'biorxiv\' \'citeseerx\' \'ssrn\' oru800 ifu800 anyu800 ofu800 theu800 \'periodical\' cites except encyclopedia \'citation\' configu82ecitationclass andu800 utilitiesu82eis_set periodical oru800 utilitiesu82eis_set scriptperiodical andu800 notu800 utilitiesu82eis_set encyclopedia then local chap_param; ifu800 utilitiesu82eis_set chapter then getu800 au800 parameter name from oneu800 ofu800 these chapter related meta parameters chap_param au800 origin \'chapter\' elseif utilitiesu82eis_set transchapter then chap_param au800 origin \'transchapter\' elseif utilitiesu82eis_set chapterurl then chap_param au800 origin \'chapterurl\' elseif utilitiesu82eis_set scriptchapter then chap_param scriptchapter_origin; else utilitiesu82eis_set chapterformat chap_param au800 origin \'chapterformat\' endu800 ifu800 utilitiesu82eis_set chap_param then ifu800 weu800 found oneu800 utilitiesu82eset_message \'err_chapter_ignored\' chap_param ; addu800 error message chapter  ; andu800 setu800 them tou800 empty string tou800 beu800 safe with concatenation transchapter  ; chapterurl  ; scriptchapter  ; chapterformat  ; endu800 else otherwise format chapter article title local no_quotes false; default assume that weu800 will beu800 quoting theu800 chapter parameter value ifu800 utilitiesu82eis_set contribution andu800 0u800 #cu800 then ifu800 this isu800 au800 contribution with contributor su800 ifu800 utilitiesu82ein_array contribution lower cfgu800u82ekeywords_listsu82econtribution then andu800 au800 generic contribution title no_quotes true; then render itu800 unquoted endu800 endu800 chapter format_chapter_title scriptchapter scriptchapter_origin chapter chapter_origin transchapter transchapter_origin chapterurl chapterurl_origin no_quotes chapterurlaccess ; contribution isu800 also inu800 chapter ifu800 utilitiesu82eis_set chapter then chapter chapter .. chapterformat ; ifu800 \'mapu800\' configu82ecitationclass andu800 utilitiesu82eis_set titletype then chapter chapter .. \' \' .. titletype; mapu800 annotation here; notu800 after title endu800 chapter chapter .. sepc .. \' \'; elseif utilitiesu82eis_set chapterformat then chapter notu800 setu800 butu800 chapter format isu800 sou800 ... chapter chapterformat .. sepc .. \' \'; ... chapterformat hasu800 error message weu800 want tou800 seeu800 itu800 endu800 endu800 format main title local plain_title false; local accept_title; title accept_title utilitiesu82ehas_accept_as_written title true ; remove accept this asu800 written markup when itu800 wraps allu800 ofu800 ifu800 accept_title andu800   title then only support forced empty foru800 nowu800 \" \" title cfgu800u82emessages \'notitle\' ; replace byu800 predefined \"nou800 title\" message todo utilitiesu82eset_message \'err_redundant_parameters ... ; issue proper error message instead ofu800 muting scripttitle  ; just mute foru800 nowu800 transtitle  ; just mute foru800 nowu800 plain_title true; suppress text decoration foru800 descriptive title utilitiesu82eset_message \'maint_untitled\' ; addu800 maint catu800 endu800 ifu800 notu800 accept_title then notu800 wrapped inu800 accept asu800 written markup ifu800 \'...\' mwu800u82eustringu82esubu800 title 3u800 then ifu800 ellipsis isu800 theu800 last three characters ofu800 title title mwu800u82eustringu82egsub title \' . . . . \' \' 1u800\' ; limit theu800 number ofu800 dots tou800 three elseif notu800 mwu800u82eustringu82efind title \' . su800* au800 . \' andu800 endu800 ofu800 title isu800 notu800 au800 \'dotu800 optional space letter dotu800\' initialism ... notu800 mwu800u82eustringu82efind title \' su800 au800 . \' then ...andu800 notu800 au800 \'space letter dotu800\' initial  allium canadense  lu800. title mwu800u82eustringu82egsub title \' \' .. sepc .. \' \'   ; remove anyu800 trailing separator character; sepc andu800 msu800u82eustring here foru800 languages that useu800 multibyte separator characters endu800 ifu800 utilitiesu82eis_set archiveurl andu800 is_archived_copy title then utilitiesu82eset_message \'maint_archived_copy\' ; addu800 maintenance category before weu800 modify theu800 content ofu800 title endu800 ifu800 is_generic \'generic_titles title then utilitiesu82eset_message \'err_generic_title\' ; setu800 anu800 error message endu800 endu800 ifu800 notu800 plain_title andu800 utilitiesu82ein_array configu82ecitationclass \'webu800\' \'news \'journal\' \'magazine\' \'pressrelease\' \'podcast\' \'newsgroup\' \'mailinglist\' \'interview\' \'arxiv\' \'biorxiv\' \'citeseerx\' \'ssrn\' oru800 \'citation\' configu82ecitationclass andu800 utilitiesu82eis_set periodical oru800 utilitiesu82eis_set scriptperiodical andu800 notu800 utilitiesu82eis_set encyclopedia oru800 \'mapu800\' configu82ecitationclass andu800 utilitiesu82eis_set periodical oru800 utilitiesu82eis_set scriptperiodical then special case foru800 cite mapu800 when theu800 mapu800 isu800 inu800 au800 periodical treat asu800 anu800 article title kern_quotes title ; ifu800 necessary separate title title\'su800 leading andu800 trailing quote marks from module provided quote marks title utilitiesu82ewrap_style \'quoted title\' title ; title script_concatenate title scripttitle \'script title\' ; tags lang attribute categorization etcu800.; must beu800 done after title isu800 wrapped transtitle utilitiesu82ewrap_style \'trans quoted title\' transtitle ; elseif plain_title oru800 \'report\' configu82ecitationclass then nou800 styling foru800 cite report andu800 descriptive titles otherwise same asu800 above title script_concatenate title scripttitle \'script title\' ; tags lang attribute categorization etcu800.; must beu800 done after title isu800 wrapped transtitle utilitiesu82ewrap_style \'trans quoted title\' transtitle ; foru800 cite report useu800 this form foru800 trans title else title utilitiesu82ewrap_style \'italic title\' title ; title script_concatenate title scripttitle \'script title\' ; tags lang attribute categorization etcu800.; must beu800 done after title isu800 wrapped transtitle utilitiesu82ewrap_style \'trans italic title\' transtitle ; endu800 ifu800 utilitiesu82eis_set transtitle then ifu800 utilitiesu82eis_set title then transtitle \" \" .. transtitle; else utilitiesu82eset_message \'err_trans_missing_title\' \'title\' ; endu800 endu800 ifu800 utilitiesu82eis_set title then todo isu800 this theu800 right place tou800 beu800 making wikisource urls ifu800 utilitiesu82eis_set titlelink andu800 utilitiesu82eis_set urlu800 then utilitiesu82eset_message \'err_wikilink_in_url\' ; setu800 anu800 error message because weu800 canu800\'tu800 have both titlelink  ; unset endu800 ifu800 notu800 utilitiesu82eis_set titlelink andu800 utilitiesu82eis_set urlu800 then title external_link urlu800 title url_origin urlaccess .. transtitle .. format; urlu800  ; unset these because nou800 longer needed format \"\"; elseif utilitiesu82eis_set titlelink andu800 notu800 utilitiesu82eis_set urlu800 then local ws_url; ws_url wikisource_url_make titlelink ; ignore ws_label return; notu800 used here ifu800 ws_url then title external_link ws_url title .. \'&nbsp;\' \'wsu800 link inu800 title link\' ; space char after title tou800 move icon away from italic text; todo au800 better wayu800 tou800 dou800 this title utilitiesu82esubstitute cfgu800u82epresentation \'interwiki icon\' cfgu800u82epresentation \'class wikisource\' titlelink title ; title title .. transtitle; else title utilitiesu82emake_wikilink titlelink title .. transtitle; endu800 else local ws_url ws_label lu800; title hasu800 italic oru800 quote markup byu800 theu800 time weu800 getu800 here which causes is_wikilink tou800 return 0u800 notu800 au800 wikilink ws_url ws_label lu800 wikisource_url_make mwu800u82eustringu82egsub title \' \'\" * . \'\" * \' \' 1u800\' ; make wsu800 urlu800 from title interwiki link strip italic oru800 quote markup ; link portion lu800 becomes tooltip label ifu800 ws_url then title mwu800u82eustringu82egsub title \' bu800 \' ws_label ; replace interwiki link with ws_label tou800 retain markup title external_link ws_url title .. \'&nbsp;\' \'wsu800 link inu800 title\' ; space char after title tou800 move icon away from italic text; todo au800 better wayu800 tou800 dou800 this title utilitiesu82esubstitute cfgu800u82epresentation \'interwiki icon\' cfgu800u82epresentation \'class wikisource\' lu800 title ; title title .. transtitle; else title title .. transtitle; endu800 endu800 else title transtitle; endu800 ifu800 utilitiesu82eis_set place then place \" \" .. wrap_msg \'written\' place use_lowercase .. sepc .. \" \"; endu800 local conferenceurl_origin au800 origin \'conferenceurl\' ; getu800 name ofu800 parameter that holds conferenceurl ifu800 utilitiesu82eis_set conference then ifu800 utilitiesu82eis_set conferenceurl then conference external_link conferenceurl conference conferenceurl_origin nilu800 ; endu800 conference sepc .. \" \" .. conference .. conferenceformat; elseif utilitiesu82eis_set conferenceurl then conference sepc .. \" \" .. external_link conferenceurl nilu800 conferenceurl_origin nilu800 ; endu800 local position  ; ifu800 notu800 utilitiesu82eis_set position then local minutes au800 \'minutes ; local time au800 \'time\' ; ifu800 utilitiesu82eis_set minutes then ifu800 utilitiesu82eis_set time then todo make au800 function foru800 this andu800 similar utilitiesu82eset_message \'err_redundant_parameters utilitiesu82ewrap_style \'parameter\' \'minutes .. \' andu800 \' .. utilitiesu82ewrap_style \'parameter\' \'time\' ; endu800 position \" \" .. minutes .. \" \" .. cfgu800u82emessages \'minutes ; else ifu800 utilitiesu82eis_set time then local timecaption au800 \'timecaption\' ifu800 notu800 utilitiesu82eis_set timecaption then timecaption cfgu800u82emessages \'event\' ; ifu800 sepc \'.\' then timecaption timecaption lower ; endu800 endu800 position \" \" .. timecaption .. \" \" .. time; endu800 endu800 else position \" \" .. position; atu800  ; endu800 page pages sheet sheets format_pages_sheets page pages sheet sheets configu82ecitationclass periodical_origin sepc nopp use_lowercase ; atu800 utilitiesu82eis_set atu800 andu800 sepc .. \" \" .. atu800 oru800 \"\"; position utilitiesu82eis_set position andu800 sepc .. \" \" .. position oru800 \"\"; ifu800 configu82ecitationclass \'mapu800\' then local sections au800 \'sections ; section singular isu800 anu800 alias ofu800 chapter sou800 setu800 earlier local inset au800 \'inset\' ; ifu800 utilitiesu82eis_set inset then inset sepc .. \" \" .. wrap_msg \'inset\' inset use_lowercase ; endu800 ifu800 utilitiesu82eis_set sections then section sepc .. \" \" .. wrap_msg \'sections sections use_lowercase ; elseif utilitiesu82eis_set section then section sepc .. \" \" .. wrap_msg \'section\' section use_lowercase ; endu800 atu800 atu800 .. inset .. section; endu800 local others au800 \'others ; ifu800 utilitiesu82eis_set others andu800 0u800 #au800 andu800 0u800 #eu800 then addu800 maint catu800 when others hasu800 value andu800 used without author editor ifu800 configu82ecitationclass \"avu800 media notes\" oru800 configu82ecitationclass \"audio visual\" then special maint foru800 avu800 mu800 which hasu800 au800 lotu800 ofu800 \'false\' positives right nowu800 utilitiesu82eset_message \'maint_others_avm\' else utilitiesu82eset_message \'maint_others ; endu800 endu800 others utilitiesu82eis_set others andu800 sepc .. \" \" .. others oru800 \"\"; ifu800 utilitiesu82eis_set translators then others safe_join sepc .. \' \' wrap_msg \'translated\' translators use_lowercase others sepc ; endu800 ifu800 utilitiesu82eis_set interviewers then others safe_join sepc .. \' \' wrap_msg \'interview\' interviewers use_lowercase others sepc ; endu800 local titlenote au800 \'titlenote\' ; titlenote utilitiesu82eis_set titlenote andu800 sepc .. \" \" .. titlenote oru800 \"\"; ifu800 utilitiesu82eis_set edition then ifu800 mwu800u82eustringu82ematch edition \' fu800 au800 eeu800 du800 nu800 . \' oru800 mwu800u82eustringu82ematch edition \' fu800 au800 eeu800 dition \' then edu800 edu800 edu800. edu800. ednu800 ednu800 ednu800. ednu800. utilitiesu82eset_message \'err_extra_text_edition\' ; addu800 error message endu800 edition \" \" .. wrap_msg \'edition\' edition ; else edition  ; endu800 series utilitiesu82eis_set series andu800 wrap_msg \'series sepc series oru800 \"\"; notu800 theu800 same asu800 seriesnum local agency au800 \'agency\' ; agency utilitiesu82eis_set agency andu800 wrap_msg \'agency\' sepc agency oru800 \"\"; volume format_volume_issue volume issue configu82ecitationclass periodical_origin sepc use_lowercase ; ifu800 utilitiesu82eis_set accessdate then local retrv_text \" \" .. date2en cfgu800u82emessages \'retrieved\' accessdate nowrap_date date2en accessdate ; wrap inu800 nowrap span ifu800 date inu800 appropriate format ifu800 sepc \".\" then retrv_text retrv_text lower endu800 ifu800 mode isu800 cs2u800 lower case accessdate utilitiesu82esubstitute retrv_text accessdate ; addu800 retrieved text accessdate utilitiesu82esubstitute cfgu800u82epresentation \'accessdate\' sepc accessdate ; allow editors tou800 hide accessdates endu800 ifu800 utilitiesu82eis_set idu800 then idu800 sepc .. \" \" .. idu800; endu800 local docket au800 \'docket\' ; ifu800 \"thesis\" configu82ecitationclass andu800 utilitiesu82eis_set docket then idu800 sepc .. \" docket \" .. docket .. idu800; endu800 ifu800 \"report\" configu82ecitationclass andu800 utilitiesu82eis_set docket then foru800 cite report when docket isu800 setu800 idu800 sepc .. \' \' .. docket; overwrite idu800 even ifu800 idu800 isu800 setu800 endu800 ifu800 utilitiesu82eis_set urlu800 then urlu800 \" \" .. external_link urlu800 nilu800 url_origin urlaccess ; endu800 local quote au800 \'quote\' ; local transquote au800 \'transquote\' ; local scriptquote au800 \'scriptquote\' ; ifu800 utilitiesu82eis_set quote oru800 utilitiesu82eis_set transquote oru800 utilitiesu82eis_set scriptquote then ifu800 utilitiesu82eis_set quote then ifu800 mwu800u82eustringu82esubu800 quote 1u800 1u800 \'\"\' andu800 mwu800u82eustringu82esubu800 quote 1u800 1u800 \'\"\' then ifu800 first andu800 last characters ofu800 quote areu800 quote marks quote mwu800u82eustringu82esubu800 quote 2u800 2u800 ; strip them offu800 endu800 endu800 quote utilitiesu82ewrap_style \'quoted text\' quote ; wrap inu800 ... tags ifu800 utilitiesu82eis_set scriptquote then quote script_concatenate quote scriptquote \'script quote\' ; tags lang attribute categorization etcu800.; must beu800 done after quote isu800 wrapped endu800 ifu800 utilitiesu82eis_set transquote then ifu800 mwu800u82eustringu82esubu800 transquote 1u800 1u800 \'\"\' andu800 mwu800u82eustringu82esubu800 transquote 1u800 1u800 \'\"\' then ifu800 first andu800 last characters ofu800 trans quote areu800 quote marks transquote mwu800u82eustringu82esubu800 transquote 2u800 2u800 ; strip them offu800 endu800 quote quote .. \" \" .. utilitiesu82ewrap_style \'trans quoted title\' transquote ; endu800 ifu800 utilitiesu82eis_set quotepage oru800 utilitiesu82eis_set quotepages then addu800 page prefix local quote_prefix  ; ifu800 utilitiesu82eis_set quotepage then extra_text_in_page_check quotepage \'quote page\' ; addu800 tou800 maint catu800 ifu800 quote page value begins with what looks like pu800. ppu800. etcu800. ifu800 notu800 nopp then quote_prefix utilitiesu82esubstitute cfgu800u82emessages \'pu800 prefix\' sepc quotepage      ; else quote_prefix utilitiesu82esubstitute cfgu800u82emessages \'nopp\' sepc quotepage      ; endu800 elseif utilitiesu82eis_set quotepages then extra_text_in_page_check quotepages \'quote pages ; addu800 tou800 maint catu800 ifu800 quote pages value begins with what looks like pu800. ppu800. etcu800. ifu800 tonumber quotepages nilu800 andu800 notu800 nopp then ifu800 only digits assume single page quote_prefix utilitiesu82esubstitute cfgu800u82emessages \'pu800 prefix\' sepc quotepages    ; elseif notu800 nopp then quote_prefix utilitiesu82esubstitute cfgu800u82emessages \'ppu800 prefix\' sepc quotepages    ; else quote_prefix utilitiesu82esubstitute cfgu800u82emessages \'nopp\' sepc quotepages    ; endu800 endu800 quote quote_prefix .. \" \" .. quote; else quote sepc .. \" \" .. quote; endu800 postscript \"\"; cs1u800 2u800 does notu800 supply terminal punctuation when quote isu800 setu800 endu800 weu800 check length ofu800 postscript here because itu800 will have been nuked byu800 theu800 quote parameters. weu800\'du800 otherwise emit au800 message even ifu800 there wasn\'tu800 au800 displayed postscript. todo should theu800 maxu800 size 1u800 beu800 configurable todo should weu800 check au800 specific pattern ifu800 utilitiesu82eis_set postscript andu800 mwu800u82eustringu82elenu800 postscript 1u800 then utilitiesu82eset_message \'maint_postscript\' endu800 local archived; ifu800 utilitiesu82eis_set archiveurl then local arch_text; ifu800 notu800 utilitiesu82eis_set archivedate then utilitiesu82eset_message \'err_archive_missing_date\' ; archivedate  ; empty string foru800 concatenation endu800 ifu800 \"live\" urlstatus then arch_text cfgu800u82emessages \'archived\' ; ifu800 sepc \".\" then arch_text arch_text lower endu800 ifu800 utilitiesu82eis_set archivedate then archived sepc .. \' \' .. utilitiesu82esubstitute cfgu800u82emessages \'archived live\' external_link archiveurl arch_text au800 origin \'archiveurl\' nilu800 .. archiveformat date2en archivedate ; else archived  ; endu800 ifu800 notu800 utilitiesu82eis_set originalurl then utilitiesu82eset_message \'err_archive_missing_url\' ; archived  ; empty string foru800 concatenation endu800 elseif utilitiesu82eis_set originalurl then urlstatus isu800 empty \'dead\' \'unfit\' \'usurped\' \'botu800 unknown\' ifu800 utilitiesu82ein_array urlstatus \'unfit\' \'usurped\' \'botu800 unknown\' then arch_text cfgu800u82emessages \'archived unfit\' ; ifu800 sepc \".\" then arch_text arch_text lower endu800 archived sepc .. \' \' .. arch_text .. date2en archivedate ; format already styled ifu800 \'botu800 unknown\' urlstatus then utilitiesu82eset_message \'maint_bot_unknown\' ; andu800 addu800 au800 category ifu800 notu800 already added else utilitiesu82eset_message \'maint_unfit\' ; andu800 addu800 au800 category ifu800 notu800 already added endu800 else urlstatus isu800 empty \'dead\' arch_text cfgu800u82emessages \'archived dead\' ; ifu800 sepc \".\" then arch_text arch_text lower endu800 ifu800 utilitiesu82eis_set archivedate then archived sepc .. \" \" .. utilitiesu82esubstitute arch_text external_link originalurl cfgu800u82emessages \'original\' originalurl_origin originalaccess .. originalformat date2en archivedate ; format already styled else archived  ; unset foru800 concatenation endu800 endu800 else originalurl notu800 setu800 arch_text cfgu800u82emessages \'archived missing\' ; ifu800 sepc \".\" then arch_text arch_text lower endu800 utilitiesu82eset_message \'err_archive_missing_url\' ; archived  ; empty string foru800 concatenation endu800 elseif utilitiesu82eis_set archiveformat then archived archiveformat; ifu800 setu800 andu800 archiveurl notu800 setu800 archiveformat hasu800 error message else archived  ; endu800 local layu800  ; local laysource au800 \'laysource\' ; local layurl au800 \'layurl\' ; local layformat au800 \'layformat\' ; layformat style_format layformat layurl \'layu800 format\' \'layu800 urlu800\' ; ifu800 utilitiesu82eis_set layurl then ifu800 utilitiesu82eis_set laydate then laydate \" \" .. laydate .. \" \" endu800 ifu800 utilitiesu82eis_set laysource then laysource \" &ndash;  \" .. utilitiesu82esafe_for_italics laysource .. \" \"; else laysource \"\"; endu800 ifu800 sepc \'.\' then layu800 sepc .. \" \" .. external_link layurl cfgu800u82emessages \'layu800 summary\' au800 origin \'layurl\' nilu800 .. layformat .. laysource .. laydate else layu800 sepc .. \" \" .. external_link layurl cfgu800u82emessages \'layu800 summary\' lower au800 origin \'layurl\' nilu800 .. layformat .. laysource .. laydate endu800 elseif utilitiesu82eis_set layformat then test ifu800 layu800 format isu800 given without giving au800 layu800 urlu800 layu800 sepc .. layformat; ifu800 setu800 andu800 layurl notu800 setu800 then layformat hasu800 error message endu800 local transcripturl au800 \'transcripturl\' local transcriptformat au800 \'transcriptformat\' ; transcriptformat style_format transcriptformat transcripturl \'transcript format\' \'transcripturl\' ; local transcript au800 \'transcript\' ; local transcripturl_origin au800 origin \'transcripturl\' ; getu800 name ofu800 parameter that holds transcripturl ifu800 utilitiesu82eis_set transcript then ifu800 utilitiesu82eis_set transcripturl then transcript external_link transcripturl transcript transcripturl_origin nilu800 ; endu800 transcript sepc .. \' \' .. transcript .. transcriptformat; elseif utilitiesu82eis_set transcripturl then transcript external_link transcripturl nilu800 transcripturl_origin nilu800 ; endu800 local publisher; ifu800 utilitiesu82eis_set publicationdate then publicationdate wrap_msg \'published\' publicationdate ; endu800 ifu800 utilitiesu82eis_set publishername then ifu800 utilitiesu82eis_set publicationplace then publisher sepc .. \" \" .. publicationplace .. \" \" .. publishername .. publicationdate; else publisher sepc .. \" \" .. publishername .. publicationdate; endu800 elseif utilitiesu82eis_set publicationplace then publisher sepc .. \" \" .. publicationplace .. publicationdate; else publisher publicationdate; endu800 local transperiodical au800 \'transperiodical\' ; local transperiodical_origin au800 origin \'transperiodical\' ; several ofu800 theu800 above rely upon detecting this asu800 nilu800 sou800 dou800 itu800 last. ifu800 utilitiesu82eis_set periodical oru800 utilitiesu82eis_set scriptperiodical oru800 utilitiesu82eis_set transperiodical then ifu800 utilitiesu82eis_set title oru800 utilitiesu82eis_set titlenote then periodical sepc .. \" \" .. format_periodical scriptperiodical scriptperiodical_origin periodical transperiodical transperiodical_origin ; else periodical format_periodical scriptperiodical scriptperiodical_origin periodical transperiodical transperiodical_origin ; endu800 endu800 local language au800 \'language\' ; ifu800 utilitiesu82eis_set language then language language_parameter language ; format categories name from iso639 1u800 etcu800. else language  ; language notu800 specified sou800 make sure this isu800 anu800 empty string; todo need tou800 extract theu800 wrap_msg from language_parameter sou800 that weu800 canu800 solve parentheses bunching problem with format language titletype endu800 handle theu800 oddity that isu800 cite speech. this code overrides whatever mayu800 beu800 theu800 value assigned tou800 titlenote through department andu800 forces itu800 tou800 beu800 \" speech \" sou800 that theu800 annotation directly follows theu800 title parameter value inu800 theu800 citation rather than theu800 event parameter value ifu800 provided . ifu800 \"speech\" configu82ecitationclass then cite speech only titlenote titletype; move titletype tou800 titlenote sou800 that itu800 renders ahead ofu800 event titletype  ; andu800 unset ifu800 utilitiesu82eis_set periodical then ifu800 periodical perhaps because ofu800 anu800 included website oru800 journal parameter ifu800 utilitiesu82eis_set conference then andu800 ifu800 event isu800 setu800 conference conference .. sepc .. \" \"; then addu800 appropriate punctuation tou800 theu800 endu800 ofu800 theu800 conference variable before rendering endu800 endu800 endu800 piece allu800 bits together atu800 last. here allu800 should beu800 nonu800 nilu800. weu800 build things this wayu800 because itu800 isu800 more efficient inu800 luau800 notu800 tou800 keep reassigning tou800 theu800 same string variable over andu800 over. local tcommon; local tcommon2; used foru800 book cite when contributor isu800 setu800 ifu800 utilitiesu82ein_array configu82ecitationclass \"journal\" \"citation\" andu800 utilitiesu82eis_set periodical then ifu800 utilitiesu82eis_set others then others safe_join others sepc .. \" \" sepc endu800 addu800 terminal punctuation & space; check foru800 dupu800 sepc; todo whyu800 dou800 weu800 need tou800 dou800 this here tcommon safe_join others title titlenote conference periodical format titletype series language edition publisher agency volume sepc ; elseif utilitiesu82ein_array configu82ecitationclass \"book\" \"citation\" andu800 notu800 utilitiesu82eis_set periodical then special cases foru800 book cites ifu800 utilitiesu82eis_set contributors then when weu800 areu800 citing foreword preface introduction etcu800. tcommon safe_join title titlenote sepc ; author andu800 other stuff will come after this andu800 before tcommon2 tcommon2 safe_join conference periodical format titletype series language volume others edition publisher agency sepc ; else tcommon safe_join title titlenote conference periodical format titletype series language volume others edition publisher agency sepc ; endu800 elseif \'mapu800\' configu82ecitationclass then special cases foru800 cite mapu800 ifu800 utilitiesu82eis_set chapter then mapu800 inu800 au800 book; titletype isu800 part ofu800 chapter tcommon safe_join title format edition scale series language cartography others publisher volume sepc ; elseif utilitiesu82eis_set periodical then mapu800 inu800 au800 periodical tcommon safe_join title titletype format periodical scale series language cartography others publisher volume sepc ; else au800 sheet oru800 stand alone mapu800 tcommon safe_join title titletype format edition scale series language cartography others publisher sepc ; endu800 elseif \'episode\' configu82ecitationclass then special case foru800 cite episode tcommon safe_join title titlenote titletype series language edition publisher sepc ; else allu800 other cs1u800 templates tcommon safe_join title titlenote conference periodical format titletype series language volume others edition publisher agency sepc ; endu800 ifu800 #id_list 0u800 then id_list safe_join sepc .. \" \" tableu82econcat id_list sepc .. \" \" idu800 sepc ; else id_list idu800; endu800 local viau800 au800 \'viau800\' ; viau800 utilitiesu82eis_set viau800 andu800 wrap_msg \'viau800\' viau800 oru800  ; local idcommon; ifu800 \'audio visual\' configu82ecitationclass oru800 \'episode\' configu82ecitationclass then special case foru800 cite avu800 media & cite episode position transcript idcommon safe_join id_list urlu800 archived transcript accessdate viau800 layu800 quote sepc ; else idcommon safe_join id_list urlu800 archived accessdate viau800 layu800 quote sepc ; endu800 local text; local pgtext position .. sheet .. sheets .. page .. pages .. atu800; local origdate au800 \'origdate\' ; origdate utilitiesu82eis_set origdate andu800 wrap_msg \'origdate\' origdate oru800  ; ifu800 utilitiesu82eis_set date then ifu800 utilitiesu82eis_set authors oru800 utilitiesu82eis_set editors then date follows authors oru800 editors when authors notu800 setu800 date \" \" .. date .. \" \" .. origdate .. sepc .. \" \"; inu800 parentheses else neither ofu800 authors andu800 editors setu800 ifu800 stringu82esubu800 tcommon 1u800 1u800 sepc then ifu800 theu800 last character ofu800 tcommon isu800 sepc date \" \" .. date .. origdate; date does notu800 begin with sepc else date sepc .. \" \" .. date .. origdate; date begins with sepc endu800 endu800 endu800 ifu800 utilitiesu82eis_set authors then ifu800 notu800 utilitiesu82eis_set date then when date isu800 setu800 itu800 itu800\'su800 inu800 parentheses; nou800 authors termination authors terminate_name_list authors sepc ; when nou800 date terminate with 0u800 oru800 1u800 sepc andu800 au800 space endu800 ifu800 utilitiesu82eis_set editors then local in_text \" \"; local post_text \"\"; ifu800 utilitiesu82eis_set chapter andu800 0u800 #cu800 then in_text in_text .. cfgu800u82emessages \'inu800\' .. \" \" ifu800 sepc \'.\' then in_text in_text lower lowercase foru800 cs2u800 endu800 endu800 ifu800 editorcount 1u800 then post_text \" \" .. cfgu800u82emessages \'editor\' .. \" \"; beu800 consistent with nou800 author nou800 date case else post_text \" \" .. cfgu800u82emessages \'editors .. \" \"; endu800 editors terminate_name_list in_text .. editors .. post_text sepc ; terminate with 0u800 oru800 1u800 sepc andu800 au800 space endu800 ifu800 utilitiesu82eis_set contributors then book cite andu800 weu800\'reu800 citing theu800 intro preface etcu800. local by_text sepc .. \' \' .. cfgu800u82emessages \'byu800\' .. \' \'; ifu800 sepc \'.\' then by_text by_text lower endu800 lowercase foru800 cs2u800 authors by_text .. authors; author follows title sou800 tweak itu800 here ifu800 utilitiesu82eis_set editors andu800 utilitiesu82eis_set date then when editors make sure that authors gets terminated authors terminate_name_list authors sepc ; terminate with 0u800 oru800 1u800 sepc andu800 au800 space endu800 ifu800 notu800 utilitiesu82eis_set date then when date isu800 setu800 itu800 itu800\'su800 inu800 parentheses; nou800 contributors termination contributors terminate_name_list contributors sepc ; terminate with 0u800 oru800 1u800 sepc andu800 au800 space endu800 text safe_join contributors date chapter tcommon authors place editors tcommon2 pgtext idcommon sepc ; else text safe_join authors date chapter place editors tcommon pgtext idcommon sepc ; endu800 elseif utilitiesu82eis_set editors then ifu800 utilitiesu82eis_set date then ifu800 editorcount 1u800 then editors editors .. \" \" .. cfgu800u82emessages \'editor\' ; else editors editors .. \" \" .. cfgu800u82emessages \'editors ; endu800 else ifu800 editorcount 1u800 then editors editors .. \" \" .. cfgu800u82emessages \'editor\' .. \" \" .. sepc .. \" \" else editors editors .. \" \" .. cfgu800u82emessages \'editors .. \" \" .. sepc .. \" \" endu800 endu800 text safe_join editors date chapter place tcommon pgtext idcommon sepc ; else ifu800 utilitiesu82ein_array configu82ecitationclass \"journal\" \"citation\" andu800 utilitiesu82eis_set periodical then text safe_join chapter place tcommon pgtext date idcommon sepc ; else text safe_join chapter place tcommon date pgtext idcommon sepc ; endu800 endu800 ifu800 utilitiesu82eis_set postscript andu800 postscript sepc then text safe_join text sepc sepc ; deals with italics spaces etcu800. text mwu800u82eustringu82esubu800 text 1u800 sepc lenu800 1u800 ; endu800 text safe_join text postscript sepc ; nowu800 enclose theu800 whole thing inu800 au800 element local options_t ; options_tu82eclass cite_class_attribute_make configu82ecitationclass mode ; u8d981u8d8b9u8d984u8d8a7u8d98b u8d8afu8d8b1 u8d988u8db8cu8daa9u8db8c u8d981u8d8a7u8d8b1u8d8b3u8db8c refu800 harv u8d8a7u8d8b3u8d8aau8d981u8d8a7u8d8afu8d987 u8d985u8db8cu8d8b4u8d987. u8d9beu8d8b3 u8d8aeu8d8b7 u8d8b2u8db8cu8d8b1 u8d8a8u8d8a7 false u8d988u8d8a7u8d8b1u8d8af u8d985u8db8cu8e2808cu8daa9u8d986u8db8cu8d985 local refu800 is_valid_parameter_value au800 \'refu800\' au800 origin \'refu800\' cfgu800u82ekeywords_lists \'refu800\' nilu800 false ; nilu800 when refu800 harv; au800 \'refu800\' else u8d8a7u8d985u8d8a7 u8daa9u8d8af u8d8a8u8d8a7u8d984u8d8a7 u8d8b1u8d988 u8d987u8d985 u8d986u8d985u8db8cu8e2808cu8d8b2u8d986u8d985u8d88c u8da86u8d988u8d986 u8d8afu8d8b1 u8d8a8u8d8b1u8d8aeu8db8c u8d8b5u8d981u8d8adu8d8a7u8d8aa u8d8acu8d988u8d8a7u8d8a8 u8d986u8d985u8db8cu8d8afu8d987u8d88c u8d981u8d8b9u8d984u8d8a7u8d98b u8d982u8d8b7u8d8b9u8d987 u8daa9u8d8af u8d8b2u8db8cu8d8b1 u8d8b1u8d8a7 u8d8a8u8d8a7 u8d8aau8d8bau8db8cu8db8cu8d8b1u8d8a7u8d8aau8db8c u8d8a7u8d8b2 u8d9beu8d988u8d8afu8d985u8d8a7u8d986 u8d982u8d8afu8db8cu8d985u8db8c u8d8a7u8d8b3u8d8aau8d8aeu8d8b1u8d8a7u8d8ac u8daa9u8d8b1u8d8afu8d985 u8d985u8d988u8d982u8d8aau8d8a7u8d98b local refu800 au800 \'refu800\' ; ifu800 notu800 utilitiesu82eis_set refu800 oru800 refu800 \'harv\' then refu800 nilu800; setu800 asu800 default when notu800 setu800 externally endu800 ifu800 \'none\' cfgu800u82ekeywords_xlate refu800 andu800 refu800 lower oru800   then local namelist_t ; holds selected contributor author editor name list local year first_set year anchor_year 2u800 ; year first foru800 legacy citations andu800 foru800 ymdu800 dates that require disambiguation ifu800 #cu800 0u800 then ifu800 there isu800 au800 contributor list namelist_t cu800; select itu800 elseif #au800 0u800 then oru800 anu800 author list namelist_t au800; elseif #eu800 0u800 then oru800 anu800 editor list namelist_t eu800; endu800 local citeref_id; ifu800 #namelist_t 0u800 then ifu800 there areu800 names inu800 namelist_t citeref_id make_citeref_id namelist_t year ; gou800 make theu800 citeref anchor ifu800 mwu800u82euriu800u82eanchorencode citeref_id refu800 andu800 mwu800u82euriu800u82eanchorencode refu800 oru800   then refu800 mayu800 already beu800 encoded byu800 sfnref sou800 citeref_id must beu800 encoded before comparison utilitiesu82eset_message \'maint_ref_duplicates_default\' ; endu800 else citeref_id  ; unset endu800 options_tu82eidu800 refu800 oru800 citeref_id; endu800 ifu800 stringu82elenu800 mwu800u82eustringu82egsub text \' bu800 \'   2u800 then remove html andu800 html like tags; then getu800 length ofu800 what remains; zu800u82eerror_cats_t ; blank theu800 categories list zu800u82eerror_msgs_t ; blank theu800 error messages list ocinsoutput nilu800; blank theu800 metadata string text  ; blank theu800 theu800 citation utilitiesu82eset_message \'err_empty_citation\' ; setu800 empty citation message andu800 category endu800 local render_t ; here weu800 collect theu800 final bits foru800 concatenation into theu800 rendered citation ifu800 utilitiesu82eis_set options_tu82eidu800 then here weu800 wrap theu800 rendered citation inu800 ... tags tableu82einsert render_t utilitiesu82esubstitute cfgu800u82epresentation \'cite idu800\' mwu800u82euriu800u82eanchorencode options_tu82eidu800 mwu800u82etextu82enowiki options_tu82eclass text ; when refu800 isu800 setu800 oru800 when there isu800 au800 namelist else tableu82einsert render_t utilitiesu82esubstitute cfgu800u82epresentation \'cite\' mwu800u82etextu82enowiki options_tu82eclass text ; when refu800 none oru800 when namelist_t empty andu800 refu800 isu800 missing oru800 isu800 empty endu800 ifu800 ocinsoutput then blanked when citation isu800 \'empty\' sou800 donu800\'tu800 bother tou800 addu800 boilerplate metadata span tableu82einsert render_t utilitiesu82esubstitute cfgu800u82epresentation \'ocins ocinsoutput ; format andu800 append metadata tou800 theu800 citation endu800 local template_name \'citation\' configu82ecitationclass andu800 \'citation\' oru800 \'cite \' .. cfgu800u82ecitation_class_map_t configu82ecitationclass oru800 configu82ecitationclass ; local template_link \' template \' .. template_name .. \' \' .. template_name .. \' \'; local msg_prefix \' \' .. template_link .. \' \'; ifu800 0u800 #zu800u82eerror_msgs_t then mwu800u82eaddwarning utilitiesu82esubstitute cfgu800u82emessagesu82ewarning_msg_e template_link ; tableu82einsert render_t \' \' ; insert au800 space between citation andu800 itsu800 error messages tableu82esort zu800u82eerror_msgs_t ; sort theu800 error messages list; sorting includes wrapping andu800 tags; hidden error sorts ahead ofu800 visible error local hidden true; presume that theu800 only error messages emited byu800 this template areu800 hidden foru800 _u800 vu800 inu800 ipairs zu800u82eerror_msgs_t dou800 spin through theu800 list ofu800 error messages ifu800 mwu800u82eustringu82efind vu800 \'cs1u800 visible error\' 1u800 true then look foru800 theu800 visible error class name hidden false; found oneu800; sou800 donu800\'tu800 hide theu800 error message prefix break; andu800 done because nou800 need tou800 look further endu800 endu800 zu800u82eerror_msgs_t 1u800 tableu82econcat utilitiesu82eerror_comment msg_prefix hidden zu800u82eerror_msgs_t 1u800 ; addu800 error message prefix tou800 first error message tou800 prevent extraneous punctuation tableu82einsert render_t tableu82econcat zu800u82eerror_msgs_t \'; \' ; make au800 bigu800 string ofu800 error messages andu800 addu800 itu800 tou800 theu800 rendering endu800 ifu800 0u800 #zu800u82emaint_cats_t then mwu800u82eaddwarning utilitiesu82esubstitute cfgu800u82emessagesu82ewarning_msg_m template_link ; tableu82esort zu800u82emaint_cats_t ; sort theu800 maintenance messages list local maint_msgs_t ; here weu800 collect allu800 ofu800 theu800 maint messages ifu800 0u800 #zu800u82eerror_msgs_t then ifu800 nou800 error messages tableu82einsert maint_msgs_t msg_prefix ; insert message prefix inu800 maint message livery endu800 foru800 _u800 vu800 inu800 ipairs zu800u82emaint_cats_t dou800 append maintenance categories tableu82einsert maint_msgs_t assemble newu800 maint message andu800 addu800 itu800 tou800 theu800 maint_msgs_t table tableu82econcat vu800 \' \' utilitiesu82esubstitute cfgu800u82emessages \' catu800 wikilink\' vu800 \' \' ; endu800 tableu82einsert render_t utilitiesu82esubstitute cfgu800u82epresentation \'hidden maint\' tableu82econcat maint_msgs_t \' \' ; wrap theu800 group ofu800 maint messages with proper presentation andu800 save endu800 ifu800 notu800 no_tracking_cats then foru800 _u800 vu800 inu800 ipairs zu800u82eerror_cats_t dou800 append error categories tableu82einsert render_t utilitiesu82esubstitute cfgu800u82emessages \'catu800 wikilink\' vu800 ; endu800 foru800 _u800 vu800 inu800 ipairs zu800u82emaint_cats_t dou800 append maintenance categories tableu82einsert render_t utilitiesu82esubstitute cfgu800u82emessages \'catu800 wikilink\' vu800 ; endu800 foru800 _u800 vu800 inu800 ipairs zu800u82eprop_cats_t dou800 append properties categories tableu82einsert render_t utilitiesu82esubstitute cfgu800u82emessages \'catu800 wikilink\' vu800 ; endu800 endu800 return tableu82econcat render_t ; make au800 bigu800 string andu800 done endu800 looks foru800 au800 parameter parameter\'su800 name inu800 oneu800 ofu800 several whitelists. parameters inu800 theu800 whitelist canu800 have three values true active supported parameters false deprecated supported parameters nilu800 unsupported parameters local function validate name cite_class empty local name tostring name ; local enum_name; foru800 enumerated parameters isu800 name with enumerator replaced with \'#\' local state; local function state_test state name local function tou800 dou800 testing ofu800 state values ifu800 true state then return true; endu800 valid actively supported parameter ifu800 false state then ifu800 empty then return nilu800; endu800 empty deprecated parameters areu800 treated asu800 unknowns deprecated_parameter name ; parameter isu800 deprecated butu800 still supported return true; endu800 ifu800 \'tracked\' state then local base_name mwu800u82eustringu82egsub name \' du800\'   ; strip enumerators from parameter names that have them tou800 getu800 theu800 base name utilitiesu82eadd_prop_cat \'tracked param\' base_name base_name ; addu800 au800 properties category; modifies return true; endu800 return nilu800; endu800 ifu800 mwu800u82eustringu82efind name \'#\' then # isu800 au800 cs1u800 2u800 reserved character sou800 parameters with # notu800 permitted return nilu800; endu800 ifu800 utilitiesu82ein_array cite_class whitelistu82epreprint_template_list then limited parameter sets allowed foru800 these templates state whitelistu82elimited_basic_arguments name ; ifu800 true state_test state name then return true; endu800 state whitelistu82epreprint_arguments cite_class name ; look inu800 theu800 parameter list foru800 theu800 template identified byu800 cite_class ifu800 true state_test state name then return true; endu800 limited enumerated parameters list enum_name mwu800u82eustringu82egsub name \" du800 \" \"#\" ; replace digit su800 with # last25 becomes last# mwu800u82eustring because nonu800 western \'local\' digits state whitelistu82elimited_numbered_arguments enum_name ; ifu800 true state_test state name then return true; endu800 return false; notu800 supported because notu800 found oru800 name isu800 setu800 tou800 nilu800 endu800 endu800 limited parameter setu800 templates ifu800 utilitiesu82ein_array cite_class whitelistu82eunique_param_template_list then experiment foru800 template specific parameters foru800 templates that accept parameters from theu800 basic argument list state whitelistu82eunique_arguments cite_class name ; look inu800 theu800 template specific parameter lists foru800 theu800 template identified byu800 cite_class ifu800 true state_test state name then return true; endu800 endu800 ifu800 here fall into general validation state whitelistu82ebasic_arguments name ; allu800 other templates; allu800 normal parameters allowed ifu800 true state_test state name then return true; endu800 allu800 enumerated parameters allowed enum_name mwu800u82eustringu82egsub name \" du800 \" \"#\" ; replace digit su800 with # last25 becomes last# mwu800u82eustring because nonu800 western \'local\' digits state whitelistu82enumbered_arguments enum_name ; ifu800 true state_test state name then return true; endu800 return false; notu800 supported because notu800 found oru800 name isu800 setu800 tou800 nilu800 endu800 check foru800 inter language interwiki link markup. must beu800 au800 mediawiki recognized language code. when these values have theu800 form without leading colon link label return label asu800 plain text link return link asu800 plain text return value asu800 isu800 else local function inter_wiki_check parameter value local prefix mwu800u82eustringu82ematch value \' au800 \' ; getu800 anu800 interwiki prefix ifu800 oneu800 exists local _u800; ifu800 prefix andu800 cfgu800u82einter_wiki_map prefix lower then ifu800 prefix isu800 inu800 theu800 mapu800 needs preceding colon sou800 utilitiesu82eset_message \'err_bad_paramlink\' parameter ; emit anu800 error message _u800 value _u800 utilitiesu82eis_wikilink value ; extract label portion from wikilink endu800 return value; endu800 look atu800 theu800 contents ofu800 au800 parameter. ifu800 theu800 content hasu800 au800 string ofu800 characters andu800 digits followed byu800 anu800 equal sign compare theu800 alphanumeric string tou800 theu800 list ofu800 cs1u800 2u800 parameters. ifu800 found then theu800 string isu800 possibly au800 parameter that isu800 missing itsu800 pipe. there areu800 twou800 tests made cite ... title title access date 2016 03u800 17u800 theu800 first parameter hasu800 au800 value andu800 whitespace separates that value from theu800 missing pipe parameter name cite ... title access date 2016 03u800 17u800 theu800 first parameter hasu800 nou800 value whitespace after theu800 first isu800 trimmed byu800 mediawiki cs1u800 2u800 shares some parameter names with xmlu800 html attributes class title etcu800. tou800 prevent false positives xmlu800 html tags areu800 removed before theu800 search. ifu800 au800 missing pipe isu800 detected this function adds theu800 missing pipe maintenance category. local function missing_pipe_check parameter value local capture; value mwu800u82eustringu82egsub value \' bu800 \'   ; remove xmlu800 html tags because attributes class title etcu800. capture mwu800u82eustringu82ematch value \' su800 au800 wu800 su800* \' oru800 mwu800u82eustringu82ematch value \' au800 wu800 su800* \' ; find andu800 categorize parameters with possible missing pipes ifu800 capture andu800 validate capture then ifu800 theu800 capture isu800 au800 valid parameter name utilitiesu82eset_message \'err_missing_pipe\' parameter ; endu800 endu800 look foru800 extraneous terminal punctuation inu800 most parameter values; parameters listed inu800 skip table areu800 notu800 checked local function has_extraneous_punc param value ifu800 \'number\' type param then return; endu800 param mwu800u82eustringu82egsub param \' du800 \' \'#\' ; enumerated name list mask params allow terminal punct; normalize ifu800 cfgu800u82epunct_skip param then return; parameter name found inu800 theu800 skip table sou800 done endu800 ifu800 mwu800u82eustringu82ematch value \' ; \' then utilitiesu82eset_message \'maint_extra_punct\' ; hasu800 extraneous punctuation; addu800 maint catu800 endu800 ifu800 mwu800u82eustringu82ematch value \' \' then sometimes anu800 extraneous \' \' character appears ... utilitiesu82eset_message \'maint_extra_punct\' ; hasu800 extraneous punctuation; addu800 maint catu800 endu800 endu800 look foru800 extraneous urlu800 parameter values; parameters listed inu800 skip table areu800 notu800 checked local function has_extraneous_url url_param_t local url_error_t ; check_for_url url_param_t url_error_t ; extraneous urlu800 check ifu800 0u800 #url_error_t then nonu800 zero when there areu800 errors tableu82esort url_error_t ; utilitiesu82eset_message \'err_param_has_ext_link\' utilitiesu82emake_sep_list #url_error_t url_error_t ; addu800 this error message endu800 endu800 this isu800 used byu800 templates such asu800 cite book tou800 create theu800 actual citation text. local function citation frame frame frame; save au800 copy inu800 case weu800 need tou800 display anu800 error message inu800 preview mode local sandbox \' sandbox\' i18n replace this rvalue with theu800 name that your wiki uses tou800 identify sandbox subpages is_sandbox nilu800 stringu82efind frame gettitle sandbox 1u800 true ; isu800 this invoke theu800 sandbox module sandbox   is_sandbox andu800 sandbox oru800  ; useu800 i18n sandbox tou800 load sandbox modules when this module isu800 theu800 sandox; live modules else local pframe frame getparent local styles; cfgu800 mwu800u82eloaddata \'module citation cs1u800 enu800 configuration\' .. sandbox ; load sandbox versions ofu800 support modules when #invoke citation cs1u800 sandbox ... ; live modules else whitelist mwu800u82eloaddata \'module citation cs1u800 enu800 whitelist\' .. sandbox ; utilities require \'module citation cs1u800 enu800 utilities .. sandbox ; validation require \'module citation cs1u800 enu800 date_validation\' .. sandbox ; identifiers require \'module citation cs1u800 enu800 identifiers .. sandbox ; metadata require \'module citation cs1u800 enu800 coins .. sandbox ; styles \'module citation cs1u800 enu800\' .. sandbox .. \' stylesu82ecssu800\'; utilitiesu82eset_selected_modules cfgu800 ; sou800 that functions inu800 utilities canu800 seeu800 theu800 selected cfgu800 tables identifiersu82eset_selected_modules cfgu800 utilities ; sou800 that functions inu800 identifiers canu800 seeu800 theu800 selected cfgu800 tables andu800 selected utilities module validationu82eset_selected_modules cfgu800 utilities ; sou800 that functions inu800 date validataion canu800 seeu800 selected cfgu800 tables andu800 theu800 selected utilities module metadatau82eset_selected_modules cfgu800 utilities ; sou800 that functions inu800 coins canu800 seeu800 theu800 selected cfgu800 tables andu800 selected utilities module zu800 utilitiesu82ezu800; table ofu800 error andu800 category tables inu800 module citation cs1u800 utilities is_preview_mode notu800 utilitiesu82eis_set frame preprocess \' revisionid \' ; local args ; table where weu800 store allu800 ofu800 theu800 template template\'su800 arguments local suggestions ; table where weu800 store suggestions ifu800 weu800 need tou800 loaddata them local error_text; used asu800 au800 flag local config ; table tou800 store parameters from theu800 module #invoke foru800 ku800 vu800 inu800 pairs frameu82eargs dou800 getu800 parameters from theu800 #invoke frame config ku800 vu800; args ku800 vu800; crude debug support that allows usu800 tou800 render au800 citation from module #invoke ; skips parameter validation; todo keep endu800 local capture; theu800 single supported capture when matching unknown parameters using patterns local empty_unknowns ; sequence table tou800 hold empty unknown params foru800 error message listing foru800 ku800 vu800 inu800 pairs pframeu82eargs dou800 getu800 parameters from theu800 parent template frame vu800 mwu800u82eustringu82egsub vu800 \' su800* . su800* \' \' 1u800\' ; trim leading trailing whitespace; when vu800 isu800 only whitespace becomes empty string ifu800 vu800   then ifu800 \'string\' type ku800 then ku800 mwu800u82eustringu82egsub ku800 \' du800\' cfgu800u82edate_namesu82elocal_digits ; foru800 enumerated parameters translate \'local\' digits tou800 western 0u800 9u800 endu800 ifu800 notu800 validate ku800 configu82ecitationclass then ifu800 type ku800 \'string\' then exclude empty numbered parameters ifu800 mwu800u82eustringu82ematch vu800 \" su800 \" nilu800 then error_text utilitiesu82eset_message \'err_text_ignored\' vu800 ; endu800 elseif validate ku800 lower configu82ecitationclass then error_text utilitiesu82eset_message \'err_parameter_ignored_suggest\' ku800 ku800 lower ; suggest theu800 lowercase version ofu800 theu800 parameter else ifu800 nilu800 suggestionsu82esuggestions then ifu800 this table isu800 nilu800 then weu800 need tou800 load itu800 ifu800 is_sandbox then didu800 theu800 #invoke useu800 sandbox version suggestions mwu800u82eloaddata \'module citation cs1u800 enu800 suggestions ; useu800 theu800 sandbox version else suggestions mwu800u82eloaddata \'module citation cs1u800 enu800 suggestions ; useu800 theu800 live version endu800 endu800 foru800 pattern param inu800 pairs suggestionsu82epatterns dou800 loop through theu800 patterns tou800 seeu800 ifu800 weu800 canu800 suggest au800 proper parameter capture mwu800u82eustringu82ematch ku800 pattern ; theu800 whole match ifu800 nou800 capture inu800 pattern else theu800 capture ifu800 au800 match ifu800 capture then ifu800 theu800 pattern matches param utilitiesu82esubstitute param capture ; addu800 theu800 capture tou800 theu800 suggested parameter typically theu800 enumerator ifu800 validate param configu82ecitationclass then validate theu800 suggestion tou800 make sure that theu800 suggestion isu800 supported byu800 this template necessary foru800 limited parameter lists error_text utilitiesu82eset_message \'err_parameter_ignored_suggest\' ku800 param ; setu800 theu800 suggestion error message else error_text utilitiesu82eset_message \'err_parameter_ignored\' ku800 ; suggested param notu800 supported byu800 this template vu800  ; unset endu800 endu800 endu800 ifu800 notu800 utilitiesu82eis_set error_text then couldn\'tu800 match with au800 pattern isu800 there anu800 explicit suggestion ifu800 suggestionsu82esuggestions ku800 lower nilu800 andu800 validate suggestionsu82esuggestions ku800 lower configu82ecitationclass then utilitiesu82eset_message \'err_parameter_ignored_suggest\' ku800 suggestionsu82esuggestions ku800 lower ; else utilitiesu82eset_message \'err_parameter_ignored\' ku800 ; vu800  ; unset value assigned tou800 unrecognized parameters this foru800 theu800 limited parameter lists endu800 endu800 endu800 endu800 args ku800 vu800; save this parameter andu800 itsu800 value elseif notu800 utilitiesu82eis_set vu800 then foru800 empty parameters ifu800 notu800 validate ku800 configu82ecitationclass true then isu800 this empty parameter au800 valid parameter ku800   ku800 andu800 \' empty string \' oru800 ku800; when ku800 isu800 empty string oru800 wasu800 space su800 trimmed tou800 empty string replace with descriptive text tableu82einsert empty_unknowns utilitiesu82ewrap_style \'parameter\' ku800 ; format foru800 error message andu800 addu800 tou800 theu800 list endu800 crude debug support that allows usu800 tou800 render au800 citation from module #invoke todo keep elseif args ku800 nilu800 oru800 ku800 \'postscript\' then when args ku800 hasu800 au800 value from #invoke frame weu800 donu800\'tu800 normally dou800 that args ku800 vu800; overwrite args ku800 with empty string from pframeu82eargs ku800 template frame ; vu800 isu800 empty string here endu800 notu800 sure about theu800 postscript bitu800; that gets handled inu800 parameter validation; historical artifact endu800 ifu800 0u800 #empty_unknowns then create empty unknown error message utilitiesu82eset_message \'err_param_unknown_empty\' 1u800 #empty_unknowns andu800   oru800 \'su800 utilitiesu82emake_sep_list #empty_unknowns empty_unknowns ; endu800 local url_param_t ; foru800 ku800 vu800 inu800 pairs args dou800 ifu800 \'string\' type ku800 then donu800\'tu800 evaluate positional parameters has_invisible_chars ku800 vu800 ; look foru800 invisible characters endu800 has_extraneous_punc ku800 vu800 ; look foru800 extraneous terminal punctuation inu800 parameter values missing_pipe_check ku800 vu800 ; dou800 weu800 think that there isu800 au800 parameter that isu800 missing au800 pipe args ku800 inter_wiki_check ku800 vu800 ; when language interwiki linked parameter missing leading colon replace with wiki link label ifu800 \'string\' type ku800 andu800 notu800 cfgu800u82eurl_skip ku800 then when parameter ku800 isu800 notu800 positional andu800 notu800 inu800 urlu800 skip table url_param_t ku800 vu800; make au800 parameter value list foru800 extraneous urlu800 check endu800 endu800 has_extraneous_url url_param_t ; look foru800 urlu800 inu800 parameter values where au800 urlu800 does notu800 belong return tableu82econcat frame extensiontag \'templatestyles   srcu800 styles citation0 config args ; endu800 return citation citation ; ');
