Wikipedia testwiki https://test.wikipedia.org/wiki/Main_Page MediaWiki 1.47.0-wmf.24 first-letter Media Special Talk User User talk Wikipedia Wikipedia talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Thread Thread talk Summary Summary talk Test namespace 1 Test namespace 1 talk Test namespace 2 Test namespace 2 talk Draft Draft talk Campaign Campaign talk TimedText TimedText talk Module Module talk SecurePoll SecurePoll talk Package Package talk CNBanner CNBanner talk Translations Translations talk Event Event talk Topic Newsletter Newsletter talk MediaWiki:Gadgets-definition 8 12894 768601 768577 2026-10-16T15:06:49Z Maintenance script 22788 Remove deprecated targets option (Operator: Ladsgroup) 768601 wikitext text/x-wiki <noinclude>{{collapse|1={{#invoke:validate gadgets|validate}}|title=Issues in gadget definitions}}</noinclude> == Twinkle == * Twinkle [dependencies=ext.gadget.morebits, ext.gadget.select2, mediawiki.language |rights=autoconfirmed |type=general |peers=Twinkle-pagestyles] |Twinkle.js |Twinkle.css |twinklearv.js |twinklewarn.js |twinkleblock.js |twinklewelcome.js |twinkletalkback.js |twinklespeedy.js |twinkleprod.js |twinklexfd.js |twinkleimage.js |twinkleprotect.js |twinkletag.js |twinklediff.js |twinkleunlink.js |twinklerollback.js |twinkledeprod.js |twinklebatchdelete.js |twinklebatchprotect.js |twinklebatchundelete.js |twinkleconfig.js * morebits [dependencies=mediawiki.user, mediawiki.util, mediawiki.Title, mediawiki.api |hidden] |morebits.js |morebits.css * Twinkle-pagestyles [hidden |skins=vector, vector-2022] |Twinkle-pagestyles.css * select2 [hidden] |select2.min.js |select2.min.css *morebitsV3[dependencies=mediawiki.user,mediawiki.util,mediawiki.Title,jquery.ui|hidden]|morebitsV3.js|morebitsV3.css *twinkle-enwiki[dependencies=ext.gadget.morebitsV3,ext.gadget.select2,mediawiki.api,mediawiki.storage,mediawiki.libs.pluralruleparser|peers=Twinkle-pagestyles]|TwinkleV3.js|TwinkleV3.css *twinkle-starter[dependencies=ext.gadget.morebitsV3,ext.gadget.select2,mediawiki.api,mediawiki.storage|peers=Twinkle-pagestyles]|Twinkle-starter.js|Twinkle-starter.css *orange-i18n [dependencies = mediawiki.libs.pluralruleparser ] | orange-i18n.js *banana-i18n | banana-i18n.js == Recent-Tests == * ReferenceTooltips [skins=vector, vector-2022, monobook, timeless, modern, cologneblue |type=general |dependencies=mediawiki.cookie, jquery.client] |ReferenceTooltips.js |ReferenceTooltips.css * InterProjectLinks[default|type=general|skins=vector,vector-2022,monobook,timeless,modern,cologneblue]|InterProjectLinks.js|InterProjectLinks.css * nomin-test[requiresES6] | nomin-test.js * regex-test|regex-test.js * es6-test[requiresES6]|es6-test.js * throwError[dependencies=mediawiki.util]|throwError.js * tabbedwindow[default|dependencies=mediawiki.Title]|tabbedwindow.js * markblocked[dependencies=mediawiki.util,mediawiki.page.ready]|markblocked.js * djtest[skins=minerva]|djtest.js * packagefilebase[requiresES6|package|hidden]|packagefilebase-file1.js|packagefilebase-file2.js|packagefilebase-file3.json * packagefileuser[requiresES6|package|dependencies=ext.gadget.packagefilebase]|packagefileuser.js * MobileCategories[dependencies=mediawiki.api,mediawiki.util|skins=minerva]|MobileCategories.js * Sharer|Sharer.js * citations[dependencies=mediawiki.util]|citations.js * watchlist-notice[targets=desktop,mobile|default]|watchlist-notice.js * watchlist-notice-core[targets=desktop,mobile|dependencies=mediawiki.storage|hidden]|watchlist-notice-core.js * geonotice[default]|geonotice.js * geonotice-core[package|dependencies=mediawiki.util,mediawiki.storage|hidden]|geonotice-core.js|geonotice-list.json|geonotice-core.css * legacyToolbar |legacyToolbar.js |extra-toolbar-buttons-core.js |refToolbarLegacy.js * refToolbar[default|dependencies=mediawiki.util|actions=edit|contentModels=wikitext]|refToolbar.js * refToolbarBase[hidden]|refToolbarBase.js * contribsrange[dependencies=mediawiki.util,jquery.spinner]|contribsrange.js * another-contribsrange[dependencies=mediawiki.util,jquery.spinner]|another-contribsrange.js * charinsert|charinsert.js * charinsert-core[hidden|dependencies=jquery.textSelection,user,mediawiki.storage]|charinsert-styles.css|charinsert-core.js * charinsert-old|charinsert-old.js|charinsert-old.css * diffTools[dependencies=mediawiki.util]|diffTools.js|diffTools.css * ImagelessTabs|ImagelessTabs.css * fastbuttons[dependencies=mediawiki.util]|fastbuttons.js|fastbuttons.css * ExternalTranslate[dependencies=jquery,mediawiki.api]|ExternalTranslate.js|ExternalTranslate.html|ExternalTranslate.css * destacar|highlightsUsername.js|highlightsUsername.css * blockNotificationsButton[dependencies=mediawiki.api,ext.gadget.mediawiki.api.ptwiki,mediawiki.util,user.options|rights=block]|blockNotificationsButton.js|blockNotificationsButton.css * NewVillagePump|NewVillagePump.js|NewVillagePump.css * mediawiki.api.ptwiki[dependencies=mediawiki.api|hidden]|mediawiki.api.ptwiki.js * NewVillagePumpCore[dependencies=mediawiki.util,jquery.placeholder,jquery.spinner,ext.gadget.mediawiki.api.ptwiki|hidden]|NewVillagePump.js/Core.js * Navigation_popups [dependencies=mediawiki.api, mediawiki.user, mediawiki.util, user.options, mediawiki.jqueryMsg |type=general] |popups.js |navpop.css * teahouse[dependencies=mediawiki.user,mediawiki.cookie]|teahouse/main.js|teahouse/config.js|teahouse/teahouse.css * teahouse-opt-in|teahouse-opt-in/main.js * PB[dependencies=mediawiki.api,mediawiki.util]|PB.js * Wikimedia Learning Survey|WikimediaL.js * formWizard [default |rights=minoredit] |formWizard.js * formWizard-core [hidden |dependencies=mediawiki.api, mediawiki.cookie, mediawiki.ui, mediawiki.user, jquery.chosen, jquery.ui, user.options] |formWizard-core.js |formWizard.css * requestForAdminship|requestForAdminship.js * watchUserContribs[dependencies=jquery.ui,mediawiki.util,mediawiki.ui.button,ext.gadget.TipsyDeprecated]|watchUserContribs.js|watchUserContribs.css * WatchlistGreenIndicators[skins=vector]|WatchlistGreenIndicators.css * WatchlistChangesBold|WatchlistChangesBold.css * Hotcat[rights=edit]|HotCat.js * RevisionSlider[dependencies=jquery.ui,mediawiki.api,mediawiki.util]|revisionslider.js|revisionslider.css * toolbartocnav[dependencies=ext.wikiEditor]|toolbartocnav.css|toolbartocnav.js * purgetab[dependencies=mediawiki.util,mediawiki.api]|purgetab.js * databoxEditor[dependencies=jquery.client,jquery.mwEmbedUtil,mw.MwEmbedSupport,jquery.ui]|databoxeditor.js * wikEd|wikEd.js * revisionsSysopsActions[dependencies=mediawiki.util,ext.gadget.mediawiki.api.ptwiki,jquery.placeholder]|revisionsSysopsActions.js * validateBlockRollbackers|validateBlockRollbackers.js * watchlist[top]|watchlist.js * addsection-plus[skins=monobook,vector]|addsection-plus.css * CleanDeleteReasons[default|rights=delete]|CleanDeleteReasons.js * contentFeatured[dependencies=mediawiki.util,ext.gadget.mediawiki.api.ptwiki,jquery.ui]|contentFeatured.js|contentFeatured.css * easyPeerReview[rights=review|dependencies=mediawiki.util]|easyPeerReview.js * UTCLiveClock[type=general|dependencies=mediawiki.util,mediawiki.api|peers=UTCLiveClock-pagestyles]|UTCLiveClock.js|UTCLiveClock.css * UTCLiveClock-pagestyles[hidden|skins=vector,monobook]|UTCLiveClock-pagestyles.css * afchelper [dependencies=mediawiki.api, mediawiki.util, mediawiki.user, jquery.chosen, jquery.spinner, jquery.ui |namespaces=2, 118] |afchelper.js |afchelper.css * Shortdesc-helper-loader[dependencies=mediawiki.api,user.options,mediawiki.util|skins=vector,monobook,modern,timeless|peers=Shortdesc-helper-pagestyles-vector]|Shortdesc-helper.js * Shortdesc-helper-pagestyles-vector[hidden|skins=vector]|Shortdesc-helper-pagestyles-vector.css * MoreMenu-local[dependencies=mediawiki.api,mediawiki.util,mediawiki.Title,user.options|peers=MoreMenu-local-pagestyles]|MoreMenu.js * MoreMenu-local-pagestyles[hidden]|MoreMenu-pagestyles.css * scribe[dependencies=ext.visualEditor.core,mediawiki.api]| scribe.js|scribe.css * scribe-v2[dependencies=ext.visualEditor.core,mediawiki.api]| scribe-v2.js|scribe-v2.css * XFDcloser[dependencies=mediawiki.user|type=general]|XFDcloser.js * XFDcloser-core[dependencies=mediawiki.util,mediawiki.api,mediawiki.Title,oojs-ui-core,oojs-ui-widgets,oojs-ui-windows,oojs-ui.styles.icons-interactions,oojs-ui.styles.icons-content,oojs-ui.styles.icons-moderation,oojs-ui.styles.icons-alerts|hidden|type=general]|XFDcloser-core.js|XFDcloser-core.css * XFDcloser-core-beta[dependencies=mediawiki.util,mediawiki.api,mediawiki.Title,oojs-ui-core,oojs-ui-widgets,oojs-ui-windows,oojs-ui.styles.icons-interactions,oojs-ui.styles.icons-content,oojs-ui.styles.icons-moderation,oojs-ui.styles.icons-alerts|hidden|type=general]|XFDcloser-core-beta.js|XFDcloser-core-beta.css * libExtraUtil[hidden]|libExtraUtil.js * GoogleImagesTineye [dependencies=mediawiki.util]|GoogleImagesTineye.js * ShowJavascriptErrors[type=general]|ShowJavascriptErrors.js * lastEditUser[dependencies=mediawiki.util]|lastEditUser.js * dark-mode-toggle[targets=desktop,mobile|dependencies=mediawiki.util,mediawiki.api,mediawiki.Uri,mediawiki.storage|peers=dark-mode-toggle-pagestyles]|dark-mode-toggle.js * dark-mode-toggle-pagestyles[hidden|targets=desktop,mobile|skins=vector,vector-2022,minerva,monobook]|dark-mode-toggle-pagestyles.css * dark-mode[supportsUrlLoad|targets=desktop,mobile|skins=vector,vector-2022,monobook,modern,minerva,timeless]|dark-mode.css * addMe[default|dependencies=oojs-ui,mediawiki.api,mediawiki.util,mediawiki.jqueryMsg]|addMe.js * AutosuggestSitelink-local[dependencies=mediawiki.action.view.postEdit,mediawiki.ForeignApi,mediawiki.Title,oojs-ui-core,oojs-ui-windows]|AutosuggestSitelink.js * WpLibExtraDev[hidden]|WpLibExtraDev.js * MarkBLocked-core[hidden|dependencies=mediawiki.user,mediawiki.api,mediawiki.ForeignApi,mediawiki.storage,mediawiki.util,jquery.ui,oojs-ui,oojs-ui.styles.icons-moderation]|MarkBLocked-core.js|MarkBLocked-core.css * MarkBLocked[supportsUrlLoad|package|dependencies=mediawiki.user,mediawiki.api,mediawiki.ForeignApi,mediawiki.storage,mediawiki.util,jquery.ui,oojs-ui,oojs-ui.styles.icons-moderation]|MarkBLocked.js|MarkBLocked-core.js|MarkBLocked-core.css * MassRevisionDelete[rights=deleterevision|dependencies=jquery.makeCollapsible,oojs-ui,oojs-ui.styles.icons-movement,mediawiki.api]|MassRevisionDelete.js * edit-styles[ actions=edit|type=styles]|edit-styles.css * firstedit-test|firstedit-test.js * firstedit-short-test|firstedit-short-test.js * section-share[default]|section-share.js * akinput-core|akinput-core.js * akinput[dependencies=mediawiki.util,mediawiki.storage|akinput-core]|akinput-mediawiki.js|akinput.css * userMessages|UserMessages.js ==Wikivoyage-Experimental== * Carousel[type=general|dependencies=mediawiki.util]|Carousel.js|Carousel.css == modules == * fastButtonsCore[dependencies=mediawiki.api,ext.gadget.mediawiki.api.ptwiki,mediawiki.page.ready,jquery.ui,mediawiki.cookie]|fastbuttons.js/core.js * diffToolsCore[dependencies=mediawiki.api,mediawiki.util,user.options,ext.gadget.mediawiki.api.ptwiki,jquery.ui]|diffTools.js/core.js * validateBlockRollbackersCore[dependencies=mediawiki.util]|validateBlockRollbackers.js/core.js * requestForAdminshipCore[dependencies=ext.gadget.mediawiki.api.ptwiki,jquery.ui]|requestForAdminship.js/core.js|requestForAdminship.css * TipsyDeprecated[hidden]|tipsyDeprecated.js == arwiki == * changlist|changlist.css == Old-tests == * backgroundTest[top|type=styles]|backgroundTest.css == ruwiki == * ruwiki-test|ruwiki-test.js * ruwiki-core|ruwiki-core.js * ruwiki-common-action-edit[dependencies=user.options]|ruwiki-common-action-edit.js * ruwiki-common-namespace-file[hidden]|ruwiki-common-namespace-file.js * ruwiki-common-action-history[hidden]|ruwiki-common-action-history.js * ruwiki-common-special-delete|ruwiki-common-special-delete.js‎ * ruwiki-common-special-block[type=general]|ruwiki-common-special-block.js‎|ruwiki-common-special-block.css * ruwiki-common-special-log|ruwiki-common-special-log.js‎ * ruwiki-common-special-newpages|ruwiki-common-special-newpages.js‎ * ruwiki-common-special-movepage|ruwiki-common-special-movepage.js‎ * ruwiki-common-special-watchlist|ruwiki-common-special-watchlist.js‎ * ruwiki-common-special-search|ruwiki-common-special-search.js‎ * ruwiki-common-special-upload|ruwiki-common-special-upload.js‎ * ruwiki-wikificator[dependencies=user.options,jquery.textSelection,ext.gadget.ruwiki-registerTool]|ruwiki-wikificator.js * ruwiki-summaryButtons[type=general|hidden]|ruwiki-summaryButtons.js|ruwiki-summaryButtons.css * ruwiki-registerTool[hidden|dependencies=user.options]|ruwiki-registerTool.js * ruwiki-urldecoder[dependencies=ext.gadget.ruwiki-registerTool]|ruwiki-urldecoder.js === ruwiki-iw === * ruwiki-iwcore[hidden|type=general]|ruwiki-iwcore.js|ruwiki-iwcore.css * ruwiki-iwlocalnames[dependencies=ext.gadget.ruwiki-iwcore]|ruwiki-iwlocalnames.js * ruwiki-iwhints[dependencies=ext.gadget.ruwiki-iwcore]|ruwiki-iwhints.js * ruwiki-iwen[dependencies=ext.gadget.ruwiki-iwcore]|ruwiki-iwen.js * ruwiki-iwrussia[dependencies=ext.gadget.ruwiki-iwcore]|ruwiki-iwrussia.js == nowiki == * template-wizzard[rights=edit|type=general]|template-wizzard.js == azwiki == * Katalitik|Katalitik.js * XTools-ArticleInfo|XTools-ArticleInfo.js * addsection-plus|addsection-plus.js * markAdmins[dependencies=mediawiki.util]|markAdmins.js * directLinkToCommons[dependencies=mediawiki.util]|directLinkToCommons.js * switcher[targets=desktop,mobile]|switcher.js * patrolRevisions[dependencies=mediawiki.api,mediawiki.util|rights=patrol]|patrolRevisions.js == fawiki == * ScriptOne|ScriptOne.js * ScriptTwo|ScriptTwo.js|ScriptTwo.css * ScriptHidden[hidden]|ScriptHidden.css * ScriptThree[dependencies=mediawiki.api|peers=ScriptHidden]|ScriptThree.js * Morebits-i18n[dependencies=ext.gadget.morebitsV3,jquery.i18n]|Morebits-i18n.js == bnwiki == *markAdmins[dependencies=mediawiki.util]|markAdmins.js * DiscussionCloser[dependencies=mediawiki.util]|DiscussionCloser.js|DiscussionCloser.css * Twinkle-bn[dependencies=ext.gadget.morebits-bn,ext.gadget.select2-bn|rights=autoconfirmed|type=general|peers=Twinkle-pagestyles-bn]|Twinkle-bn.js|twinkleprod-bn.js|twinkleimage-bn.js|twinklebatchundelete-bn.js|twinklewarn-bn.js|twinklespeedy-bn.js|friendlyshared-bn.js|twinklediff-bn.js|twinkleunlink-bn.js|friendlytag-bn.js|twinkledeprod-bn.js|friendlywelcome-bn.js|twinklexfd-bn.js|twinklebatchdelete-bn.js|twinklebatchprotect-bn.js|twinkleconfig-bn.js|twinklefluff-bn.js|twinkleprotect-bn.js|twinklearv-bn.js|twinkleblock-bn.js|friendlytalkback-bn.js|Twinkle-bn.css * morebits-bn[dependencies=mediawiki.user,mediawiki.util,jquery.ui|hidden]|morebits-bn.js|morebits-bn.css * Twinkle-pagestyles-bn[hidden|skins=vector]|Twinkle-pagestyles-bn.css * select2-bn[hidden]|select2.min-bn.js|select2.min-bn.css ==bnwiktionary== * Rep2Ad|Rep2Ad.js ==ukwiki== * Wikificator[hidden]|Wikificator.js * Onlyifediting[action=edit|dependencies=ext.visualEditor.desktopArticleTarget.init,ext.gadget.Wikificator]|Onlyifediting.js * PostBlockActions[namespaces=-1]|PostBlockActions.js * ImgsCleanUp[package|dependencies=mediawiki.util,vue,@wikimedia/codex|rights=autoconfirmed|namespaces=6]|ImgsCleanUp.js|ImgsCleanUp-main.vue * valcio[dependencies=vue,codex]|valcio.js * codexTableBuilder[package|dependencies=vue,@wikimedia/codex|actions=edit,submit|rights=edit]|codexTableBuilder.js|codexTableBuilder.vue * codexTabs[package|default|dependencies=vue,@wikimedia/codex|type=general]|codexTabs.js|codexTabs.vue|codexTabs.css pz2bye40gr4po8t25mij6f9wv1yem55 Template:Infobox television 10 45931 768662 123657 2026-10-17T00:54:18Z Ember Hines 76216 768662 wikitext text/x-wiki {{Main other|{{Infobox television/Short description|released={{{released|}}}|first_aired={{{first_aired|}}}|country={{#invoke:String2 |split |txt={{#invoke:Unstrip|killMarkers|{{#invoke:Delink|delink|{{{country|}}}}}}} |sep=[<{;] |plain=false}}}}}} {{Infobox | templatestyles = Infobox television/styles.css | italic title = {{{italic_title|<noinclude>no</noinclude>}}} | bodyclass = ib-tv vevent | aboveclass = summary | above = {{#invoke:Infobox television|above_title}} | headerclass = summary | autoheaders = y | image = {{#invoke:InfoboxImage|InfoboxImage|image={{{image|}}}|size={{{image_size|}}}|upright={{If empty|{{{image_upright|}}}|1}}|alt={{If empty|{{{image_alt|}}}|{{{alt|}}}}}|title={{If empty|{{{image_alt|}}}|{{{alt|}}}}}|class={{{image_class|}}}}} | caption = {{{caption|}}} | class1 = ib-tv-aka | label1 = Also known as | data1 = {{{alt_name|}}} | class2 = description | data2 = {{{native_name|}}} | label3 = Genre | class3 = category | data3 = {{{genre|}}} | label4 = Created by | data4 = {{{creator|}}} | label5 = {{#if: {{{based_on|}}} | Based on | Inspired by }} | data5 = {{If empty |{{{based_on|}}} |{{{inspired_by|}}} }} | label6 = Developed by | data6 = {{{developer|}}} | label7 = Showrunner{{Pluralize from text|{{{showrunner|}}}|plural=s}} | data7 = {{{showrunner|}}} | label8 = Written by | data8 = {{{writer|}}} | label9 = {{#if: {{{teleplay|}}} | Teleplay | Screenplay }} by | data9 = {{If empty |{{{screenplay|}}} |{{{teleplay|}}} }} | label10 = Story by | data10 = {{{story|}}} | label11 = Directed by | class11 = attendee | data11 = {{{director|}}} | label12 = Creative director{{Pluralize from text|{{{creative_director|}}}|plural=s}} | class12 = attendee | data12 = {{{creative_director|}}} | label13 = Presented by | class13 = attendee | data13 = {{If empty |{{{presenter|}}} |{{{host|}}} }} | label14 = Starring | class14 = attendee | data14 = {{{starring|}}} | label15 = Judges | class15 = attendee | data15 = {{{judges|}}} | label16 = Voices of | class16 = attendee | data16 = {{{voices|}}} | label17 = {{#if: {{{announcer|}}} | Announcer | Narrated by }} | class17 = attendee | data17 = {{If empty |{{{narrator|}}} |{{{announcer|}}} }} | label18 = {{#if: {{{music|}}} | Music by | Theme music composer }} | data18 = {{If empty |{{{theme_music_composer|}}} |{{{music|}}} }} | label19 = Opening theme | data19 = {{{open_theme|}}} | label20 = Ending theme | data20 = {{{end_theme|}}} | label21 = Composer{{Pluralize from text|{{{composer|}}}|plural=s}} | data21 = {{{composer|}}} | label22 = {{Pluralize from text|{{{country|}}}|singular=Country|plural=Countries}} of origin | data22 = {{{country|}}} | label23 = Original language{{Pluralize from text|{{{language|}}}|plural=s}} | data23 = {{{language|}}} | label24 = {{Abbreviation|No.|Number}} of {{#if: {{{num_seasons|}}} | seasons | series }} | data24 = {{If empty |{{{num_seasons|}}} |{{{num_series|}}} }} | label25 = {{#ifeq: {{PAGENAME}} | Doctor Who | {{Abbreviation|No.|Number}} of series }} | data25 = {{#ifeq: {{PAGENAME}} | Doctor Who | {{{num_series|}}} }} | label26 = {{Abbreviation|No.|Number}} of {{#if: {{{num_specials|}}} | specials | episodes }} | data26 = {{If empty |{{{num_specials|}}} |{{{num_episodes|}}} }} {{#if: {{{list_episodes|}}} | {{Nowrap|([[{{{list_episodes}}}|list of episodes]])}} }} {{#ifeq:{{{list_episodes|}}} | #Episodes | {{Preview warning|1=Page using [[Template:Infobox television]] with "list_episodes" parameter using self-link. See [[Template:Infobox television#Usage|Infobox instructions]] and [[MOS:INFOBOXPURPOSE]].}} |}} | header27 = Production | label28 = Executive producer{{Pluralize from text|{{{executive_producer|}}}|plural=s}} | data28 = {{{executive_producer|}}} | label29 = Producer{{Pluralize from text|{{{producer|}}}|plural=s}} | data29 = {{{producer|}}} | label30 = News editor{{Pluralize from text|{{{news_editor|}}}|plural=s}} | data30 = {{{news_editor|}}} | label31 = Production location{{Pluralize from text|{{{location|}}}|plural=s}} | data31 = {{{location|}}} | label32 = Cinematography | data32 = {{{cinematography|}}} | label33 = Animator{{Pluralize from text|{{{animator|}}}|plural=s}} | data33 = {{{animator|}}} | label34 = Editor{{Pluralize from text|{{{editor|}}}|plural=s}} | data34 = {{{editor|}}} | label35 = Camera setup | data35 = {{{camera|}}} | label36 = Running time | data36 = {{{runtime|}}} | label37 = Production {{Pluralize from text|{{If empty |{{{company|}}} |{{{studio|}}} }}|singular=company|plural=companies}} | data37 = {{If empty |{{{company|}}} |{{{studio|}}} }} | label38 = Budget | data38 = {{{budget|}}} | header40 = Original release | label41 = Network | data41 = {{If empty |{{{network|}}} |{{{channel|}}} }} | label42 = Release | data42 = {{#invoke:Infobox/dates|dates|{{If empty |{{{first_aired|}}} |{{{released|}}} }}|{{{last_aired|}}}}} | rowclass43 = ib-tv-network-release | label43 = Network | data43 = {{If empty |{{{network2|}}} |{{{channel2|}}} }} | label44 = Release | data44 = {{#invoke:Infobox/dates|dates|{{If empty |{{{first_aired2|}}} |{{{released2|}}} }}|{{{last_aired2|}}}}} | rowclass45 = ib-tv-network-release | label45 = Network | data45 = {{If empty |{{{network3|}}} |{{{channel3|}}} }} | label46 = Release | data46 = {{#invoke:Infobox/dates|dates|{{If empty |{{{first_aired3|}}} |{{{released3|}}} }}|{{{last_aired3|}}}}} | rowclass47 = ib-tv-network-release | label47 = Network | data47 = {{If empty |{{{network4|}}} |{{{channel4|}}} }} | label48 = Release | data48 = {{#invoke:Infobox/dates|dates|{{If empty |{{{first_aired4|}}} |{{{released4|}}} }}|{{{last_aired4|}}}}} | rowclass49 = ib-tv-network-release | label49 = Network | data49 = {{If empty |{{{network5|}}} |{{{channel5|}}} }} | label50 = Release | data50 = {{#invoke:Infobox/dates|dates|{{If empty |{{{first_aired5|}}} |{{{released5|}}} }}|{{{last_aired5|}}}}} | rowclass51 = ib-tv-network-release | label51 = Network | data51 = {{If empty |{{{network6|}}} |{{{channel6|}}} }} | label52 = Release | data52 = {{#invoke:Infobox/dates|dates|{{If empty |{{{first_aired6|}}} |{{{released6|}}} }}|{{{last_aired6|}}}}} | rowclass53 = ib-tv-network-release | label53 = Network | data53 = {{If empty |{{{network7|}}} |{{{channel7|}}} }} | label54 = Release | data54 = {{#invoke:Infobox/dates|dates|{{If empty |{{{first_aired7|}}} |{{{released7|}}} }}|{{{last_aired7|}}}}} | rowclass55 = ib-tv-network-release | label55 = Network | data55 = {{If empty |{{{network8|}}} |{{{channel8|}}} }} | label56 = Release | data56 = {{#invoke:Infobox/dates|dates|{{If empty |{{{first_aired8|}}} |{{{released8|}}} }}|{{{last_aired8|}}}}} | header60 = Related | data61 = {{{related|}}} | below = {{If preview|[[Template:Infobox television#Usage|Infobox instructions (only shown in preview)]]}} }}<!-- Tracking categories -->{{#invoke:Check for unknown parameters|check|unknown={{Main other|[[Category:Pages using infobox television with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox television]] with unknown parameter "_VALUE_". See [[Template:Infobox television#Usage|Infobox instructions]].|showblankpositional=1| alt | alt_name | animator | announcer | based_on | budget | camera | caption | channel | cinematography | company | composer | country | creative_director | creator | developer | director | editor | end_theme | executive_producer | first_aired | genre | host | image | image_alt | image_class | image_size | image_upright | inspired_by | italic_title | judges | language | last_aired | list_episodes | location | music | name | narrator | native_name | network | news_editor | num_episodes | num_seasons | num_series | num_specials | open_theme | presenter | producer | related | released | runtime | screenplay | showrunner | starring | story | studio | teleplay | theme_music_composer | voices | writer | regexp1 = channel[2-8] | regexp2 = first_aired[2-8] | regexp3 = last_aired[2-8] | regexp4 = network[2-8] | regexp5 = released[2-8] }}<!-- -->{{Main other|{{#ifeq:{{{list_episodes|}}} | #Episodes | [[Category:Pages using infobox television with list_episodes parameter using self-link]] }}}}<!-- -->{{Main other|{{#invoke:Infobox television|validate_values}}}}<!-- -->{{Main other|{{#invoke:Infobox television disambiguation check|main|{{PAGENAME}}}}}}<!-- -->{{#invoke:Check for conflicting parameters|check | template = [[Template:Infobox television]] | based_on; inspired_by | screenplay; teleplay | presenter; host | narrator; announcer | theme_music_composer; music | num_seasons; num_series | num_specials; num_episodes | company; studio }}<!-- --><noinclude> {{Documentation}} </noinclude> qihzm5zzy46vn6lg48bjclk86kf1zkz Template:Infobox television/doc 10 45932 768666 89625 2026-10-17T00:57:59Z Ember Hines 76216 768666 wikitext text/x-wiki {{This|television programs|the infobox for specific models of televisions|Template:Infobox product}} {{Documentation subpage}} {{High-use}} {{Auto italic title|italic_title}} {{Auto short description}} {{Template shortcut|Infobox TV}} {{Lua|Module:Check for conflicting parameters|Module:Check for unknown parameters|Module:Delink|Module:Infobox/dates|Module:InfoboxImage|Module:Infobox television|Module:Infobox television disambiguation check|Module:String2|Module:Unstrip}} {{Uses TemplateStyles|Template:Infobox television/styles.css}} {{tlb|Infobox television}} is used to create an [[WP:Infobox|infobox]] which summarizes the main information of a particular television or internet program and can also be used for television films. == Usage == {{ {{PAGENAMETDOC}} | italic_title = no | image = Example-serious.jpg | image_upright = 1.1 | image_alt = Alt text for image | caption = {{var|caption}} | alt_name = {{var|alt_name}} | native_name = {{var|native_name}} | genre = {{var|genre}} | creator = {{var|creator}} | based_on = {{var|based_on}} | inspired_by = {{var|inspired_by}} | developer = {{var|developer}} | showrunner = {{var|showrunner}} | writer = {{var|writer}} | screenplay = {{var|screenplay}} | story = {{var|story}} | director = {{var|director}} | editor = {{var|editor}} | creative_director = {{var|creative_director}} | presenter = {{var|presenter}} | starring = {{var|starring}} | judges = {{var|judges}} | voices = {{var|voices}} | narrator = {{var|narrator}} | theme_music_composer = {{var|theme_music_composer}} | open_theme = {{var|open_theme}} | end_theme = {{var|end_theme}} | composer = {{var|composer}} | country = {{var|country}} | language = {{var|language}} | num_seasons = {{var|num_seasons}} | num_series = {{var|num_series}} | num_episodes = {{var|num_episodes}} | list_episodes = Template:Infobox television | executive_producer = {{var|executive_producer}} | producer = {{var|producer}} | news_editor = {{var|news_editor}} | location = {{var|location}} | cinematography = {{var|cinematography}} | animator = {{var|animator}} | camera = {{var|camera}} | runtime = {{var|runtime}} | company = {{var|company}} | budget = {{var|budget}} | network = {{var|network}} | first_aired = {{var|first_aired}} ({{var|released}}) | last_aired = {{var|last_aired}} | related = {{var|related}} }} ===Short=== <section begin=infobox /> <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox television | image = | image_alt = | caption = | alt_name = | genre = | creator = | showrunner = | writer = | screenplay = | teleplay = | story = | director = | presenter = | starring = | theme_music_composer = | music = | open_theme = | end_theme = | composer = | country = | language = | num_seasons = | num_series = | num_episodes = | list_episodes = | runtime = | company = | network = | first_aired = | last_aired = }} </syntaxhighlight> <section end=infobox /> ===Full=== <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox television | image = | image_size = | image_upright = | image_alt = | caption = | alt_name = | native_name = <!-- {{Infobox name module|language|title}} or {{Infobox name module|title}} --> | genre = <!-- Must be reliably sourced --> | creator = | based_on = <!-- {{Based on|title of the original work|creator of the original work|additional creator(s), if necessary}} --> | inspired_by = <!-- {{Based on|title of the original work|creator of the original work|additional creator(s), if necessary}} --> | developer = | showrunner = | writer = | screenplay = <!-- Only use without |teleplay= --> | teleplay = <!-- Only use without |screenplay= --> | story = | director = | creative_director = | presenter = <!-- Organized by broadcast credit order, with new main cast added to the end of the list --> | starring = <!-- Organized by broadcast credit order, with new main cast added to the end of the list --> | judges = <!-- Organized by broadcast credit order, with new main cast added to the end of the list --> | voices = <!-- Organized by broadcast credit order, with new main cast added to the end of the list --> | narrator = <!-- Only use without |announcer= --> | announcer = <!-- Only use without |narrator= --> | theme_music_composer = | music = | open_theme = | end_theme = | composer = | country = | language = | num_seasons = <!-- Increment when new seasons begin. Only use without |num_series= --> | num_series = <!-- Increment when new series begin. Only use without |num_seasons= --> | num_episodes = <!-- Value is incremented when new episodes become available --> | num_specials = | list_episodes = | executive_producer = | producer = | news_editor = <!-- Content editor or editors of a current affairs/political show such as ''Newsnight''. --> | location = <!-- Nation the series was primarily filmed in, if different from the nation of origin. --> | cinematography = | animator = <!-- Person(s) who served as animators, not animation houses, companies, etc. --> | editor = <!-- Film or video editors --> | camera = <!-- Either Single-camera or Multi-camera --> | runtime = <!-- Reliable source required --> | company = <!-- Production companies only --> | budget = | network = | released = <!-- {{Start date|YYYY|MM|DD}}. Only use without |first_aired= --> | first_aired = <!-- {{Start date|YYYY|MM|DD}}. Only use without |released= --> | last_aired = <!-- {{End date|YYYY|MM|DD}} --> | related = <!-- To be used only for remakes, spin-offs, and adaptations --> }} </syntaxhighlight> === Maintenance === If you encounter a usage of the template which you want to quickly restore to the above standard, use {{tlx|Infobox television/subst|subst=y}}. {{clear}} == Parameters == * Link people only if they have articles. * For most of the fields below, if there are multiple entries, separate them using {{tl|Plainlist}} or {{tl|Unbulleted list}}. * For fields that feature people as part of a team that use "&" and "and" crediting, each person should be listed individually. * When adding data to fields, do not use small text as this reduces the size of the text to below 85% of the page font size. See [[Wikipedia:Manual of Style/Accessibility#Text]] for more information. * Do not add additional text, such as years, seasons, or individual episodes, that explains when a person was part of the show {| class="wikitable" |+ Infobox television parameters and basic guidelines ! scope="col" | Parameter ! scope="col" | Explanation |- <!----------General----------> ! scope="row" | italic_title | A "no" value will disable the automatic italicization of the article's name. This parameter should not be used most of the time. |- ! scope="row" | name | The name of the television program, film or miniseries, defaults to the page name. Need not be used if the name is the same as the article title as the infobox handles this automatically. If set, use the full name and do not wikilink it. |- ! scope="row" | image | [[Help:Files|A suitable image]] relevant to the show. The image does not need to be wikilinked and should exclude "File:" e.g. <code><nowiki>Example.png</nowiki></code> Typically the image will be the series' title card, although this is not mandated. Free content should be used where available. |- ! scope="row" | image_size | Width of the image in pixels, excluding "px". If not specified the image width defaults to the value explained in {{para|image_upright}}. The size should not be set greater than 300px. |- ! scope="row" | image_upright | Use of this parameter is preferred to using {{para|image_size}}, as it allows [[Wikipedia:Autosizing images|auto-sizing of images]] according to user preferences. The size should not be set to a value that would result in an image width greater than 300px. See [[#Calculating "image_upright"|help below]] for guidance on determining the value to be used. Parameter defaults to 1. |- ! scope="row" | image_alt | Alt text, as required by [[MOS:ALT]]. Per [[Wikipedia:Manual of Style/Accessibility/Alternative text for images#Basics|guideline]], the text must be plain text (no HTML or wiki markup such as Wikilinks) and without line breaks. |- ! scope="row" | caption | A caption explaining the image. An image of the title card including the title logo, or the logo only, of the show does not need a caption. |- ! scope="row" | image_class | |- ! scope="row" | alt_name | An alternative name by which the television program is known. |- ! scope="row" | native_name | Insert the native title using the {{tl|Infobox name module}} template if it is different from the displayed title; please visit that template's page for full instructions. This parameter is for the native title only, i.e. it should not be used to add translated titles to the infobox. Example: {{nowrap|<code><nowiki>{{Infobox name module|ta|பாசமலர்}}</nowiki></code>}} will display the Tamil native name in the infobox – "ta" is the [[ISO 639|ISO 639 code]] for Tamil. |- ! scope="row" | genre | The genre of the show. Examples listed at [[Television genre|Film and television genres]]. Link if an article is available. Genres must be reliably sourced. |- ! scope="row" | creator | The show's creator or creators. This should be used over {{para|developer}} if the show is based on original material i.e. ''[[Lost (2004 TV series)|Lost]]'' or ''[[Law & Order]]'', unless a reliable source attributes a person with the title "creator". |- ! scope="row" | based_on | Insert the title of the source material and the name(s) of the source material writer(s). Use {{tl|based on}} or similar formatting where possible. Use this field if a series is based on previously produced or published material, such as films, books, plays, articles, old screenplays etc, and is explicitly credited as such. Do not use this field where the source material is ambiguous or cannot be reliably sourced. If a work was inspired by another, use {{para|inspired_by}}. |- ! scope="row" | inspired_by | Insert the title of the source material that inspired the series and the name(s) of the source material's writer(s). Use {{tl|based on}} or similar formatting where possible. Use this field if a series is inspired by previously produced or published material, such as films, books, plays, articles, old screenplays etc, and is explicitly credited as such. Do not use this field where the source material is ambiguous or cannot be reliably sourced. If a work was based on another, use {{para|based_on}}. |- ! scope="row" | developer | The show's developer or developers. This should be used over {{para|creator}} if the show is based on non-original material i.e. ''[[The Walking Dead (TV series)|The Walking Dead]]'' or ''[[Smallville]]'', unless a reliable source attributes a person with the title {{para|developer}}. |- ! scope="row" | showrunner | The show's [[showrunner]] or showrunners. Only to be used when a reliable source can verify that this position is used on a particular series. |- ! scope="row" | writer | The show's writer or writers. Do not use if the show has many (5+) writers. |- ! scope="row" | {{Unbulleted list|screenplay|teleplay}} | Used for television films. Insert the name(s) of the screenplay writer(s). Use this field instead of the normal writer field if films divide writing credits between screenplay and story writers. In addition, link each writer to their appropriate article if possible. If "Teleplay by" credit is used, use {{para|teleplay}}. |- ! scope="row" | story | Used for television films. Insert the name(s) of the story writer(s). Use this field instead of the normal writer field if films divide writing credits between screenplay and story writers. In addition, link each writer to their appropriate article if possible. |- ! scope="row" | director | The show's [[Film director|director]]. |- ! scope="row" | creative_director | The show's [[creative director]]. |- ! scope="row" | {{Unbulleted list|presenter}} | The show's presenters or hosts. Presenters are listed in original credit order followed by order in which new presenters joined the show. |- ! scope="row" | starring | The show's starring cast. Cast are listed in original credit order followed by order in which new cast joined the show. Character names should not be included. |- ! scope="row" | judges | If the show involves judges, list them here. Judges are listed in original credit order followed by order in which new judges joined the show. |- ! scope="row" | voices | Any voice artists used in the show. Cast are listed in original credit order followed by order in which new cast joined the show. Character names should not be included. |- ! scope="row" | narrator | The show's credited [[narrator]](s) (if applicable). Cannot be used with {{para|announcer}}. |- ! scope="row" | announcer | The show's credited announcer(s) (if applicable), such as those for a game show or talk show. Cannot be used with {{para|narrator}}. |- ! scope="row" | theme_music_composer | The name of the composer of the show's theme music. For non-theme music composer, use {{para|composer}}. |- ! scope="row" | music | The name of the composer of the show's music. For the theme music composer, use {{para|theme_music_composer}}. Do not use if {{para|theme_music_composer}} is set; use {{para|composer}} instead. |- ! scope="row" | open_theme | The name of the opening theme for the show. |- ! scope="row" | end_theme | The name of the ending theme for the show. |- ! scope="row" | composer | The principal composer or composers providing incidental music for the show's episodes. |- ! scope="row" | country | The show's country or countries of origin. Do not use flag icons, as this places an unnecessary emphasis on nationality – see [[MOS:INFOBOXFLAG]] for a detailed rationale. Do not link major countries, e.g., <nowiki>[[</nowiki>[[United States]]<nowiki>]]</nowiki>, per [[WP:OVERLINK]].<!--amended March 2022: [[Template_talk:Infobox_television#Linking_language]]--> |- ! scope="row" | language | The original language or languages of the show. Do not link major languages, e.g., <nowiki>[[</nowiki>[[English language]]<nowiki>|English]]</nowiki>, per [[WP:OVERLINK]].<!--amended March 2022: [[Template_talk:Infobox_television#Linking_language]]--> |- ! scope="row" | {{Unbulleted list|num_seasons|num_series}} | The number of seasons (US) or series (UK) produced. Use one or the other, not both. The parameter should only be incremented once the first episode of that season or series has aired, or if a [[Wikipedia:Reliable sources|reliable source]] confirms production has commenced. An [[Wikipedia:Citing sources|inline citation]] is required if the total number of seasons produced is greater than the number aired. |- ! scope="row" | {{Unbulleted list|num_episodes|num_specials}} | The number of episodes or specials released. This parameter should only be incremented when new episodes or specials air. An [[Wikipedia:Citing sources|inline citation]] is required if the total number of episodes produced is greater than the number aired, such as in the case of a show being cancelled. |- ! scope="row" | list_episodes | If a Wikipedia "List of" article exists for the show's episodes, put its {{strong|name}} here. * Do not use a link (i.e. do not include <code>[[ ]]</code>) * Do not enter the {{strong|number}} of episodes here, use {{para|num_episodes}} for that * Do not link to sections in the article (i.e. do not use <code>#Episodes</code>) per [[MOS:INFOBOXPURPOSE]] |- <!----------Production-specific----------> ! scope="col" colspan="2" style="text-align: center;" | Production-specific |- ! scope="row" | executive_producer | The executive producer(s) of the show. This should not be used for writers on the series' writing staff who receive "co-executive producer" credits, which are not the same as executive producers. |- ! scope="row" | producer | The producer(s) of the show. This generally should be for individuals who receive either "Produced by" or "Producer" credit in a series' main opening or on-end credits (typically credited between executive producers and [[Below-the-line (filmmaking)|below-the-line]] creative head credits). This role and credit generally refers to the series' [[line producer]]; see the [[Producers Guild of America]] [https://producersguild.org/code-of-credits-episodic-television-scripted/#line-producer-produced-by guide to television credits] for more information. Note that this field should not be used for low-level writers on the series' writing staff who can receive credits such as "producer", "co-producer", or "supervising producer", nor starring actors who are granted creative producer credit. |- ! scope="row" | news_editor | This field should be used to indicate the senior reporter who oversees the writing of news and magazine video content for a current affairs or political show such as [[Newsnight]]. |- ! scope="row" | location | Production location, i.e. where the show was primarily shot. Leave blank if same as country of origin above. |- ! scope="row" | cinematography | The director of [[cinematography]] or lead [[cameraman]]. |- ! scope="row" | animator | The person(s) who served as animators of the show. Note: animation houses or other sub-contractors hired to perform production work should not be included here. |- ! scope="row" | editor | The [[Film editing|film editor(s)]] or [[Video editing|video editor(s)]]. |- ! scope="row" | camera | Either [[Single-camera setup|Single-camera]] or [[Multiple-camera setup|Multi-camera]]. |- ! scope="row" | runtime | Episode duration. Should not include commercials and should be approximated, e.g. "22–26 minutes" for most half-hour shows. |- ! scope="row" | company | The names of the production company or companies that funded or organized series production. Note: sub-contractors hired to perform production work, e.g. animation houses, special effects studios, post-production facilities etc. should not be included here, as this may create confusion about the nation(s) of origin. Instead, use sourced prose in the article's Production section to explain these details. |- ! scope="row" | budget | Used for television films. The budget of the television film or miniseries. |- <!----------Broadcast-specific----------> ! scope="col" colspan="2" style="text-align: center;" | Broadcast-specific |- ! scope="row" id="network" | network | The original network(s) or [[streaming media]] services (such as [[Netflix]]) on which the show first appeared in the country of origin. Use links if articles are available. |- ! scope="row" id="released" | released | The date the show first aired on its original network or streaming media site. This should be used for one-off programs such as television films, television plays, and specials or for shows that released all of their episodes at the same time. Only insert the date after it has happened. The parameter is not restricted to a "premiere" date. In the event a program airs a full "preview" episode on TV in advance of a premiere, that date should be used instead. Do not use this field to list dates for [[Spinoff (media)|spin-offs]]. Use {{tl|Start date}} (e.g. {{tlx|Start date|1981|2|26}}) so that the date is included in the template's [[hCalendar]] microformat, and is properly formatted according to a reader's Wikipedia date and time [[Special:Preferences|preferences]]. Add {{para|df|y}} if the article [[WP:DATERET|uses]] the dmy date format. |- ! scope="row" id="first aired" | first_aired | The date the show first aired its first episode on its original network or streaming media site. Only insert the date after it has happened. The parameter is not restricted to a "premiere" date. In the event a program airs a full "preview" episode on TV in advance of a premiere, that date should be used instead. Separate [[pilot episodes]] do not count as a premiere date. Do not use this field to list dates for [[Spin-off (media)|spin-offs]]. Use {{tl|Start date}} (e.g. {{tlx|Start date|1981|2|26}}) so that the date is included in the template's [[hCalendar]] microformat, and is properly formatted according to a reader's Wikipedia date and time [[Special:Preferences|preferences]]. Add {{para|df|y}} if the article [[WP:DATERET|uses]] the dmy date format. |- ! scope="row" id="last aired" | last_aired | The date the show first aired its last episode on its original network or streaming media site. Use "present" if the show is ongoing or renewed and {{tl|End date}} if the show has ended. Insert the last episode's date only after it has happened. In some cases, the fate of a program might be uncertain, for example if there are no announcements that a show has been renewed. If such a program has not aired a new episode in 12 months, "present" can be changed to the date the last episode aired, using {{tl|End date}}. This does not imply the series has been cancelled, rather that the program "last aired" on that date. This is to prevent programs from being listed as "present" in perpetuity. In the event that a program resumes airing after a long hiatus, such as more than 12 months between episodes or cancellation and subsequent renewal, the date template can be replaced with "present" to reflect the current status of the program. |- ! scope="row" | network[2-8] | If the show was canceled and revived or moved to another network, or the network was rebranded, use the additional parameters. See [[#network]] for additional information. |- ! scope="row" | released[2-8] | If the show was canceled and revived or moved to another network, or the network was rebranded, use the additional parameters. See [[#released]] for additional information. |- ! scope="row" | first_aired[2-8] | If the show was canceled and revived or moved to another network, or the network was rebranded, use the additional parameters. See [[#first aired]] for additional information. |- ! scope="row" | last_aired[2-8] | If the show was canceled and revived or moved to another network, or the network was rebranded, use the additional parameters. See [[#last aired]] for additional information. |- <!----------Related----------> ! scope="col" colspan="2" style="text-align: center;" | Related |- ! scope="row" | related | Related TV shows, i.e. remakes, spin-offs, adaptations for different audiences, etc. For example, [[The Office (British TV series)|''The Office'' (British TV series)]] and [[The Office (American TV series)|''The Office'' (American TV series)]]; ''[[The Upper Hand]]'' and ''[[Who's the Boss?]]''; etc. Note that simply sharing crossover episodes does not make series related. Links to larger franchises may also be helpful to include, such as [[Law & Order (franchise)|''Law & Order'' (franchise)]] or [[List of Marvel Cinematic Universe television series (Marvel Studios)]]. |} ===Deprecated parameters=== The "External links" parameters ({{para|website}}, {{para|website_title}}, {{para|production_website}}, and {{para|production_website_title}}) were removed from the infobox in March 2022 ([[Template talk:Infobox television/Archive 13#Website parameters|discussion]]). If the website is useful and is not already present in the article's "External links" section, it should be added there. The {{para|distributor}} parameter was removed from the infobox in March 2023 ([[Template talk:Infobox television/Archive 14#Distributor parameter: is it needed?|discussion]]). The "Chronology" parameters ({{para|preceded_by}} and {{para|followed_by}}) were removed from the infobox in March 2023 ([[Template talk:Infobox television/Archive 14#Deleting some Chronology parameters|discussion]]). Further clarifying of related and successive series or franchises is better discussed elsewhere in the article, such as its lead, within the body of the article or a "See also" section, or in a related navbox, and should be added or moved to those locations if needed. The parameter {{para|related}} remains in the infobox to also be utilized, while the heading was adjusted from "Chronology" to "Related". The "Picture format" and "Audio format" parameters ({{para|picture_format}} and {{para|audio_format}}) were removed from the infobox in August 2023 ([[Template talk:Infobox television/Archive 14#Remove "Picture format" and "audio format"|discussion]]). === Controlling line-breaking in embedded bulletless lists === Template {{tlx|nbsp}} may be used with {{tlx|wbr}} and {{tlx|nowrap}} to control line-breaking in bulletless lists embedded in the infobox (e.g. cast and other credits lists), to prevent wrapped long entries from being confused with multiple entries. See [[Template:Wbr/doc#Controlling line-breaking in infoboxes]] for details. {{#section:Template:Infobox Australian place/doc|image_upright}} === TemplateData === {{Collapse top|title=[[Wikipedia:TemplateData|TemplateData]] documentation used by [[Wikipedia:VisualEditor|VisualEditor]] and other tools}} {{TemplateData header|noheader=1}} <templatedata> { "description": "Infobox used on articles about television and web programs.", "params": { "italic_title": { "label": "Italic title", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "A \"no\" value will disable the automatic italicization of the article. This parameter should not be used most of the time." }, "name": { "label": "Television program name", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The name of the television program, film or miniseries, defaults to the page name. Should not be used if the name is the same as the article title as the infobox handles this automatically. If set, use the full name and do not wikilink it." }, "image": { "label": "Image", "type": "wiki-file-name", "required": false, "suggested": true, "deprecated": false, "description": "An image relevant to the show." }, "image_size": { "label": "Image size", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "Width of the image in pixels, excluding \"px\". If not specified the image width defaults to the value explained in \"image_upright\". The size should not be set greater than 300px." }, "image_upright": { "label": "Image upright", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "Use of this parameter is preferred to using \"image_size\", as it allows auto-sizing of images according to user preferences. The size should not be set to a value that would result in an image width greater than 300px. See help below for guidance on determining the value to be used." }, "image_alt": { "label": "Image alt", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Alt text, as required by MOS:ALT. Per guideline, the text must be plain text (no HTML or wiki markup such as Wikilinks) and without line breaks.", "aliases": [ "alt" ] }, "caption": { "label": "Image caption", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "A caption explaining the image." }, "image_class": { "label": "Image class", "type": "line", "required": false, "suggested": false, "deprecated": false, "suggestedvalues": [ "skin-invert" ] }, "alt_name": { "label": "Additional show names", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "An alternative name by which the television program is known." }, "native_name": { "label": "Native name", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Native title. Should only be used, if the native title differs from the common film title." }, "genre": { "label": "Genre", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The genre of the show. Examples listed at Film and television genres." }, "creator": { "label": "Creator", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The show's creator or creators." }, "based_on": { "label": "Based on", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the source material and the name(s) of the source material writer(s). Use this field if a series is based on previously produced or published material, such as films, books, plays, articles, old screenplays etc, and is explicitly credited as such. Do not use this field where the source material is ambiguous or cannot be reliably sourced. If a work was inspired by another, use inspired_by." }, "inspired_by": { "label": "Inspired by", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The title of the source material that inspired the series and the name(s) of the source material's writer(s). Use this field if a series is inspired by previously produced or published material, such as films, books, plays, articles, old screenplays etc, and is explicitly credited as such. Do not use this field where the source material is ambiguous or cannot be reliably sourced. If a work was based on another, use based_on." }, "developer": { "label": "Developer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The show's developer or developers." }, "showrunner": { "label": "Showrunner", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The show's showrunner or showrunners" }, "writer": { "label": "Writer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The show's writer or writers." }, "screenplay": { "label": "Screenplay", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Used for television films. Insert the name(s) of the screenplay writer(s). Use this field instead of the normal writer field if films divide writing credits between screenplay and story writers.", "aliases": [ "teleplay" ] }, "story": { "label": "Story", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Used for television films. Insert the name(s) of the story writer(s). Use this field instead of the normal writer field if films divide writing credits between screenplay and story writers." }, "director": { "label": "Director", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The show's director." }, "creative_director": { "label": "Creative director", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The show's creative director." }, "presenter": { "label": "Presenter", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The show's presenters.", "aliases": [ "host" ] }, "starring": { "label": "Starring", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The show's starring cast." }, "judges": { "label": "Judges", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "If the show involves judges, list them here." }, "voices": { "label": "Voice actors", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Any voice artists used in the show." }, "narrator": { "label": "Narrators", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The show's credited narrator(s) (if applicable)." }, "announcer": { "label": "Announcer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The show's credited announcer(s) (if applicable), such as those for a game show or talk show." }, "theme_music_composer": { "label": "Theme music composer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The name of the composer of the show's theme music. For non-theme music composer, use |music=." }, "music": { "label": "Music composer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The name of the composer of the show's music. For the theme music composer, use |theme_music_composer=." }, "open_theme": { "label": "Opening theme", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The name of the opening theme for the show." }, "end_theme": { "label": "Ending theme", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The name of the ending theme for the show." }, "composer": { "label": "Composer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The principal composer or composers providing incidental music for the show's episodes." }, "country": { "label": "Country", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The show's country of origin." }, "language": { "label": "Language", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The original language or languages of the show." }, "num_seasons": { "label": "Number of seasons", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "The number of seasons (US) or series (UK) produced.", "aliases": [ "num_series" ] }, "num_episodes": { "label": "Number of episodes", "type": "number", "required": false, "suggested": false, "deprecated": false, "description": "The number of episodes released.", "aliases": [ "num_specials" ] }, "list_episodes": { "label": "List of episodes article", "type": "wiki-page-name", "required": false, "suggested": false, "deprecated": false, "description": "The show's List of episodes article." }, "executive_producer": { "label": "Executive producer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The executive producer(s) of the show." }, "producer": { "label": "Producer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The producer(s) of the show who receive either \"Produced by\" or \"Producer\" credit in a series' main opening or on-end credits." }, "news_editor": { "label": "News editor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Content editor or editors of a current affairs or political show" }, "location": { "label": "Location", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The production location." }, "cinematography": { "label": "Cinematographer", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The director of cinematography or lead cameraman." }, "animator": { "label": "Animator", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The animator or animators of the show." }, "editor": { "label": "Editor", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The editor or editors." }, "camera": { "label": "Camera setup", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Either Single-camera or Multi-camera." }, "runtime": { "label": "Run time", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Episode duration. Should not include commercials and should be approximated, e.g. \"22–26 minutes\" for most half-hour shows." }, "company": { "label": "Company", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The names of the production company or companies that funded/organized series production.", "aliases": [ "studio" ] }, "budget": { "label": "Budget", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "Used for television films. The budget of the television film or miniseries." }, "network": { "label": "Network", "type": "string", "required": false, "suggested": false, "deprecated": false, "description": "The original network(s) on which the show first appeared in the country of origin. Use links if articles are available.", "aliases": [ "channel" ] }, "released": { "label": "Released", "type": "date", "required": false, "suggested": false, "deprecated": false, "description": "The date the show first aired on its original network or streaming media site. Do not use this field to list dates for spin-offs." }, "first_aired": { "label": "First aired date", "type": "date", "required": false, "suggested": false, "deprecated": false, "description": "The date the show first aired its first episode on its original network or streaming media site. Do not use this field to list dates for spin-offs." }, "last_aired": { "label": "Last aired date", "type": "date", "required": false, "suggested": false, "deprecated": false, "description": "The date the show first aired its last episode on its original network or streaming media site. Use \"present\" if the show is ongoing or renewed and {{End date}} if the show is ended." }, "network2": { "label": "Network2", "inherits": "network", "aliases": [ "channel2" ] }, "released2": { "label": "Released2", "inherits": "released" }, "first_aired2": { "label": "First aired date2", "inherits": "first_aired" }, "last_aired2": { "label": "Last aired date2", "inherits": "last_aired" }, "network3": { "label": "Network3", "inherits": "network", "aliases": [ "channel3" ] }, "released3": { "label": "Released3", "inherits": "released" }, "first_aired3": { "label": "First aired date3", "inherits": "first_aired" }, "last_aired3": { "label": "Last aired date3", "inherits": "last_aired" }, "network4": { "label": "Network4", "inherits": "network", "aliases": [ "channel4" ] }, "released4": { "label": "Released4", "inherits": "released" }, "first_aired4": { "label": "First aired date4", "inherits": "first_aired" }, "last_aired4": { "label": "Last aired date4", "inherits": "last_aired" }, "network5": { "label": "Network5", "inherits": "network", "aliases": [ "channel5" ] }, "released5": { "label": "Released5", "inherits": "released" }, "first_aired5": { "label": "First aired date5", "inherits": "first_aired" }, "last_aired5": { "label": "Last aired date5", "inherits": "last_aired" }, "network6": { "label": "Network6", "inherits": "network", "aliases": [ "channel6" ] }, "released6": { "label": "Released6", "inherits": "released" }, "first_aired6": { "label": "First aired date6", "inherits": "first_aired" }, "last_aired6": { "label": "Last aired date6", "inherits": "last_aired" }, "network7": { "label": "Network7", "inherits": "network", "aliases": [ "channel7" ] }, "released7": { "label": "Released7", "inherits": "released" }, "first_aired7": { "label": "First aired date7", "inherits": "first_aired" }, "last_aired7": { "label": "Last aired date7", "inherits": "last_aired" }, "network8": { "label": "Network8", "inherits": "network", "aliases": [ "channel8" ] }, "released8": { "label": "Released8", "inherits": "released" }, "first_aired8": { "label": "First aired date8", "inherits": "first_aired" }, "last_aired8": { "label": "Last aired date8", "inherits": "last_aired" }, "related": { "label": "Related", "type": "wiki-page-name", "required": false, "suggested": false, "deprecated": false, "description": "Related TV shows, i.e. remakes, spin-offs, adaptations for different audiences, etc." } }, "format": "\n{{_\n| ____________________ = _\n}}\n", "paramOrder": [ "italic_title", "name", "image", "image_size", "image_upright", "image_alt", "caption", "image_class", "alt_name", "native_name", "genre", "creator", "based_on", "inspired_by", "developer", "showrunner", "writer", "screenplay", "story", "director", "creative_director", "presenter", "starring", "judges", "voices", "narrator", "announcer", "theme_music_composer", "music", "open_theme", "end_theme", "composer", "country", "language", "num_seasons", "num_episodes", "list_episodes", "executive_producer", "producer", "news_editor", "location", "cinematography", "animator", "editor", "camera", "runtime", "company", "budget", "network", "released", "first_aired", "last_aired", "network2", "released2", "first_aired2", "last_aired2", "network3", "released3", "first_aired3", "last_aired3", "network4", "released4", "first_aired4", "last_aired4", "network5", "released5", "first_aired5", "last_aired5", "network6", "released6", "first_aired6", "last_aired6", "network7", "released7", "first_aired7", "last_aired7", "network8", "released8", "first_aired8", "last_aired8", "related" ] } </templatedata> {{Collapse bottom}} == Example == {{Hatnote|Example taken from [[House (TV series)]]}} {{Infobox television | italic_title = no | name = House | image = House logo.svg | alt_name = ''House, M.D.'' | genre = {{Plainlist| * [[Medical drama]] * [[Black comedy]] }} | creator = [[David Shore]] | showrunner = David Shore | starring = {{Plainlist| * [[Hugh Laurie]] * [[Lisa Edelstein]] * [[Omar Epps]] * [[Robert Sean Leonard]] * [[Jennifer Morrison]] * [[Jesse Spencer]] * [[Peter Jacobson]] * [[Kal Penn]] * [[Olivia Wilde]] * [[Amber Tamblyn]] * [[Odette Annable]] * [[Charlyne Yi]] }} | open_theme = {{Theme song|"[[Teardrop (song)|Teardrop]]"|[[Massive Attack]]}} | composer = {{Plainlist| * Jason Derlatka * Jon Ehrlich }} | country = United States | language = English | num_seasons = 8 | num_episodes = 177 | list_episodes = List of House episodes | executive_producer = {{Plainlist| * [[Paul Attanasio]] * [[Katie Jacobs]] * David Shore * [[Bryan Singer]] * Thomas L. Moran * [[Russel Friend]] * [[Garrett Lerner]] * [[Greg Yaitanes]] * [[Hugh Laurie]] }} | cinematography = {{Plainlist| * [[Newton Thomas Sigel]] * Walt Lloyd * [[Roy H. Wagner]] * [[Gale Tattersall]] * Tony Gaudioz }} | runtime = 41–49 minutes | company = {{Plainlist| * [[Heel and Toe Films]] * [[Shore Z Productions]] * [[Bad Hat Harry Productions]] * [[NBC Universal Television Studio]] * [[Universal Media Studios]] }} | network = [[Fox Broadcasting Company|Fox]] | first_aired = {{Start date|2004|11|16}} | last_aired = {{End date|2012|5|21}} | related = {{Plainlist| * ''[[Nurse Jeffrey]]'' * ''[[Doctor Richter|Dr. Tyrsa]]'' }} }} <syntaxhighlight lang="wikitext" style="overflow: auto;"> {{Infobox television | image = House logo.svg | alt_name = ''House, M.D.'' | genre = {{Plainlist| * [[Medical drama]] * [[Black comedy]] }} | creator = [[David Shore]] | showrunner = David Shore | starring = {{Plainlist| * [[Hugh Laurie]] * [[Lisa Edelstein]] * [[Omar Epps]] * [[Robert Sean Leonard]] * [[Jennifer Morrison]] * [[Jesse Spencer]] * [[Peter Jacobson]] * [[Kal Penn]] * [[Olivia Wilde]] * [[Amber Tamblyn]] * [[Odette Annable]] * [[Charlyne Yi]] }} | open_theme = {{Theme song|"[[Teardrop (song)|Teardrop]]"|[[Massive Attack]]}} | composer = {{Plainlist| * Jason Derlatka * Jon Ehrlich }} | country = United States | language = English | num_seasons = 8 | num_episodes = 177 | list_episodes = List of House episodes | executive_producer = {{Plainlist| * [[Paul Attanasio]] * [[Katie Jacobs]] * David Shore * [[Bryan Singer]] * Thomas L. Moran * [[Russel Friend]] * [[Garrett Lerner]] * [[Greg Yaitanes]] * [[Hugh Laurie]] }} | cinematography = {{Plainlist| * [[Newton Thomas Sigel]] * Walt Lloyd * [[Roy H. Wagner]] * [[Gale Tattersall]] * Tony Gaudioz }} | runtime = 41–49 minutes | company = {{Plainlist| * [[Heel and Toe Films]] * [[Shore Z Productions]] * [[Bad Hat Harry Productions]] * [[NBC Universal Television Studio]] * [[Universal Media Studios]] }} | network = [[Fox Broadcasting Company|Fox]] | first_aired = {{Start date|2004|11|16}} | last_aired = {{End date|2012|5|21}} | related = {{Plainlist| * ''[[Nurse Jeffrey]]'' * ''[[Doctor Richter|Dr. Tyrsa]]'' }} }} </syntaxhighlight> {{clear}} == Microformat == {{UF-hcal}} == Tracking categories == <section begin=Tracking/> * {{Category link with count|Pages using infobox television with flag icon}} * {{Category link with count|Pages using infobox television with image-related values without an image}} * {{Category link with count|Pages using infobox television with incorrectly formatted values}} * {{Category link with count|Pages using infobox television with list episodes parameter using self-link}} * {{Category link with count|Pages using infobox television with non-matching title}} * {{Category link with count|Pages using infobox television with manual displaytitle}} * {{Category link with count|Pages using infobox television with missing dates}} * {{Category link with count|Pages using infobox television with nonstandard dates}} * {{Category link with count|Pages using infobox television with unknown parameters}} * {{Category link with count|Pages using infobox television with unlinked values}} * {{Category link with count|Pages using infobox television with unnecessary manual displaytitle}} * {{Category link with count|Pages using infobox television with unnecessary name parameter}} * {{Category link with count|Television articles with incorrect naming style}} <section end=Tracking/> {{Film- and television-related infobox templates}} <includeonly> {{Sandbox other|| [[Category:Television infobox templates|Television]] [[Category:Infobox templates using Wikidata]] [[Category:Templates that add a tracking category]] }}</includeonly> 4sc4jzgwj03bglrkqxj8hnyfz5s6upx Wikipedia:Test 4 71460 768637 768530 2026-10-16T22:20:44Z Rosetvrnip 75253 /* Test */ Start 768637 wikitext text/x-wiki = Test = 1016 Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6 (?) *10:7 (?) *10:8 (?) *10:9 (?) *10:10 (?) *10:11 (?) *10:12 (?) *10:13 (10:14) ''10:15'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. Current, 202 6929. ($#!+). *202 6930. (iPod Classic, Playlist or Songs) ''20261001'' b1189wkjwbog1wqhkvbhtrpfh9hy5jh 768638 768637 2026-10-16T22:30:26Z ~2026-55536-16 76248 768638 wikitext text/x-wiki = Test = Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6 (?) *10:7 (?) *10:8 (?) *10:9 (?) *10:10 (?) *10:11 (?) *10:12 (?) *10:13 (10:14) ''10:15'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. Current, 202 6929. ($#!+). *202 6930. (iPod Classic, Playlist or Songs) ''20261001'' qitbed0yxw3z53335ybc66iq35zncr8 768639 768638 2026-10-16T22:30:47Z ~2026-55536-16 76248 /* Test */ 5555555 768639 wikitext text/x-wiki = Test = 1016 Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6 (?) *10:7 (?) *10:8 (?) *10:9 (?) *10:10 (?) *10:11 (?) *10:12 (?) *10:13 (10:14) ''10:15'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. Current, 202 6929. ($#!+). *202 6930. (iPod Classic, Playlist or Songs) ''20261001'' b1189wkjwbog1wqhkvbhtrpfh9hy5jh 768640 768639 2026-10-16T22:31:49Z ~2026-55536-16 76248 768640 wikitext text/x-wiki = Test = 1016 - Download Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6 (?) *10:7 (?) *10:8 (?) *10:9 (?) *10:10 (?) *10:11 (?) *10:12 (?) *10:13 (10:14) ''10:15'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. Current, 202 6929. ($#!+). *202 6930. (iPod Classic, Playlist or Songs) ''20261001'' mittw0wprphb5ef0tqm4jyk7fkba69x 768641 768640 2026-10-16T22:32:11Z ~2026-55536-16 76248 768641 wikitext text/x-wiki = Test = 1016 - Up and Down Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6 (?) *10:7 (?) *10:8 (?) *10:9 (?) *10:10 (?) *10:11 (?) *10:12 (?) *10:13 (10:14) ''10:15'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. Current, 202 6929. ($#!+). *202 6930. (iPod Classic, Playlist or Songs) ''20261001'' are33tsoiylpg6ggxvl50584jb881cu 768642 768641 2026-10-16T22:32:22Z ~2026-55536-16 76248 768642 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6 (?) *10:7 (?) *10:8 (?) *10:9 (?) *10:10 (?) *10:11 (?) *10:12 (?) *10:13 (10:14) ''10:15'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. Current, 202 6929. ($#!+). *202 6930. (iPod Classic, Playlist or Songs) ''20261001'' 5fbugjv8sie30yiw9g47cwymkk52185 768643 768642 2026-10-16T22:32:46Z ~2026-55536-16 76248 /* Test */ Done 768643 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6 (?) *10:7 (?) *10:8 (?) *10:9 (?) *10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. Current, 202 6929. ($#!+). *202 6930. (iPod Classic, Playlist or Songs) ''20261001'' l9himv52c10cgyakw3nib9dljgnrv2g 768644 768643 2026-10-16T22:36:26Z ~2026-55536-16 76248 768644 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. Current, 202 6929. ($#!+). *202 6930. (iPod Classic, Playlist or Songs) ''20261001'' 3f7lwb9fuu0981wklpz84qmp8gu8vu3 768645 768644 2026-10-16T22:40:13Z ~2026-55536-16 76248 /* Test */ 1 start, Limited 768645 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. Current, 202 6929. ($#!+). *202 6930. (iPod Classic, Playlist or Songs) ''20261001'' kg5fse711zsi7muy8zwvfzjaw513z6o 768646 768645 2026-10-16T22:41:20Z ~2026-55536-16 76248 /* Test */ 1 done 768646 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. Current, 202 6930. ($#!+). *202 61001. (High Street Melton or Melton West Estates) ''20261002'' lu803wr2phajfs5texvvpn6270ujoru 768647 768646 2026-10-16T22:42:06Z ~2026-55536-16 76248 768647 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Current, 202 6930. ($#!+). *202 61001. (High Street Melton or Melton West Estates) ''20261002'' ojpq6wrlk4vjxtsnqzfm0my4bz62ipm 768648 768647 2026-10-16T22:42:39Z ~2026-55536-16 76248 /* Test */ 2 768648 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Cola Bottle and Others. Current, 202 6930. ($#!+). *202 61001. (High Street Melton or Melton West Estates) ''20261002'' axga02pp3qn29lzmg9qerd550617swx 768649 768648 2026-10-16T22:43:26Z ~2026-55536-16 76248 /* Test */ 2 done 768649 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Cola Bottle and Others. Current, 202 61001. ($#!+). *202 61002. (Old Car Registrations, Vicroads) ''20261003'' tw4svo294kigg7jgvl2n7bulnfgvz0h 768650 768649 2026-10-16T22:44:06Z ~2026-55536-16 76248 /* Test */ 3 start 768650 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Cola Bottle and Others. *202 61001, Yellow Bag and Others Current, 202 61001. ($#!+). *202 61002. (Old Car Registrations, Vicroads) ''20261003'' saz5tasvekhoy5l9vjl2g042nwaql8n 768651 768650 2026-10-16T22:44:47Z ~2026-55536-16 76248 /* Test */ 3 done 768651 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Cola Bottle and Others. *202 61001, Yellow Bag and Others Current, 202 61002. ($#!+). *202 61003. (Daylight Saving Time Zones in the World) ''20261004'' f6jwgxlk9xevvr39r39figi4837nosx 768652 768651 2026-10-16T22:45:33Z ~2026-55536-16 76248 /* Test */ 4 start 768652 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Cola Bottle and Others. *202 61001, Yellow Bag and Others. *202 61002, Coathangers or Towels and Others. Current, 202 61002. ($#!+). *202 61003. (Daylight Saving Time Zones in the World) ''20261004'' ajexni6n5bw4lgmy0cwj88hy1by4p9i 768653 768652 2026-10-16T22:46:14Z ~2026-55536-16 76248 /* Test */ 4 done 768653 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Cola Bottle and Others. *202 61001, Yellow Bag and Others. *202 61002, Coathangers or Towels and Others. Current, 202 61003. ($#!+). *202 61004. (Number Stamps (0-9), Counter) ''20261004'' m0pz53tbqwkwdlwwle6whtmhamsjhak 768654 768653 2026-10-16T22:50:18Z ~2026-55536-16 76248 /* Test */ 5 start 768654 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Cola Bottle and Others. *202 61001, Yellow Bag and Others. *202 61002, Coathangers or Towels and Others. *202 61003, Knives, Forks and Others. Current, 202 61003. ($#!+). *202 61004. (Number Stamps (0-9), Counter) ''20261004'' 5ji6c4dr9w87m46q20o7mhkfxv52c76 768655 768654 2026-10-16T22:50:54Z ~2026-55536-16 76248 /* Test */ 5 done 768655 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Cola Bottle and Others. *202 61001, Yellow Bag and Others. *202 61002, Coathangers or Towels and Others. *202 61003, Knives, Forks and Others. Current, 202 61004. ($#!+). *202 61005. (Ausway Maps, Wall Map) ''20261005'' m5bhcl9d34kbugkbfsyr5kv54e8odv4 768656 768655 2026-10-16T22:51:17Z ~2026-55536-16 76248 /* Test */ +1 day 768656 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 9:30, 237 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Cola Bottle and Others. *202 61001, Yellow Bag and Others. *202 61002, Coathangers or Towels and Others. *202 61003, Knives, Forks and Others. Current, 202 61004. ($#!+). *202 61005. (Ausway Maps, Wall Map) ''20261006'' riy6tyq0xksizmum61x7y3waa3jrw8l 768657 768656 2026-10-16T22:51:48Z ~2026-55536-16 76248 /* Test */ Add 5 days 768657 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 10:5, 242 days, (10:1+ to fill out). *10:1, 10:2, 10:3, 10:4, 10:5 (?) *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Cola Bottle and Others. *202 61001, Yellow Bag and Others. *202 61002, Coathangers or Towels and Others. *202 61003, Knives, Forks and Others. Current, 202 61004. ($#!+). *202 61005. (Ausway Maps, Wall Map) ''20261006'' fth5gjgu7gutl6y5oxw4xigm7s731qt 768658 768657 2026-10-16T22:52:20Z ~2026-55536-16 76248 /* Test */ Add 5 more days, Only do this one Fridays and Sundays 768658 wikitext text/x-wiki = Test = 1016 - Up and Down Arrows Candy Crush Saga Wiki: Tasty Sugar Track Edits Is Out Of Control (Mostly 6/23) and until 24 Restriction until no edits made all day, Use Account Sometimes. Up To Date 2:6 — 10:5, 242 days, (10:1+ to fill out). *10:6, 10:7, 10:8, 10:9, 10:10 (?) *10:11 (?) *10:12 (?) *10:13 (?) *10:14 (10:15) ''10:16'' *202 6525, Pot with Fork and Spoon, Bags with Sunglasses. *202 6526, Baskets, Tobacco Stuff or Socks. *202 6527, Food Shopping like Cola Bottles, Cans, Cordial and Others. *202 6528, Socks, Pairs of Shoes, Dressing Gowns. *202 6529, Towels, Cubes with Things. *202 6530, Cloths, Flowers Frisun or Soap. *202 6531, Food Shopping like Party Pies, Waters and Others. *202 6601, Pairs of Boots, Pillow or Podiatrist. *202 6602, Plates or Pans, Grated Cheese or Baskets. *202 6603, Forks, Pans and Other Kitchen Tools. *202 6604, Cups, Cordial Jug or Strawberry Milk. *202 6605, Food Shopping like Cans of Coca Cola, Waters, Cordials or Pile of Sauce. *202 6606, Purses, Lu Papers or Paper Towels. *202 6607, Candles, Statues or Pizza Boxes. *202 6608, Cups, Blankets and Others. *202 6609, Food Shoppibg like Cola Bottles, Sour Cream and Onion Chips or Cans. *202 6610, Towels, Cloths, Soap or Containers. *202 6611, Nachos, Apple N Raspberry Codrial or Stationary. *202 6612, Basket, Electric Bed with Instructions or Paint. *202 6613, Aerobar, Birthday Cake or Packet of Candles. *202 6614, Plates, Blankets or even Vacuum Cleaner. *202 6615, Towels, Cloths or Dressing Gowns. *202 6616, Smiths Chips, Heater Vents, Stuff for Lasagna or Cloths. *202 6617, Pans, Table Spoons or Lids. *202 6618, Food Shopping like Cans of Coca Cola, Waters, Milk and Others. *202 6619, Chocolate Milk, Cups of Tea or Extra Mints. *202 6620, Kitkats, Pens or Domino's Pizza. *202 6621, Blankets and Pillows or Vacuum Cleaner. *202 6622, Tea Towels, Cans of Coca Cola or Carlton Draught. *202 6623, Food Shopping like Bottles of Cola, Waters or New Pyjamas. *202 6624, Staples, Socks, Hats and Others. *202 6625, Kitchen Bowls, Pans and Others. *202 6626, Food Shopping like Colas, Milk or Rainbow Paddlepop. *202 6627, Tablemats, Sunglasses or Garden Plant. *202 6628, Boots, Sleep Medicine or Pillow. *202 6629, Sewing Machine, Tobacco Stuff or Pan. *202 6630, Food Shopping like Cans of Cocacola, Bottles, Kitkat or M&Ms. *202 6701, BBQ Chips, Biskits or Grated Cheese. *202 6702, Lighters, Plates or Cloths. *202 6703, Hot Dogs, Cola Cans or Lasagna. *202 6704, Mop, Battery Packs or Doorhandle. *202 6705, Video Cameras, Internet or McDonalds Bag?. *202 6706, Pans, Freshmint, or Hotdog Roll. *202 6707, Food Shopping like Cans of Coca Cola, Cola Bottles, Waters, Shopping Bag or Grated Cheese. *202 6708, Ktimes, Nutrigrain or Mueslibars. *202 6709, Saladas, Socks, Vegemite or Textures. *202 6710, Baskets, Favourites or Cordial Jug. *202 6711, Shoes like Novo, Vacuum or Carlton Draught. *202 6712, Aldi Stuff like Mints, Airfryer or Towel. *202 6713, Food Shopping like Cola Bottles, Cheese, Milk or Paddle Pops. *202 6714, Baskets, Mask Fresheners or Coat. *202 6715, Towels, Cloths or Lasagna?. *202 6716, Soaps, Toothpastes, Cotton Buds and Others. *202 6717, Cans of Coca Cola, Bottles, Waters, Novo Shoes and Others. *202 6718, Food Shopping like Upngo, Breads or Cans of Coca Cola. *202 6719, Quichebox, Plate or Cup or Cheese Machine. *202 6720, Cups, Milkshakes, Jug or Can of Coca Cola?. *202 6721, Baskets, Coathangers, Chocolate Milk or Frypan?. *202 6722, Food Shopping like Cola Bottles, Waters, Milk or Nachos? *202 6723, Slippers, Blanket Sheets, Clothes Pair and Others. *202 6724, Pans, Plates, Scissors or Tools. *202 6725, Aldi Stuff, Domino's Pizza or Lynxspray. *202 6726, Towels, Lighter or Journal Books. *202 6727, Food Shopping like Bottles of Cola or Water, Cans or Milk. *202 6728, Baskets, Battery Packs or Vaporizer and Others. *202 6729, Sleep Medicines, Deep Heat or Pillows. *202 6730, Schnitzels, Nesquiks, Milos and Others. *202 6731, Toothpicks and Nuts and Others. *202 6801, Food Shopping like Bottles, Cans, Waters and Others. *202 6802, Plates, Bowls or Battery Packs. *202 6803, Towels, Blankets, Purse or Boots. *202 6804, M&M's, Baskets, Cloths or Coathangers. *202 6805, Boots, Leaves, Texture and Others. *202 6806, Food Shopping like Cans of Coca Cola, Nachos, Cheese or Milk. *202 6807, Dressing Gowns, Glasses or Pillows. *202 6808, Grater Cheese, Pizza, Mat or Plate. *202 6809, Stylus, Mask, Soaps and Others. *202 6810, Paper Towels, Staples, Lighter and Others. *202 6811, Baskets, Cans of Coca Cola or Biskit Shapes. *202 6812, Blackngold Cola, Blankets or Chocolatebox. *202 6813, Smiths Chips, Cheese Mozarella or Bread. *202 6814, Textures, Pens or Basket and Others. *202 6815, Smoothies, Toys, Chopping Board or Box. *202 6816, Cups like Gold, Cup of Tea, Metal Bottle and Others. *202 6817, Food Shopping like Water Bottles, Cans of Coca Cola, Cola Bottles or Chocolate Milk. *202 6818, Baskets, Keys or Cordial Jug and Others. *202 6819, Aldi Stuff, Pizza or Pumpsoap. *202 6820, Towels, Blankets Sheets and Others. *202 6821, Cheese, Breads, Waters or Cans of Coca Cola and Others. *202 6822, Sleep Medicone, Quichebox, Towels and Others. *202 6823, Shoes, Hats or Ashtray and Others. *202 6824, Cups, Milk, Towels or some Aldi and Others. *202 6825, Battery Pack, Clothes and Others. *202 6826, Cans of Coca Cola, Lime Cordial, Milk and Others. *202 6827, Blankets, Pillows, Circle Table and Others. *202 6828, Grated Cheese, Scissors, Knifes and Forks and Others. *202 6829, Cans of Coca Cola, Bottles, Waters, Milk and Others. *202 6830, Plates, Stand, Frypans and Others. *202 6831, Metal Things, Water Bottles, Cans of Coca Cola and Others. *202 6901, Aldi Bag with Stuff or Aprons. *202 6902, Food Shopping like Cola Bottles, Cheese with Nachos and Others. *202 6903, Mask Perfumes, Soaps and Others. *202 6904, Baskets, Battery Pack, Pillows or Lasagna and Others *202 6905, Frypans, Lids, Tablemats and Others. *202 6906, Fathers Day Presents, Glasses, Bags and Others. *202 6907, Deep Heat, Scissors, Milo or Container and Others. *202 6908, Baskets, Coathanger, Blankets and Others. *202 6909, Container Biscuit, Pastas or Pans. *202 6910, Food Shopping like Milks, M&Ms, Sauces, Coca Cola Cans and Others. *202 6911, Pillows, Dressing Gowns, Extra Mint and Others. *202 6912, Laundry Stuff like boxes, bags or Dad's Wrist and Others. *202 6913, Grater Stuff, Pans and Others. *202 6914, Bottles of Cola, Breads, Milk to make Chocolate. *202 6915, Iced Coffee, Water Bottles, Baskets and Others. *202 6916, Aldi Bag, Strawberry Mints and Others. *202 6917, Lighters, Plates, Freshener or Spray and Others. *202 6918, New Clothes, Basket, Extra Mint and Others. *202 6919, Face Cloths, Lu Paper, Water and Others. *202 6920, Domino's Pizza, Pillows, Notes and Others. *202 6921, Remotes, Pizza and Barbecue Shapes, Square Pillow and Others. *202 6922, Food Shopping like Waters, Cans of Coca Cola, Cheese, Lasagna and Others. *202 6923, Cloths, Facecloth, New Pot and Others. *202 6924, Aldi Stuff, Glass Cups, Candles and Others. *202 6925, Copy Paper, Glasses, Lasagna Tray Pan and Others. *202 6926, Tax Boxes, Bags, Lighter, Texter and Others. *202 6927, Cans of Coca Cola, Bottles, Cordial and Others. *202 6928, Pairs of Shoes or Slippers, Square Pillow and Others. *202 6929, Big Spoon and Others. *202 6930, Cola Bottle and Others. *202 61001, Yellow Bag and Others. *202 61002, Coathangers or Towels and Others. *202 61003, Knives, Forks and Others. Current, 202 61004. ($#!+). *202 61005. (Ausway Maps, Wall Map) ''20261006'' t2ppe2eajnhnc194dzjs7pw7slz1ttp User:გიო ოქრო/vector.js 2 121018 768626 581144 2026-10-16T18:34:32Z გიო ოქრო 41075 768626 javascript text/javascript /** * Gadget-refToolbar-ka.js * მარტივი სქოლიოების (ციტირების) ინსტრუმენტი ქართული ვიკიპედიისთვის. * ამატებს ღილაკს „ციტირება“ რედაქტირების პანელზე; ფანჯარაში ირჩევ შაბლონის ტიპს, * ავსებ ველებს და კოდი ჩაისმება კურსორის ადგილას როგორც <ref>...</ref>. * * ინსტალაცია: ჩააგდე MediaWiki:Gadget-refToolbar-ka.js-ში * (ან პირადად: Special:MyPage/common.js -> mw.loader.load(...) / პირდაპირ კოდის ჩასმა). */ ( function () { 'use strict'; /* ================= კონფიგურაცია ================= * template – შაბლონის სახელი ქართულ ვიკიში (შეცვალე რეალურზე, თუ განსხვავდება!) * fields – [პარამეტრი, ეტიკეტი, სავალდებულო?, ტიპი] ტიპი: 'date' | 'today' | undefined */ var TYPES = { web: { label: 'ვებგვერდი', template: 'Cite web', fields: [ [ 'url', 'ბმული (URL)', true ], [ 'title', 'სათაური', true ], [ 'website', 'საიტის სახელი' ], [ 'author', 'ავტორი' ], [ 'date', 'თარიღი', false, 'date' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ], [ 'language', 'ენა (კოდი, მაგ. en, ru)' ] ] }, news: { label: 'სიახლე / სტატია პრესაში', template: 'Cite news', fields: [ [ 'url', 'ბმული (URL)' ], [ 'title', 'სათაური', true ], [ 'author', 'ავტორი' ], [ 'work', 'გამოცემა' ], [ 'date', 'თარიღი', false, 'date' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ], [ 'language', 'ენა (კოდი)' ] ] }, book: { label: 'წიგნი', template: 'Cite book', fields: [ [ 'title', 'სათაური', true ], [ 'author', 'ავტორი' ], [ 'publisher', 'გამომცემლობა' ], [ 'location', 'გამოცემის ადგილი' ], [ 'year', 'წელი' ], [ 'isbn', 'ISBN' ], [ 'pages', 'გვერდები' ], [ 'url', 'ბმული (URL)' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ] ] }, journal: { label: 'სამეცნიერო ჟურნალი', template: 'Cite journal', fields: [ [ 'title', 'სტატიის სათაური', true ], [ 'author', 'ავტორი' ], [ 'journal', 'ჟურნალი' ], [ 'year', 'წელი' ], [ 'volume', 'ტომი' ], [ 'issue', 'ნომერი' ], [ 'pages', 'გვერდები' ], [ 'doi', 'DOI' ], [ 'url', 'ბმული (URL)' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ] ] } }; /* ================= დამხმარე ფუნქციები ================= */ function today() { var d = new Date(); var p = function ( n ) { return ( n < 10 ? '0' : '' ) + n; }; return d.getFullYear() + '-' + p( d.getMonth() + 1 ) + '-' + p( d.getDate() ); } function esc( s ) { return String( s ).replace( /&/g, '&amp;' ).replace( /</g, '&lt;' ).replace( /"/g, '&quot;' ); } function $textarea() { return $( '#wpTextbox1' ); } function insert( text ) { $textarea().textSelection( 'encapsulateSelection', { peri: text, replace: true } ); } function buildRef( typeKey, values, refName ) { var t = TYPES[ typeKey ]; var parts = []; t.fields.forEach( function ( f ) { var v = ( values[ f[ 0 ] ] || '' ).trim(); if ( v ) { // "|" შიგნით ბმულებში/ტექსტში შაბლონს არ დაამტვრევს parts.push( '|' + f[ 0 ] + '=' + v.replace( /\|/g, '{{!}}' ) ); } } ); var tpl = '{{' + t.template + ' ' + parts.join( ' ' ) + '}}'; var open = refName ? '<ref name="' + esc( refName ) + '">' : '<ref>'; return open + tpl + '</ref>'; } /* ================= დიალოგი ================= */ function openDialog() { if ( $( '#rtka-overlay' ).length ) { return; } var $overlay = $( '<div id="rtka-overlay">' ).css( { position: 'fixed', inset: 0, background: 'rgba(0,0,0,.45)', zIndex: 1000, display: 'flex', alignItems: 'center', justifyContent: 'center' } ); var $box = $( '<div>' ).css( { background: 'var(--background-color-base, #fff)', color: 'var(--color-base, #202122)', border: '1px solid #a2a9b1', borderRadius: '4px', padding: '16px', width: '460px', maxWidth: '94vw', maxHeight: '90vh', overflowY: 'auto', boxShadow: '0 4px 20px rgba(0,0,0,.3)' } ).appendTo( $overlay ); $( '<h3>' ).text( 'სქოლიოს დამატება' ).css( { margin: '0 0 10px' } ).appendTo( $box ); var $select = $( '<select>' ).css( { width: '100%', marginBottom: '10px' } ); Object.keys( TYPES ).forEach( function ( k ) { $( '<option>' ).val( k ).text( TYPES[ k ].label ).appendTo( $select ); } ); $box.append( $select ); var $fields = $( '<div>' ).appendTo( $box ); var $refName = $( '<input type="text">' ).css( { width: '100%' } ); $( '<label>' ).text( 'ref-ის სახელი (არასავალდებულო, განმეორებითი გამოყენებისთვის)' ) .css( { display: 'block', marginTop: '10px', fontSize: '90%' } ) .append( $refName ).appendTo( $box ); var inputs = {}; function renderFields() { var t = TYPES[ $select.val() ]; $fields.empty(); inputs = {}; t.fields.forEach( function ( f ) { var $inp = $( '<input type="text">' ).css( { width: '100%' } ); if ( f[ 3 ] === 'today' ) { $inp.val( today() ); } if ( f[ 3 ] === 'date' ) { $inp.attr( 'placeholder', 'წწწწ-თთ-დდ' ); } inputs[ f[ 0 ] ] = $inp; $( '<label>' ) .text( f[ 1 ] + ( f[ 2 ] ? ' *' : '' ) ) .css( { display: 'block', marginTop: '6px', fontSize: '90%' } ) .append( $inp ).appendTo( $fields ); } ); var first = Object.keys( inputs )[ 0 ]; if ( first ) { inputs[ first ].trigger( 'focus' ); } } $select.on( 'change', renderFields ); renderFields(); var $btns = $( '<div>' ).css( { marginTop: '14px', textAlign: 'right' } ).appendTo( $box ); function close() { $overlay.remove(); } $( '<button type="button">' ).text( 'გაუქმება' ).css( { marginRight: '8px' } ) .on( 'click', close ).appendTo( $btns ); $( '<button type="button">' ).text( 'ჩასმა' ).css( { fontWeight: 'bold' } ).on( 'click', function () { var key = $select.val(); var values = {}; var missing = false; TYPES[ key ].fields.forEach( function ( f ) { values[ f[ 0 ] ] = inputs[ f[ 0 ] ].val(); if ( f[ 2 ] && !values[ f[ 0 ] ].trim() ) { missing = true; inputs[ f[ 0 ] ].css( 'outline', '2px solid #d33' ); } } ); if ( missing ) { mw.notify( 'შეავსე სავალდებულო ველები (*)', { type: 'warn' } ); return; } insert( buildRef( key, values, $refName.val().trim() ) ); close(); } ).appendTo( $btns ); $overlay.on( 'mousedown', function ( e ) { if ( e.target === $overlay[ 0 ] ) { close(); } } ); $overlay.on( 'keydown', function ( e ) { if ( e.key === 'Escape' ) { close(); } } ); $( document.body ).append( $overlay ); } /* განმეორებითი ref (<ref name="..." />) */ function insertNamedRef() { var name = window.prompt( 'ref-ის სახელი, რომლის გამეორებაც გინდა:' ); if ( name && name.trim() ) { insert( '<ref name="' + esc( name.trim() ) + '" />' ); } } /* ================= პანელში ჩამატება ================= */ var added = false; function addToWikiEditor() { if ( added ) { return; } added = true; $textarea().wikiEditor( 'addToToolbar', { section: 'main', group: 'insert', tools: { refToolbarKa: { label: 'ციტირება', type: 'button', icon: '//upload.wikimedia.org/wikipedia/commons/thumb/3/3a/OOjs_UI_icon_quotes-ltr.svg/22px-OOjs_UI_icon_quotes-ltr.svg.png', action: { type: 'callback', execute: openDialog } }, refToolbarKaReuse: { label: 'ref-ის გამეორება', type: 'button', icon: '//upload.wikimedia.org/wikipedia/commons/thumb/b/b1/OOjs_UI_icon_reference-ltr.svg/22px-OOjs_UI_icon_reference-ltr.svg.png', action: { type: 'callback', execute: insertNamedRef } } } } ); } /* სარეზერვო ვარიანტი: საკუთარი პატარა პანელი ტექსტური ველის თავზე */ function addFallbackBar() { if ( added || $( '#rtka-bar' ).length ) { return; } added = true; var $bar = $( '<div id="rtka-bar">' ).css( { margin: '4px 0' } ); $( '<button type="button">' ).text( 'ციტირება' ).on( 'click', openDialog ).appendTo( $bar ); $( '<button type="button">' ).text( 'ref-ის გამეორება' ).css( { marginLeft: '6px' } ) .on( 'click', insertNamedRef ).appendTo( $bar ); $textarea().before( $bar ); } function init() { if ( !$textarea().length ) { return; } // WikiEditor მზად რომ იქნება mw.hook( 'wikiEditor.toolbarReady' ).add( function ( $ta ) { if ( !$ta || $ta.is( '#wpTextbox1' ) ) { addToWikiEditor(); } } ); // თუ 1.5 წმ-ში WikiEditor არ გამოჩნდა, სარეზერვო პანელი setTimeout( function () { if ( !added ) { if ( $( '#wikiEditor-section-main, .wikiEditor-ui-toolbar' ).length ) { addToWikiEditor(); } else { addFallbackBar(); } } }, 1500 ); } mw.loader.using( [ 'mediawiki.util', 'jquery.textSelection' ] ).then( function () { $( init ); } ); }() ); 2ighyw8ll4dj4q4ur5d6ii8d26etanv 768627 768626 2026-10-16T18:43:43Z გიო ოქრო 41075 768627 javascript text/javascript /** * Gadget-refToolbar-ka.js * მარტივი სქოლიოების (ციტირების) ინსტრუმენტი ქართული ვიკიპედიისთვის. * ამატებს ღილაკს „ციტირება“ რედაქტირების პანელზე; ფანჯარაში ირჩევ შაბლონის ტიპს, * ავსებ ველებს და კოდი ჩაისმება კურსორის ადგილას როგორც <ref>...</ref>. * * ინსტალაცია: ჩააგდე MediaWiki:Gadget-refToolbar-ka.js-ში * (ან პირადად: Special:MyPage/common.js -> mw.loader.load(...) / პირდაპირ კოდის ჩასმა). */ ( function () { 'use strict'; /* ================= კონფიგურაცია ================= * template – შაბლონის სახელი ქართულ ვიკიში (შეცვალე რეალურზე, თუ განსხვავდება!) * fields – [პარამეტრი, ეტიკეტი, სავალდებულო?, ტიპი] ტიპი: 'date' | 'today' | undefined */ var TYPES = { web: { label: 'ვებგვერდი', template: 'Cite web', fields: [ [ 'url', 'ბმული (URL)', true ], [ 'title', 'სათაური', true ], [ 'website', 'საიტის სახელი' ], [ 'author', 'ავტორი' ], [ 'date', 'თარიღი', false, 'date' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ], [ 'language', 'ენა (კოდი, მაგ. en, ru)' ] ] }, news: { label: 'სიახლე / სტატია პრესაში', template: 'Cite news', fields: [ [ 'url', 'ბმული (URL)' ], [ 'title', 'სათაური', true ], [ 'author', 'ავტორი' ], [ 'work', 'გამოცემა' ], [ 'date', 'თარიღი', false, 'date' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ], [ 'language', 'ენა (კოდი)' ] ] }, book: { label: 'წიგნი', template: 'Cite book', fields: [ [ 'title', 'სათაური', true ], [ 'author', 'ავტორი' ], [ 'publisher', 'გამომცემლობა' ], [ 'location', 'გამოცემის ადგილი' ], [ 'year', 'წელი' ], [ 'isbn', 'ISBN' ], [ 'pages', 'გვერდები' ], [ 'url', 'ბმული (URL)' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ] ] }, journal: { label: 'სამეცნიერო ჟურნალი', template: 'Cite journal', fields: [ [ 'title', 'სტატიის სათაური', true ], [ 'author', 'ავტორი' ], [ 'journal', 'ჟურნალი' ], [ 'year', 'წელი' ], [ 'volume', 'ტომი' ], [ 'issue', 'ნომერი' ], [ 'pages', 'გვერდები' ], [ 'doi', 'DOI' ], [ 'url', 'ბმული (URL)' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ] ] } }; /* ================= დამხმარე ფუნქციები ================= */ function today() { var d = new Date(); var p = function ( n ) { return ( n < 10 ? '0' : '' ) + n; }; return d.getFullYear() + '-' + p( d.getMonth() + 1 ) + '-' + p( d.getDate() ); } function esc( s ) { return String( s ).replace( /&/g, '&amp;' ).replace( /</g, '&lt;' ).replace( /"/g, '&quot;' ); } function $textarea() { return $( '#wpTextbox1' ); } function insert( text ) { $textarea().textSelection( 'encapsulateSelection', { peri: text, replace: true } ); } function buildRef( typeKey, values, refName ) { var t = TYPES[ typeKey ]; var parts = []; t.fields.forEach( function ( f ) { var v = ( values[ f[ 0 ] ] || '' ).trim(); if ( v ) { // "|" შიგნით ბმულებში/ტექსტში შაბლონს არ დაამტვრევს parts.push( '|' + f[ 0 ] + '=' + v.replace( /\|/g, '{{!}}' ) ); } } ); var tpl = '{{' + t.template + ' ' + parts.join( ' ' ) + '}}'; var open = refName ? '<ref name="' + esc( refName ) + '">' : '<ref>'; return open + tpl + '</ref>'; } /* ================= დიალოგი ================= */ function openDialog() { if ( $( '#rtka-overlay' ).length ) { return; } var $overlay = $( '<div id="rtka-overlay">' ).css( { position: 'fixed', inset: 0, background: 'rgba(0,0,0,.45)', zIndex: 1000, display: 'flex', alignItems: 'center', justifyContent: 'center' } ); var $box = $( '<div>' ).css( { background: 'var(--background-color-base, #fff)', color: 'var(--color-base, #202122)', border: '1px solid #a2a9b1', borderRadius: '4px', padding: '16px', width: '460px', maxWidth: '94vw', maxHeight: '90vh', overflowY: 'auto', boxShadow: '0 4px 20px rgba(0,0,0,.3)' } ).appendTo( $overlay ); $( '<h3>' ).text( 'სქოლიოს დამატება' ).css( { margin: '0 0 10px' } ).appendTo( $box ); var currentType = Object.keys( TYPES )[ 0 ]; var $tabs = $( '<div>' ).css( { marginBottom: '10px' } ).appendTo( $box ); var tabButtons = {}; Object.keys( TYPES ).forEach( function ( k ) { tabButtons[ k ] = $( '<button type="button">' ).text( TYPES[ k ].label ) .css( { marginRight: '4px', marginBottom: '4px' } ) .on( 'click', function () { currentType = k; renderFields(); } ) .appendTo( $tabs ); } ); var $fields = $( '<div>' ).appendTo( $box ); var $refName = $( '<input type="text">' ).css( { width: '100%' } ); $( '<label>' ).text( 'ref-ის სახელი (არასავალდებულო, განმეორებითი გამოყენებისთვის)' ) .css( { display: 'block', marginTop: '10px', fontSize: '90%' } ) .append( $refName ).appendTo( $box ); var inputs = {}; function renderFields() { var t = TYPES[ currentType ]; Object.keys( tabButtons ).forEach( function ( k ) { tabButtons[ k ].css( 'font-weight', k === currentType ? 'bold' : 'normal' ); } ); $fields.empty(); inputs = {}; t.fields.forEach( function ( f ) { var $inp = $( '<input type="text">' ).css( { width: '100%' } ); if ( f[ 3 ] === 'today' ) { $inp.val( today() ); } if ( f[ 3 ] === 'date' ) { $inp.attr( 'placeholder', 'წწწწ-თთ-დდ' ); } inputs[ f[ 0 ] ] = $inp; $( '<label>' ) .text( f[ 1 ] + ( f[ 2 ] ? ' *' : '' ) ) .css( { display: 'block', marginTop: '6px', fontSize: '90%' } ) .append( $inp ).appendTo( $fields ); } ); var first = Object.keys( inputs )[ 0 ]; if ( first ) { inputs[ first ].trigger( 'focus' ); } } renderFields(); var $btns = $( '<div>' ).css( { marginTop: '14px', textAlign: 'right' } ).appendTo( $box ); function close() { $overlay.remove(); } $( '<button type="button">' ).text( 'გაუქმება' ).css( { marginRight: '8px' } ) .on( 'click', close ).appendTo( $btns ); $( '<button type="button">' ).text( 'ჩასმა' ).css( { fontWeight: 'bold' } ).on( 'click', function () { var key = currentType; var values = {}; var missing = false; TYPES[ key ].fields.forEach( function ( f ) { values[ f[ 0 ] ] = inputs[ f[ 0 ] ].val(); if ( f[ 2 ] && !values[ f[ 0 ] ].trim() ) { missing = true; inputs[ f[ 0 ] ].css( 'outline', '2px solid #d33' ); } } ); if ( missing ) { mw.notify( 'შეავსე სავალდებულო ველები (*)', { type: 'warn' } ); return; } insert( buildRef( key, values, $refName.val().trim() ) ); close(); } ).appendTo( $btns ); $overlay.on( 'mousedown', function ( e ) { if ( e.target === $overlay[ 0 ] ) { close(); } } ); $overlay.on( 'keydown', function ( e ) { if ( e.key === 'Escape' ) { close(); } } ); $( document.body ).append( $overlay ); } /* განმეორებითი ref (<ref name="..." />) */ function insertNamedRef() { var name = window.prompt( 'ref-ის სახელი, რომლის გამეორებაც გინდა:' ); if ( name && name.trim() ) { insert( '<ref name="' + esc( name.trim() ) + '" />' ); } } /* ================= პანელში ჩამატება ================= */ var added = false; function addToWikiEditor() { if ( added ) { return; } added = true; $textarea().wikiEditor( 'addToToolbar', { section: 'main', group: 'insert', tools: { refToolbarKa: { label: 'ციტირება', type: 'button', icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 20 20'%3E%3Cpath fill='%2336c' d='M4 2h9l4 4v12H4z'/%3E%3Cpath fill='%23fff' d='M6 9h8v1H6zm0 3h8v1H6zm0 3h5v1H6z'/%3E%3C/svg%3E", action: { type: 'callback', execute: openDialog } }, refToolbarKaReuse: { label: 'ref-ის გამეორება', type: 'button', icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 20 20'%3E%3Ccircle cx='10' cy='10' r='8' fill='%2336c'/%3E%3Cpath fill='%23fff' d='M5 8h10v1.5H5zm0 3h10v1.5H5z'/%3E%3C/svg%3E", action: { type: 'callback', execute: insertNamedRef } } } } ); } /* სარეზერვო ვარიანტი: საკუთარი პატარა პანელი ტექსტური ველის თავზე */ function addFallbackBar() { if ( added || $( '#rtka-bar' ).length ) { return; } added = true; var $bar = $( '<div id="rtka-bar">' ).css( { margin: '4px 0' } ); $( '<button type="button">' ).text( 'ციტირება' ).on( 'click', openDialog ).appendTo( $bar ); $( '<button type="button">' ).text( 'ref-ის გამეორება' ).css( { marginLeft: '6px' } ) .on( 'click', insertNamedRef ).appendTo( $bar ); $textarea().before( $bar ); } function init() { if ( !$textarea().length ) { return; } // WikiEditor მზად რომ იქნება mw.hook( 'wikiEditor.toolbarReady' ).add( function ( $ta ) { if ( !$ta || $ta.is( '#wpTextbox1' ) ) { addToWikiEditor(); } } ); // თუ 1.5 წმ-ში WikiEditor არ გამოჩნდა, სარეზერვო პანელი setTimeout( function () { if ( !added ) { if ( $( '#wikiEditor-section-main, .wikiEditor-ui-toolbar' ).length ) { addToWikiEditor(); } else { addFallbackBar(); } } }, 1500 ); } mw.loader.using( [ 'mediawiki.util', 'jquery.textSelection' ] ).then( function () { $( init ); } ); }() ); 4a6lg7bcypov4gdod3fhpt5csrgx8hr 768628 768627 2026-10-16T18:45:14Z გიო ოქრო 41075 768628 javascript text/javascript /** * Gadget-refToolbar-ka.js * მარტივი სქოლიოების (ციტირების) ინსტრუმენტი ქართული ვიკიპედიისთვის. * ამატებს ღილაკს „ციტირება“ რედაქტირების პანელზე; ფანჯარაში ირჩევ შაბლონის ტიპს, * ავსებ ველებს და კოდი ჩაისმება კურსორის ადგილას როგორც <ref>...</ref>. * * ინსტალაცია: ჩააგდე MediaWiki:Gadget-refToolbar-ka.js-ში * (ან პირადად: Special:MyPage/common.js -> mw.loader.load(...) / პირდაპირ კოდის ჩასმა). */ ( function () { 'use strict'; console.log( '[refToolbar-ka] სკრიპტი ჩაიტვირთა' ); /* ================= კონფიგურაცია ================= * template – შაბლონის სახელი ქართულ ვიკიში (შეცვალე რეალურზე, თუ განსხვავდება!) * fields – [პარამეტრი, ეტიკეტი, სავალდებულო?, ტიპი] ტიპი: 'date' | 'today' | undefined */ var TYPES = { web: { label: 'ვებგვერდი', template: 'Cite web', fields: [ [ 'url', 'ბმული (URL)', true ], [ 'title', 'სათაური', true ], [ 'website', 'საიტის სახელი' ], [ 'author', 'ავტორი' ], [ 'date', 'თარიღი', false, 'date' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ], [ 'language', 'ენა (კოდი, მაგ. en, ru)' ] ] }, news: { label: 'სიახლე / სტატია პრესაში', template: 'Cite news', fields: [ [ 'url', 'ბმული (URL)' ], [ 'title', 'სათაური', true ], [ 'author', 'ავტორი' ], [ 'work', 'გამოცემა' ], [ 'date', 'თარიღი', false, 'date' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ], [ 'language', 'ენა (კოდი)' ] ] }, book: { label: 'წიგნი', template: 'Cite book', fields: [ [ 'title', 'სათაური', true ], [ 'author', 'ავტორი' ], [ 'publisher', 'გამომცემლობა' ], [ 'location', 'გამოცემის ადგილი' ], [ 'year', 'წელი' ], [ 'isbn', 'ISBN' ], [ 'pages', 'გვერდები' ], [ 'url', 'ბმული (URL)' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ] ] }, journal: { label: 'სამეცნიერო ჟურნალი', template: 'Cite journal', fields: [ [ 'title', 'სტატიის სათაური', true ], [ 'author', 'ავტორი' ], [ 'journal', 'ჟურნალი' ], [ 'year', 'წელი' ], [ 'volume', 'ტომი' ], [ 'issue', 'ნომერი' ], [ 'pages', 'გვერდები' ], [ 'doi', 'DOI' ], [ 'url', 'ბმული (URL)' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ] ] } }; /* ================= დამხმარე ფუნქციები ================= */ function today() { var d = new Date(); var p = function ( n ) { return ( n < 10 ? '0' : '' ) + n; }; return d.getFullYear() + '-' + p( d.getMonth() + 1 ) + '-' + p( d.getDate() ); } function esc( s ) { return String( s ).replace( /&/g, '&amp;' ).replace( /</g, '&lt;' ).replace( /"/g, '&quot;' ); } function $textarea() { return $( '#wpTextbox1' ); } function insert( text ) { $textarea().textSelection( 'encapsulateSelection', { peri: text, replace: true } ); } function buildRef( typeKey, values, refName ) { var t = TYPES[ typeKey ]; var parts = []; t.fields.forEach( function ( f ) { var v = ( values[ f[ 0 ] ] || '' ).trim(); if ( v ) { // "|" შიგნით ბმულებში/ტექსტში შაბლონს არ დაამტვრევს parts.push( '|' + f[ 0 ] + '=' + v.replace( /\|/g, '{{!}}' ) ); } } ); var tpl = '{{' + t.template + ' ' + parts.join( ' ' ) + '}}'; var open = refName ? '<ref name="' + esc( refName ) + '">' : '<ref>'; return open + tpl + '</ref>'; } /* ================= დიალოგი ================= */ function openDialog() { if ( $( '#rtka-overlay' ).length ) { return; } var $overlay = $( '<div id="rtka-overlay">' ).css( { position: 'fixed', inset: 0, background: 'rgba(0,0,0,.45)', zIndex: 1000, display: 'flex', alignItems: 'center', justifyContent: 'center' } ); var $box = $( '<div>' ).css( { background: 'var(--background-color-base, #fff)', color: 'var(--color-base, #202122)', border: '1px solid #a2a9b1', borderRadius: '4px', padding: '16px', width: '460px', maxWidth: '94vw', maxHeight: '90vh', overflowY: 'auto', boxShadow: '0 4px 20px rgba(0,0,0,.3)' } ).appendTo( $overlay ); $( '<h3>' ).text( 'სქოლიოს დამატება' ).css( { margin: '0 0 10px' } ).appendTo( $box ); var currentType = Object.keys( TYPES )[ 0 ]; var $tabs = $( '<div>' ).css( { marginBottom: '10px' } ).appendTo( $box ); var tabButtons = {}; Object.keys( TYPES ).forEach( function ( k ) { tabButtons[ k ] = $( '<button type="button">' ).text( TYPES[ k ].label ) .css( { marginRight: '4px', marginBottom: '4px' } ) .on( 'click', function () { currentType = k; renderFields(); } ) .appendTo( $tabs ); } ); var $fields = $( '<div>' ).appendTo( $box ); var $refName = $( '<input type="text">' ).css( { width: '100%' } ); $( '<label>' ).text( 'ref-ის სახელი (არასავალდებულო, განმეორებითი გამოყენებისთვის)' ) .css( { display: 'block', marginTop: '10px', fontSize: '90%' } ) .append( $refName ).appendTo( $box ); var inputs = {}; function renderFields() { var t = TYPES[ currentType ]; Object.keys( tabButtons ).forEach( function ( k ) { tabButtons[ k ].css( 'font-weight', k === currentType ? 'bold' : 'normal' ); } ); $fields.empty(); inputs = {}; t.fields.forEach( function ( f ) { var $inp = $( '<input type="text">' ).css( { width: '100%' } ); if ( f[ 3 ] === 'today' ) { $inp.val( today() ); } if ( f[ 3 ] === 'date' ) { $inp.attr( 'placeholder', 'წწწწ-თთ-დდ' ); } inputs[ f[ 0 ] ] = $inp; $( '<label>' ) .text( f[ 1 ] + ( f[ 2 ] ? ' *' : '' ) ) .css( { display: 'block', marginTop: '6px', fontSize: '90%' } ) .append( $inp ).appendTo( $fields ); } ); var first = Object.keys( inputs )[ 0 ]; if ( first ) { inputs[ first ].trigger( 'focus' ); } } renderFields(); var $btns = $( '<div>' ).css( { marginTop: '14px', textAlign: 'right' } ).appendTo( $box ); function close() { $overlay.remove(); } $( '<button type="button">' ).text( 'გაუქმება' ).css( { marginRight: '8px' } ) .on( 'click', close ).appendTo( $btns ); $( '<button type="button">' ).text( 'ჩასმა' ).css( { fontWeight: 'bold' } ).on( 'click', function () { var key = currentType; var values = {}; var missing = false; TYPES[ key ].fields.forEach( function ( f ) { values[ f[ 0 ] ] = inputs[ f[ 0 ] ].val(); if ( f[ 2 ] && !values[ f[ 0 ] ].trim() ) { missing = true; inputs[ f[ 0 ] ].css( 'outline', '2px solid #d33' ); } } ); if ( missing ) { mw.notify( 'შეავსე სავალდებულო ველები (*)', { type: 'warn' } ); return; } insert( buildRef( key, values, $refName.val().trim() ) ); close(); } ).appendTo( $btns ); $overlay.on( 'mousedown', function ( e ) { if ( e.target === $overlay[ 0 ] ) { close(); } } ); $overlay.on( 'keydown', function ( e ) { if ( e.key === 'Escape' ) { close(); } } ); $( document.body ).append( $overlay ); } /* განმეორებითი ref (<ref name="..." />) */ function insertNamedRef() { var name = window.prompt( 'ref-ის სახელი, რომლის გამეორებაც გინდა:' ); if ( name && name.trim() ) { insert( '<ref name="' + esc( name.trim() ) + '" />' ); } } /* ================= პანელში ჩამატება ================= */ var added = false; function addToWikiEditor() { if ( added ) { return; } try { if ( !$.fn.wikiEditor ) { throw new Error( 'wikiEditor არ არის ჩატვირთული' ); } added = true; addTools(); console.log( '[refToolbar-ka] ღილაკები დაემატა WikiEditor-ში' ); } catch ( e ) { added = false; console.error( '[refToolbar-ka] WikiEditor-ში დამატება ვერ მოხერხდა:', e ); addFallbackBar(); } } function addTools() { $textarea().wikiEditor( 'addToToolbar', { section: 'main', group: 'insert', tools: { refToolbarKa: { label: 'ციტირება', type: 'button', icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 20 20'%3E%3Cpath fill='%2336c' d='M4 2h9l4 4v12H4z'/%3E%3Cpath fill='%23fff' d='M6 9h8v1H6zm0 3h8v1H6zm0 3h5v1H6z'/%3E%3C/svg%3E", action: { type: 'callback', execute: openDialog } }, refToolbarKaReuse: { label: 'ref-ის გამეორება', type: 'button', icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 20 20'%3E%3Ccircle cx='10' cy='10' r='8' fill='%2336c'/%3E%3Cpath fill='%23fff' d='M5 8h10v1.5H5zm0 3h10v1.5H5z'/%3E%3C/svg%3E", action: { type: 'callback', execute: insertNamedRef } } } } ); } /* სარეზერვო ვარიანტი: საკუთარი პატარა პანელი ტექსტური ველის თავზე */ function addFallbackBar() { if ( added || $( '#rtka-bar' ).length ) { return; } added = true; var $bar = $( '<div id="rtka-bar">' ).css( { margin: '4px 0' } ); $( '<button type="button">' ).text( 'ციტირება' ).on( 'click', openDialog ).appendTo( $bar ); $( '<button type="button">' ).text( 'ref-ის გამეორება' ).css( { marginLeft: '6px' } ) .on( 'click', insertNamedRef ).appendTo( $bar ); var $ui = $( '.wikiEditor-ui' ).first(); if ( $ui.length ) { $ui.before( $bar ); } else { $textarea().before( $bar ); } console.log( '[refToolbar-ka] ჩაირთო სარეზერვო ზოლი' ); } function init() { if ( !$textarea().length ) { return; } // WikiEditor მზად რომ იქნება mw.hook( 'wikiEditor.toolbarReady' ).add( function ( $ta ) { if ( !$ta || $ta.is( '#wpTextbox1' ) ) { addToWikiEditor(); } } ); // თუ 1.5 წმ-ში WikiEditor არ გამოჩნდა, სარეზერვო პანელი setTimeout( function () { if ( !added ) { if ( $( '#wikiEditor-section-main, .wikiEditor-ui-toolbar' ).length ) { addToWikiEditor(); } else { addFallbackBar(); } } }, 1500 ); } mw.loader.using( [ 'mediawiki.util', 'jquery.textSelection' ] ).then( function () { $( init ); } ); }() ); 8z2j4jv5irh1x07oxmnjujchcbow3uf 768629 768628 2026-10-16T18:48:56Z გიო ოქრო 41075 768629 javascript text/javascript /** * Gadget-refToolbar-ka.js * მარტივი სქოლიოების (ციტირების) ინსტრუმენტი ქართული ვიკიპედიისთვის. * ამატებს ღილაკს „ციტირება“ რედაქტირების პანელზე; ფანჯარაში ირჩევ შაბლონის ტიპს, * ავსებ ველებს და კოდი ჩაისმება კურსორის ადგილას როგორც <ref>...</ref>. * * ინსტალაცია: ჩააგდე MediaWiki:Gadget-refToolbar-ka.js-ში * (ან პირადად: Special:MyPage/common.js -> mw.loader.load(...) / პირდაპირ კოდის ჩასმა). */ ( function () { 'use strict'; console.log( '[refToolbar-ka] სკრიპტი ჩაიტვირთა' ); /* ================= კონფიგურაცია ================= * template – შაბლონის სახელი ქართულ ვიკიში (შეცვალე რეალურზე, თუ განსხვავდება!) * fields – [პარამეტრი, ეტიკეტი, სავალდებულო?, ტიპი] ტიპი: 'date' | 'today' | undefined */ var TYPES = { web: { label: 'ვებგვერდი', template: 'Cite web', fields: [ [ 'url', 'ბმული (URL)', true ], [ 'title', 'სათაური', true ], [ 'website', 'საიტის სახელი' ], [ 'author', 'ავტორი' ], [ 'date', 'თარიღი', false, 'date' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ], [ 'language', 'ენა (კოდი, მაგ. en, ru)' ] ] }, news: { label: 'სიახლე / სტატია პრესაში', template: 'Cite news', fields: [ [ 'url', 'ბმული (URL)' ], [ 'title', 'სათაური', true ], [ 'author', 'ავტორი' ], [ 'work', 'გამოცემა' ], [ 'date', 'თარიღი', false, 'date' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ], [ 'language', 'ენა (კოდი)' ] ] }, book: { label: 'წიგნი', template: 'Cite book', fields: [ [ 'title', 'სათაური', true ], [ 'author', 'ავტორი' ], [ 'publisher', 'გამომცემლობა' ], [ 'location', 'გამოცემის ადგილი' ], [ 'year', 'წელი' ], [ 'isbn', 'ISBN' ], [ 'pages', 'გვერდები' ], [ 'url', 'ბმული (URL)' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ] ] }, journal: { label: 'სამეცნიერო ჟურნალი', template: 'Cite journal', fields: [ [ 'title', 'სტატიის სათაური', true ], [ 'author', 'ავტორი' ], [ 'journal', 'ჟურნალი' ], [ 'year', 'წელი' ], [ 'volume', 'ტომი' ], [ 'issue', 'ნომერი' ], [ 'pages', 'გვერდები' ], [ 'doi', 'DOI' ], [ 'url', 'ბმული (URL)' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ] ] } }; /* ================= დამხმარე ფუნქციები ================= */ function today() { var d = new Date(); var p = function ( n ) { return ( n < 10 ? '0' : '' ) + n; }; return d.getFullYear() + '-' + p( d.getMonth() + 1 ) + '-' + p( d.getDate() ); } function esc( s ) { return String( s ).replace( /&/g, '&amp;' ).replace( /</g, '&lt;' ).replace( /"/g, '&quot;' ); } function $textarea() { return $( '#wpTextbox1' ); } function insert( text ) { $textarea().textSelection( 'encapsulateSelection', { peri: text, replace: true } ); } function buildRef( typeKey, values, refName ) { var t = TYPES[ typeKey ]; var parts = []; t.fields.forEach( function ( f ) { var v = ( values[ f[ 0 ] ] || '' ).trim(); if ( v ) { // "|" შიგნით ბმულებში/ტექსტში შაბლონს არ დაამტვრევს parts.push( '|' + f[ 0 ] + '=' + v.replace( /\|/g, '{{!}}' ) ); } } ); var tpl = '{{' + t.template + ' ' + parts.join( ' ' ) + '}}'; var open = refName ? '<ref name="' + esc( refName ) + '">' : '<ref>'; return open + tpl + '</ref>'; } /* ================= დიალოგი ================= */ function openDialog() { if ( $( '#rtka-overlay' ).length ) { return; } var $overlay = $( '<div id="rtka-overlay">' ).css( { position: 'fixed', inset: 0, background: 'rgba(0,0,0,.45)', zIndex: 1000, display: 'flex', alignItems: 'center', justifyContent: 'center' } ); var $box = $( '<div>' ).css( { background: 'var(--background-color-base, #fff)', color: 'var(--color-base, #202122)', border: '1px solid #a2a9b1', borderRadius: '4px', padding: '16px', width: '460px', maxWidth: '94vw', maxHeight: '90vh', overflowY: 'auto', boxShadow: '0 4px 20px rgba(0,0,0,.3)' } ).appendTo( $overlay ); $( '<h3>' ).text( 'სქოლიოს დამატება' ).css( { margin: '0 0 10px' } ).appendTo( $box ); var currentType = Object.keys( TYPES )[ 0 ]; var $tabs = $( '<div>' ).css( { marginBottom: '10px' } ).appendTo( $box ); var tabButtons = {}; Object.keys( TYPES ).forEach( function ( k ) { tabButtons[ k ] = $( '<button type="button">' ).text( TYPES[ k ].label ) .css( { marginRight: '4px', marginBottom: '4px' } ) .on( 'click', function () { currentType = k; renderFields(); } ) .appendTo( $tabs ); } ); var $fields = $( '<div>' ).appendTo( $box ); var $refName = $( '<input type="text">' ).css( { width: '100%' } ); $( '<label>' ).text( 'ref-ის სახელი (არასავალდებულო, განმეორებითი გამოყენებისთვის)' ) .css( { display: 'block', marginTop: '10px', fontSize: '90%' } ) .append( $refName ).appendTo( $box ); var inputs = {}; function renderFields() { var t = TYPES[ currentType ]; Object.keys( tabButtons ).forEach( function ( k ) { tabButtons[ k ].css( 'font-weight', k === currentType ? 'bold' : 'normal' ); } ); $fields.empty(); inputs = {}; t.fields.forEach( function ( f ) { var $inp = $( '<input type="text">' ).css( { width: '100%' } ); if ( f[ 3 ] === 'today' ) { $inp.val( today() ); } if ( f[ 3 ] === 'date' ) { $inp.attr( 'placeholder', 'წწწწ-თთ-დდ' ); } inputs[ f[ 0 ] ] = $inp; $( '<label>' ) .text( f[ 1 ] + ( f[ 2 ] ? ' *' : '' ) ) .css( { display: 'block', marginTop: '6px', fontSize: '90%' } ) .append( $inp ).appendTo( $fields ); } ); var first = Object.keys( inputs )[ 0 ]; if ( first ) { inputs[ first ].trigger( 'focus' ); } } renderFields(); var $btns = $( '<div>' ).css( { marginTop: '14px', textAlign: 'right' } ).appendTo( $box ); function close() { $overlay.remove(); } $( '<button type="button">' ).text( 'გაუქმება' ).css( { marginRight: '8px' } ) .on( 'click', close ).appendTo( $btns ); $( '<button type="button">' ).text( 'ჩასმა' ).css( { fontWeight: 'bold' } ).on( 'click', function () { var key = currentType; var values = {}; var missing = false; TYPES[ key ].fields.forEach( function ( f ) { values[ f[ 0 ] ] = inputs[ f[ 0 ] ].val(); if ( f[ 2 ] && !values[ f[ 0 ] ].trim() ) { missing = true; inputs[ f[ 0 ] ].css( 'outline', '2px solid #d33' ); } } ); if ( missing ) { mw.notify( 'შეავსე სავალდებულო ველები (*)', { type: 'warn' } ); return; } insert( buildRef( key, values, $refName.val().trim() ) ); close(); } ).appendTo( $btns ); $overlay.on( 'mousedown', function ( e ) { if ( e.target === $overlay[ 0 ] ) { close(); } } ); $overlay.on( 'keydown', function ( e ) { if ( e.key === 'Escape' ) { close(); } } ); $( document.body ).append( $overlay ); } /* განმეორებითი ref (<ref name="..." />) */ function insertNamedRef() { var name = window.prompt( 'ref-ის სახელი, რომლის გამეორებაც გინდა:' ); if ( name && name.trim() ) { insert( '<ref name="' + esc( name.trim() ) + '" />' ); } } /* ================= პანელში ჩამატება ================= */ var toolbarAdded = false; function addTools() { $textarea().wikiEditor( 'addToToolbar', { section: 'main', group: 'insert', tools: { refToolbarKa: { label: 'ციტირება', type: 'button', icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 20 20'%3E%3Cpath fill='%2336c' d='M4 2h9l4 4v12H4z'/%3E%3Cpath fill='%23fff' d='M6 9h8v1H6zm0 3h8v1H6zm0 3h5v1H6z'/%3E%3C/svg%3E", action: { type: 'callback', execute: openDialog } }, refToolbarKaReuse: { label: 'ref-ის გამეორება', type: 'button', icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 20 20'%3E%3Ccircle cx='10' cy='10' r='8' fill='%2336c'/%3E%3Cpath fill='%23fff' d='M5 8h10v1.5H5zm0 3h10v1.5H5z'/%3E%3C/svg%3E", action: { type: 'callback', execute: insertNamedRef } } } } ); } /* ყოველთვის ხილული ღილაკების ზოლი – არ არის დამოკიდებული WikiEditor-ზე */ function addBar() { if ( $( '#rtka-bar' ).length ) { return; } var $bar = $( '<div id="rtka-bar">' ).css( { margin: '4px 0' } ); $( '<button type="button">' ).text( 'ციტირება' ).on( 'click', openDialog ).appendTo( $bar ); $( '<button type="button">' ).text( 'ref-ის გამეორება' ).css( { marginLeft: '6px' } ) .on( 'click', insertNamedRef ).appendTo( $bar ); $textarea().before( $bar ); console.log( '[refToolbar-ka] ზოლი დაემატა' ); } function tryWikiEditor() { if ( toolbarAdded ) { return; } if ( !$.fn.wikiEditor ) { console.log( '[refToolbar-ka] $.fn.wikiEditor არ არის – ვრჩები ზოლზე' ); return; } try { addTools(); // ზოლს ვშლით მხოლოდ თუ ღილაკი რეალურად გამოჩნდა პანელში setTimeout( function () { if ( $( '.tool[rel="refToolbarKa"]' ).length ) { toolbarAdded = true; $( '#rtka-bar' ).remove(); console.log( '[refToolbar-ka] ღილაკები დაემატა WikiEditor-ში' ); } else { console.log( '[refToolbar-ka] WikiEditor-ში ღილაკი ვერ გამოჩნდა – ვრჩები ზოლზე' ); } }, 500 ); } catch ( e ) { console.error( '[refToolbar-ka] WikiEditor-ში დამატება ვერ მოხერხდა:', e ); } } function init() { if ( !$textarea().length ) { console.log( '[refToolbar-ka] #wpTextbox1 ვერ მოიძებნა' ); return; } addBar(); // ბმული ხელსაწყოების მენიუში var link = mw.util.addPortletLink( 'p-tb', '#', 'ციტირება (სქოლიო)', 't-refka' ); if ( link ) { $( link ).on( 'click', function ( e ) { e.preventDefault(); openDialog(); } ); } mw.hook( 'wikiEditor.toolbarReady' ).add( tryWikiEditor ); setTimeout( tryWikiEditor, 2000 ); } mw.loader.using( [ 'mediawiki.util', 'jquery.textSelection' ] ).then( function () { $( init ); } ); }() ); t5rj30jwis5mg14kr6htq83mwbm8voz User:SongVĩ.Bot II 2 124239 768617 768498 2026-10-16T17:00:22Z SongVĩ.Bot II 52414 [[User:SongVĩ.Bot II|Task 0]]: Đã 1754 ngày... 768617 wikitext text/x-wiki Cập nhật lần cuối: 17-10-2026 Đã 1754 ngày... jocf3zizlopb4gtzp3rdztgwf5ml077 User:নকীব বট/Test/Mni/তী 2 154495 768591 588315 2026-10-16T13:02:59Z CommonsDelinker 629 Removing "Masturbate_001.gif", it has been deleted from Commons by [[c:User:Krd|Krd]] because: per [[:c:Commons:Deletion requests/File:Masturbate 001.gif|]]. 768591 wikitext text/x-wiki [[ফাইল্:Male_pelvic_structures.svg|thumb]] '''তী (হুক্সাং কয়াৎ)''' ({{lang-en|penis}}) অসী [[নুপা]] (লাব) গী মপান্ থোক্পা ({{lang-en|urination}}) অমদী [[ফম্পী চৎপ]] ({{lang-en|[[ফম্পী চৎপ|ejaculation]]}})দা সীজীন্নবা [[চাপোক্ কয়াৎ]] ({{lang-en|[[চাপোক্ কয়াৎ|sex organ]]}}) অমনী । ফম্পী চৎপা অসী [[থু নাব]] ({{lang-en|[[থু নাব|sexual intercourse]]}}), [[থুন্দা নাব]] ({{lang-en|[[থুন্দা নাব|anal sex]]}}), [[নাবী সান্নব]] ({{lang-en|[[নাবী সান্নব|masturbation]]}}) নৎত্রগা [[অচোৎপা মং]] ({{lang-en|[[অচোৎপা মং|nocturnal emission]]}})দগী থোক্ই । ==মীওইবগী কয়াৎ== {{See also|ফম্পী চৎপ}} [[ফাইল্:Erected human penis ..2.JPG|thumb]] [[ফাইল্:Ejaculation ..JPG|thumb]] [[ফাইল্:Meni.jpg|thumb]] [[ফাইল্:Ventral and Dorsal View of Penis.jpg|thumb]] [[ফাইল্:Erection Development V2.jpg|thumb]] ==মীরেল্== ===এনাতোমী=== <gallery> Human body features EN.svg Illu repdt male erect.jpg Anatomy of the human penis.jpg Diagram of circumcised penis.png HQ SAM F ml.jpg|[[:Image:HQ SAM F ml.jpg|Human genitalia with pubic hair]] HQ SAM F2 ml.jpg|[[:Image:HQ SAM F2 ml.jpg|Shaved human genitalia]] Human_penis_with_labels.jpg|[[:Image:Human_penis_with_labels.jpg|Human penis]] </gallery> === তুক্থবা নৎত্রগা তীংখৎতবা তী === <gallery> ফাইল্:HQ SAM F.jpg|[[ফাইল্:아헤가오 남성.jpg|thumb]][[:Image:HQ SAM F.jpg|Uncircumsized flaccid human penis]] ফাইল্:Male genitals.jpg|[[:Image:Male genitals.jpg|Flaccid penis with asymmetrical testicles]] ফাইল্:Stage I.JPG|[[:Image:Stage I.JPG|Circumcised penis relaxed or pre-erection]] ফাইল্:Human penis flaccid.jpg|[[:Image:Human penis flaccid.jpg|Human penis flaccid]] ফাইল্:Uncircumcised shaved penis.jpg|[[:Image:Uncircumcised shaved penis.jpg|Shaved uncircumcised flaccid penis]] ফাইল্:Permanently retracted foreskin.jpg|[[:Image:Permanently retracted foreskin.jpg|Permanently retracted forskin and superficial dorsal vein of the uncircumcised penis]] ফাইল্:Human penis and scrotum ..JPG|Flaccid human penis ফাইল্:A flaccid penis with foreskin retracted.jpg|[[:Image:A flaccid penis with foreskin retracted.jpg|A flaccid penis with foreskin retracted.jpg]] ফাইল্:Flaccid penis shaved.jpg|[[:Image:Flaccid penis shaved.jpg|Flaccid penis with foreskin fully covering the glans.jpg]] ফাইল্:할례 이전 음경.jpg </gallery> ===খরা তীংখৎপা তী=== <gallery> MalePenis.jpg|[[:Image:MalePenis.jpg|Stage II start of of erection ]] Stage II.JPG|[[:Image:Stage II.JPG|Stage II early stage of erection]] Male penis erection.jpg|[[:Image:Male penis erection.jpg|Stage II Semi erect]] Penis_.jpg|[[:Image:Penis_.jpg|Semi-erect human penis]] Erection partial.jpg|[[:Image:Erection partial.jpg|Partial erection]] HQ SAM SE2.jpg|[[:Image:HQ SAM SE2.jpg|Uncircumsized semi-erect human penis, shaved genitalia]] </gallery> ===নুপাগী মতীগী মথৌসীং=== <gallery> Human penis erection.png|[[:Image:Human penis erection.png|The "normal" appearance of the penis and scrotum varies widely depending on the angle of view as well as both emotional and environmental conditions ]] CondomUse.jpg|[[:Image:CondomUse.jpg|How to put on a condom]] Penis in condom.JPG|[[:Image:Penis in condom.JPG|Penis in condom]] Pullcondom.jpg KamaSutra07.jpg|[[:Image:KamaSutra07.jpg|Illustration of a heterosexual, vaginal penetrative copulation depicted in the Kama Sutra]] Precum.JPG|[[:Image:Precum.JPG|Pre-ejaculate lubricative (Cowper's Fluid) emission, often minimal, sometimes copious]] Pre-ejaculate closeup.jpg|[[:Image:Pre-ejaculate closeup.jpg|Pre-ejaculate]] Ejaculation_Educational_Demonstration.OGG|[[:Image:Ejaculation_Educational_Demonstration.OGG|An educational video of ejaculating semen following orgasm]] </gallery> ==== তী তীংখৎপা গী থৌওংসীং ==== <gallery> HQ SAM CFE.jpg|[[:Image:HQ SAM CFE.jpg|Comparison of flaccid and erect uncircumsized human penis]] Comparison of flaccid and erect penis.jpg|[[:Image:HQ SAM CFE2.jpg|Comparison of flaccid and erect uncircumsized human penis, shaved genitalia]] An Erection Development.JPG|[[:Image:An Erection Development.JPG|Process of erection - normal penis]] HQ SAM SASu.jpg|[[:Image:HQ SAM SASu.jpg|Erection development, uncircumsized human penis]] HQ SAM SAS.jpg|[[:Image:HQ SAM SAS.jpg|Erection development, uncircumsized human penis]] HQ SAM SAS2.jpg|[[:Image:HQ SAM SAS2.jpg|Erection development, uncircumsized human penis, shaved genitalia]] Fetus Penis Erection.jpg|[[:Image:Fetus Penis Erection.jpg|Echograph of fetus with penile erection]] Penis erection (6 pictures).jpg|[[:Image:Penis erection (6 pictures).jpg|normal penis with high angle when fully erect]] Erection Development of Uncut Penis.jpg|[[:Image:Erection Development of Uncut Penis.jpg|Erection viewed from above and from the side]] Video of Penile erection.ogv|[[:Image:Video of Penile erection.ogv|Erection view of seated male (self-portrait):24second video ]] UR UF.jpg|[[:Image:UR UF.jpg|Comparison of flaccid and erect uncircumsized human penis with "normal" tilt]] UR UF2.jpg|[[:Image:UR UF2.jpg|Comparison of flaccid and erect uncircumsized human penis with "normal" tilt]] Erection Development.jpg|[[:Image:Erection Development.jpg|Erection Development]] Erection development - animated.gif|[[:Image:Erection development - animated.gif|Erection development - animated]] </gallery> === চম্না তীংখৎপা তী === <gallery> ফাইল্:Erect human penis HQ SAM E.jpg|[[:Image:Erect human penis HQ SAM E.jpg|Erect human penis with pubic hair]] ফাইল্:Erected human penis .....JPG|[[:Image:Erected human penis .....JPG|Erect human penis]] ফাইল্:Normal erect.tiff|[[:Image:Normal erect.tiff|normal erect penis]] ফাইল্:Pénis érection.jpg|[[:Image:Pénis érection.jpg|Normal erect penis]] ফাইল্:Downward erection.JPG|[[:Image:Downward erection.JPG|Downward inclined erect penis]] ফাইল্:Sex en erection.jpg|[[:Image:Sex en erection.jpg|Frontal view of erect, vertically inclined, uncircumcised penis]] ফাইল্:Penis erection glans 1.jpg|[[:Image:Penis erection glans 1.jpg|X1 Frontal view of glans]] ফাইল্:Penis erection glans 2.jpg|[[:Image:Penis erection glans 2.jpg|X2Side view of glans]] ফাইল্:Penis circoncis en erection.JPG|[[:Image:Penis circoncis en erection.JPG|Penis circoncis en erection]] ফাইল্:East Male Erection.JPG|[[:Image:East Male Erection.JPG|Oriental male with erection]] ফাইল্:4.75 inch erection.jpg|[[:Image:4.75 inch erection.jpg|Normal 4.75-inch/12cm erect penis]] ফাইল্:Erection Homme.jpg|[[:Image:Erection Homme.jpg|Normal erection with slight upward inclination]] ফাইল্:HQ SAM E2.jpg|[[:Image:HQ SAM E2.jpg|Erect human penis with shaved genitalia]] ফাইল্:Erect penis (human, Asian).jpg|[[:Image:Erect penis (Human male, Asian).jpg|Asian male]] ফাইল্:Erect penis (Human male, Asian) by Srek 2.JPG|[[:Image:Erect penis (Human male, Asian).jpg|front view of male]] ফাইল্:Non-retracted and retracted foreskin of an erect penis.JPG|[[:Image:Non-retracted and retracted foreskin of an erect penis.JPG|Non-retracted and retracted foreskin of an erect penis]] ফাইল্:Penis bande.jpg|[[:Image:Penis bande.jpg|Penis Band]] ফাইল্:L'érection.jpg|[[:Image:L'érection.jpg|Normal upward inclined erection]] ফাইল্:Circ Penis volle Erektion.jpg|[[:Image:Circ Penis volle Erektion.jpg|Circumcised penis with full perpendicular erection]] ফাইল্:Circumcised penis - Flacid and Erect - High Res2.jpg|[[:Image:Circumcised penis - Flacid and Erect - High Res2.jpg|Circumcised penis, flacid and erect ]] ফাইল্:Jms 003.JPG|[[:Image:Jms 003.JPG|Normal erection]] ফাইল্:Erectedpenis.JPG|[[:Image:Erectedpenis.JPG|Normal erect penis: model thrusting buttocks forward]] ফাইল্:An erect human penis.jpg|[[:Image:An erect human penis.jpg|A normal erect human penis with detail of glans]] ফাইল্:Penis erigiert.jpg|[[:Image:Penis erigiert.jpg|Normal erect penis viewed from side and above ]] ফাইল্:Erigierter Penis ohne Vorhaut.JPG|[[:Image:Erigierter Penis ohne Vorhaut.JPG|Erect penis with foreskin removed]] ফাইল্:Erection1.jpeg|Normal fully erect penis ফাইল্:Penis Humain.jpg|[[:Image:Penis Humain.jpg|Normal erect penis under different lighting or exposure ]] ফাইল্:Sex masculin.jpg|[[:Image:Sex masculin.jpg|Normal erect penis with upward inclination ]] ফাইল্:Erect penis uncut.jpg|[[:Image:Erect penis uncut.jpg|Normal uncircumcised human penis erect]] ফাইল্:My 5" penis.jpg|5&quot; erect penis </gallery> === তী গী মতোন্/মখোক্ (গ্লান্সা পেনীস) === <gallery> ফাইল্:HQ SAM GP.jpg|[[:Image:HQ SAM GP.jpg|Glans penis (left: flaccid penis; right: erect penis)]] ফাইল্:HQ SAM GPC.jpg|[[:Image:HQ SAM GPC.jpg|Corona of the glans penis (erect penis)]] ফাইল্:HQ SAM GPF.jpg|[[:Image:HQ SAM GPF.jpg|Glans penis with frenulum (left: flaccid penis; right: erect penis)]] ফাইল্:귀두 잔주름.png|[[:ফাইল্:귀두 잔주름.png|Penis glans(Circumcised penis)]] ফাইল্:자지 대가리.jpg|Circumcised penis glans </gallery> === সোইনাইরবা তী তীংখৎপা === <gallery> Curved_penis.jpg|[[:Image:SPM A0635.jpg|severely distorted penis]] TypicalHumanPenisScale.jpg|[[:Image:TypicalHumanPenisScale.jpg|slightly penis]] Penis erection forskin.jpg|[[:Image:Penis erection forskin.jpg|normal erect penis with slight upward curvature]] Érection.jpg|[[:Image:Érection.jpg|Upward curve: possibly the result of a preference for pressing vigourously against a hard surface]] Human man's penis in erection.jpg Frenum piercing erection.jpg Peniksen eroavaisuuksia.jpg Penis in condom 3.jpg Bbefore after.jpg </gallery> === মথোং মরম্ খংহন্দবা তী === <gallery> ফাইল্:PA und Frenulum.jpg|[[:Image:PA und Frenulum.jpg|Prince Albert Glans and Frenulum piercing]] ফাইল্:Penis tattoo.jpg|[[:Image:Penis tattoo.jpg|Tatoo, constricting ring and frenulum piercing]] </gallery> === নানবগী/তৌনবগী মওংদা সানবা তী === {{see also|Category:Masturbation}} <gallery> Masturbation techniques - Circumcision experience (Beschneidungs-Erfahrung).gif|[[:Image:Masturbation_techniques_-_Circumcision_experience_(Beschneidungs-Erfahrung).gif|Circumcised man masturbating using fist grip]] Masturbation Techniques - the Crown-Handle (animated).gif|[[:Image:Masturbation Techniques - the Crown-Handle (animated).gif|Uncircumcised man using the "Crown-Handle" technique]] Masturbation Techniques - the campfire method (animated).gif|Uncircumcised man using the "Camp fire" technique </gallery> === অয়েক্প/অহক্পা লাইগী সক্তম্/মওংসীং === {{see also|Category:Erotic art}} * ''See Wikipedia article'' [[w:Erotic art in Pompeii]] <gallery> Silenus-erection.jpg Artpark3 Gurke-.jpg Frohe Ostern!-.jpg Museo Nazionale Napoli Gabinetto Segreto Mercury.jpg Mercury god.jpg Pompeya erótica5.jpg CandlePenis.jpg|[[:Image:CandlePenis.jpg|Penis Candle]] Helios, Main figure (Johannes Benk) at the Naturhistorisches Museum, Wien-9957.jpg|Johannes Benk, Helios </gallery> ==মসীসু য়েংঙু== * [[নাবী সান্নব]] ==মতেং লৌরক্ফম্== {{Reflist}} [[মচাখাইব:হক্চাং কয়াৎ]] jr0gwa0hk1vk0yugzwyxpc922li3j43 User:DVRTed/sandbox2 2 166741 768592 768584 2026-10-16T14:04:47Z DVRTed 55993 Updating tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768592 wikitext text/x-wiki {{AINB case banner |llmprod=completed |case_name=DVRTed |original_file_date=6 October 2026 |case_type=user |cleanup=completed |conduct=review}} == Discussion == {{Userlinks|DVRTed}} This is a case! [[User:DVRTed|DVRTed]] ([[User talk:DVRTed|talk]]) 03:02, 6 October 2026 (UTC) == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{Userlinks|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-07}} {{AIC article list| {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=BS Nymph|status=requested|notes=22 edits: [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} }} max2h0bmu6vag0dq8o8ovbbismtv5a5 768593 768592 2026-10-16T14:04:57Z DVRTed 55993 Updated row for [[BS Nymph]] (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768593 wikitext text/x-wiki {{AINB case banner |llmprod=completed |case_name=DVRTed |original_file_date=6 October 2026 |case_type=user |cleanup=completed |conduct=review}} == Discussion == {{Userlinks|DVRTed}} This is a case! [[User:DVRTed|DVRTed]] ([[User talk:DVRTed|talk]]) 03:02, 6 October 2026 (UTC) == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{Userlinks|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-07}} {{AIC article list| {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=BS Nymph|status=completed|notes=22 edits: [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} }} i1qzupnuukz8l7ihzywrkyp7b9nck9y 768594 768593 2026-10-16T14:05:11Z DVRTed 55993 Updating tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768594 wikitext text/x-wiki {{AINB case banner |llmprod=completed |case_name=DVRTed |original_file_date=6 October 2026 |case_type=user |cleanup=completed |conduct=review}} == Discussion == {{Userlinks|DVRTed}} This is a case! [[User:DVRTed|DVRTed]] ([[User talk:DVRTed|talk]]) 03:02, 6 October 2026 (UTC) == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{Userlinks|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-07}} {{AIC article list| {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=BS Nymph|status=completed|notes=22 edits: [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} }} 89sgt57k6dvbor4mqd95xn88ab8b7gr 768595 768594 2026-10-16T14:13:04Z DVRTed 55993 Rebuilding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768595 wikitext text/x-wiki {{AINB case banner |llmprod=completed |case_name=DVRTed |original_file_date=6 October 2026 |case_type=user |cleanup=completed |conduct=review}} == Discussion == {{Userlinks|DVRTed}} This is a case! [[User:DVRTed|DVRTed]] ([[User talk:DVRTed|talk]]) 03:02, 6 October 2026 (UTC) == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{Userlinks|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-07}} {{AIC article list| {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=BS Nymph|status=completed|notes=22 edits: [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} }} tuu7uv84ma6uwjgmhb1r215yg1u6n4v 768596 768595 2026-10-16T14:29:34Z DVRTed 55993 Adding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768596 wikitext text/x-wiki {{AINB case banner |llmprod=completed |case_name=DVRTed |original_file_date=6 October 2026 |case_type=user |cleanup=completed |conduct=review}} == Discussion == {{Userlinks|DVRTed}} This is a case! [[User:DVRTed|DVRTed]] ([[User talk:DVRTed|talk]]) 03:02, 6 October 2026 (UTC) == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-16}} === Tracking list === {{Notice |heading=Notes | * Edits smaller than +/- 35 bytes were excluded. }} {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=22 edits: [[Special:Diff/768500|(+314)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=1 edit: [[Special:Diff/765241|(+83)]]}} {{AIC article row|article=Testpage12|status=requested|notes=23 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]]}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} h4e1favgjyg5xt1icjoo6uoo0smnji9 768597 768596 2026-10-16T14:30:04Z DVRTed 55993 Rebuilding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768597 wikitext text/x-wiki {{AINB case banner |llmprod=completed |case_name=DVRTed |original_file_date=6 October 2026 |case_type=user |cleanup=completed |conduct=review}} == Discussion == {{Userlinks|DVRTed}} This is a case! [[User:DVRTed|DVRTed]] ([[User talk:DVRTed|talk]]) 03:02, 6 October 2026 (UTC) == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-16}} === Tracking list === {{Notice |heading=Notes | * Edits smaller than +/- 35 bytes were excluded. }} {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=22 edits: [[Special:Diff/768500|(+314)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=1 edit: [[Special:Diff/765241|(+83)]]}} {{AIC article row|article=Testpage12|status=requested|notes=19 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]]}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} bk1sa72jw6qyq2xxicxsf5g5kb4s4le 768598 768597 2026-10-16T14:48:55Z DVRTed 55993 Rebuilding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768598 wikitext text/x-wiki {{AINB case banner |llmprod=completed |case_name=DVRTed |original_file_date=6 October 2026 |case_type=user |cleanup=completed |conduct=review}} == Discussion == {{Userlinks|DVRTed}} This is a case! [[User:DVRTed|DVRTed]] ([[User talk:DVRTed|talk]]) 03:02, 6 October 2026 (UTC) == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-16}} === Tracking list === {{Notice |heading=Notes | * Edits smaller than +/- 35 bytes were excluded. }} {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=20 edits: [[Special:Diff/768500|(+314)]] [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=1 edit: [[Special:Diff/765241|(+83)]]}} {{AIC article row|article=Testpage12|status=requested|notes=19 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]]}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=4 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=1 edit: [[Special:Diff/760822|(+343)]]}} }} 5ho05c0ppjzgl6stjcoorijerjzl27m 768599 768598 2026-10-16T14:57:20Z DVRTed 55993 Adding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768599 wikitext text/x-wiki {{AINB case banner |llmprod=completed |case_name=DVRTed |original_file_date=6 October 2026 |case_type=user |cleanup=completed |conduct=review}} == Discussion == {{Userlinks|DVRTed}} This is a case! [[User:DVRTed|DVRTed]] ([[User talk:DVRTed|talk]]) 03:02, 6 October 2026 (UTC) == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-16}} === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=23 edits: [[Special:Diff/768500|(+314)]] [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} }} qsk0xdtr92vwbiu7jorfa12s9jp7qbo 768600 768599 2026-10-16T14:58:03Z DVRTed 55993 Rebuilding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768600 wikitext text/x-wiki {{AINB case banner |llmprod=completed |case_name=DVRTed |original_file_date=6 October 2026 |case_type=user |cleanup=completed |conduct=review}} == Discussion == {{Userlinks|DVRTed}} This is a case! [[User:DVRTed|DVRTed]] ([[User talk:DVRTed|talk]]) 03:02, 6 October 2026 (UTC) == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-16}} === Tracking list === {{Notice |heading=Notes | * Edits smaller than +/- 35 bytes were excluded. }} {{AIC article list| {{AIC article row|article=Test Page 817876|status=requested|notes=1 edit: [[Special:Diff/765241|(+83)]]}} {{AIC article row|article=Testpage12|status=requested|notes=23 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]]}} }} n6bgfdawfjcarm7eree4st3rf26etew 768602 768600 2026-10-16T15:07:59Z DVRTed 55993 Blanked the page 768602 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 768603 768602 2026-10-16T15:08:11Z DVRTed 55993 Adding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768603 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-16}} === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=23 edits: [[Special:Diff/768500|(+314)]] [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} i39lv2tolhqbd3hez2g6yqi2ww3nu4j 768604 768603 2026-10-16T15:09:57Z DVRTed 55993 768604 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-16}} === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=23 edits: [[Special:Diff/768500|(+314)]] [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} }} fi819cl1vt21nio0ua16qi4z3s7gwd0 768605 768604 2026-10-16T15:10:12Z DVRTed 55993 Rebuilding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768605 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-16}} === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=23 edits: [[Special:Diff/768500|(+314)]] [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} i39lv2tolhqbd3hez2g6yqi2ww3nu4j 768606 768605 2026-10-16T15:14:41Z DVRTed 55993 /* Cleanup */ ([[:m:User:Max/MaxEdit.js|MaxEdit]]) 768606 wikitext text/x-wiki == Cleanup == === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=23 edits: [[Special:Diff/768500|(+314)]] [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} 4s00ucn141bt9etk8k79w8qdfowncas 768607 768606 2026-10-16T15:17:50Z DVRTed 55993 Adding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768607 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-16}} === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=23 edits: [[Special:Diff/768500|(+314)]] [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} i39lv2tolhqbd3hez2g6yqi2ww3nu4j 768608 768607 2026-10-16T15:18:20Z DVRTed 55993 Rebuilding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768608 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-01}} === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=22 edits: [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} 9iuiack3pof09ddt5nysubvdjnxbtmc 768609 768608 2026-10-16T15:22:34Z DVRTed 55993 Rebuilding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768609 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: multiple users; see notes below. * Start date: 2022-12-01 * End date: 2026-10-01}} === Tracking list === {{Notice |heading=Notes | * Includes contributions from multiple accounts: [[User:DVRTed]], [[User:Veritas Sapientiae]] }} {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=22 edits: [[Special:Contributions/DVRTed|DVRTed]]: [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Contributions/DVRTed|DVRTed]]: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Contributions/DVRTed|DVRTed]]: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Contributions/DVRTed|DVRTed]]: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Contributions/DVRTed|DVRTed]]: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Contributions/DVRTed|DVRTed]]: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} {{AIC article row|article=Pilar Sánchez Acera|status=requested|notes=2 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/681862|(+30)]] [[Special:Diff/681861|(+31)]]}} {{AIC article row|article=Typhoon Nari (2013)|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/662776|(-16)]]}} {{AIC article row|article=Children's television series|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/662775|(-180)]]}} {{AIC article row|article=Slovenia|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/662774|(-8330)]]}} {{AIC article row|article=Hermann Körner|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/662773|(+316)]]}} {{AIC article row|article=Switch|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/662772|(-23)]]}} {{AIC article row|article=Barney & Friends|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/662770|(-12)]]}} {{AIC article row|article=National Football League|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/662768|(-130610)]]}} {{AIC article row|article=George Hively|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/662767|(-42)]]}} {{AIC article row|article=K9|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/662766|(-45)]]}} {{AIC article row|article=CTVN test|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/658734|(+804)]] (page created)}} {{AIC article row|article=Berlin|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/657003|(-241592)]]}} {{AIC article row|article=Zech|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/656996|(-23)]]}} {{AIC article row|article=Florida|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/656984|(-259036)]]}} {{AIC article row|article=Continent|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/656980|(-91711)]]}} {{AIC article row|article=Capital city|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/656977|(-686)]]}} {{AIC article row|article=Portuguese|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/656976|(-838)]]}} {{AIC article row|article=Greenland|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/656971|(-989)]]}} {{AIC article row|article=Terry Butcher|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/655223|(-2982)]]}} {{AIC article row|article=Georgios Balanos|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/655222|(+88)]]}} {{AIC article row|article=Phil Frank|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/655221|(-441)]]}} {{AIC article row|article=Itzhak Katzenelson|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/655215|(-2990)]]}} {{AIC article row|article=Takao Makino|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/655213|(-502)]]}} {{AIC article row|article=Rubik's Cube|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/655207|(-1310)]]}} {{AIC article row|article=Shovelware|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/655204|(+4677)]]}} {{AIC article row|article=Thành viên:Hide on Rosé|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/650106|(+37)]] (page created)}} {{AIC article row|article=Testbp|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/649711|(+31)]]}} {{AIC article row|article=Page525|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/649507|(0)]]}} {{AIC article row|article=Page178|status=requested|notes=12 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/648494|(0)]] [[Special:Diff/648493|(0)]] [[Special:Diff/648492|(0)]] [[Special:Diff/648488|(0)]] [[Special:Diff/648482|(0)]] [[Special:Diff/648329|(0)]] [[Special:Diff/648328|(0)]] [[Special:Diff/648325|(0)]] [[Special:Diff/648324|(0)]] [[Special:Diff/648309|(0)]] [[Special:Diff/648308|(0)]] [[Special:Diff/648307|(0)]]}} {{AIC article row|article=Test-20160711|status=requested|notes=2 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/648197|(+63)]] [[Special:Diff/648192|(+63)]]}} {{AIC article row|article=Orga|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/648143|(+63)]]}} {{AIC article row|article=Gift of the Givers|status=requested|notes=3 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/648081|(+63)]] [[Special:Diff/648076|(+10)]] [[Special:Diff/648074|(+10)]]}} {{AIC article row|article=Klm|status=requested|notes=2 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/648078|(+63)]] [[Special:Diff/648071|(+63)]]}} {{AIC article row|article=Some page to test|status=requested|notes=2 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/647815|(+10)]] [[Special:Diff/647813|(+10)]]}} {{AIC article row|article=Thay lời muốn nói|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/646119|(+38723)]] (page created)}} {{AIC article row|article=NVCS2|status=requested|notes=2 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/593586|(+2)]] [[Special:Diff/593584|(+59)]] (page created)}} {{AIC article row|article=Bài viết 1|status=requested|notes=3 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/592887|(-726)]] [[Special:Diff/592883|(-1)]] [[Special:Diff/592882|(+126)]] (page created)}} {{AIC article row|article=MariaDB|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/591684|(+27476)]]}} {{AIC article row|article=TestJustATest|status=requested|notes=2 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/591665|(-9)]] [[Special:Diff/591661|(+3)]]}} {{AIC article row|article=Single Revision Redirect|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/590492|(+10)]]}} {{AIC article row|article=Lol|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/587648|(+8)]]}} {{AIC article row|article=Sandbox|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/557035|(+5)]]}} {{AIC article row|article=Test page 8777|status=requested|notes=8 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/557028|(0)]] [[Special:Diff/557026|(0)]] [[Special:Diff/557020|(0)]] [[Special:Diff/557019|(0)]] [[Special:Diff/556981|(-13)]] [[Special:Diff/556973|(-8)]] [[Special:Diff/552519|(+11)]] [[Special:Diff/552508|(+1426)]] (page created)}} {{AIC article row|article=Test page 87777|status=requested|notes=1 edit: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/557021|(+75)]] (page created)}} {{AIC article row|article=Test page 8778|status=requested|notes=5 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/556982|(-3)]] [[Special:Diff/556972|(-4)]] [[Special:Diff/556964|(-9)]] [[Special:Diff/552520|(+7)]] [[Special:Diff/552509|(+57)]] (page created)}} {{AIC article row|article=Trang thử nghiệm 02|status=requested|notes=3 edits: [[Special:Contributions/Veritas Sapientiae|Veritas Sapientiae]]: [[Special:Diff/556980|(+3992)]] [[Special:Diff/556965|(-7)]] [[Special:Diff/555198|(+3992)]] (page created)}} }} ibefk5266409fbnosgs1hzl5ndg2mmc 768610 768609 2026-10-16T15:23:23Z DVRTed 55993 Rebuilding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768610 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-01}} === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=22 edits: [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} 9iuiack3pof09ddt5nysubvdjnxbtmc 768611 768610 2026-10-16T15:23:51Z DVRTed 55993 Updated row for [[BS Nymph]] (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768611 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-01}} === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=completed|notes=22 edits: [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} nrx2wxbnbnacouov7973ccdmx7hh3zx 768612 768611 2026-10-16T15:24:02Z DVRTed 55993 Updated row for [[BS Nymph]] (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768612 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-01}} === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=completed|notes=note writer}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} ns0pdbfustkecavqrhn2h5imokm2ml3 768613 768612 2026-10-16T15:24:22Z DVRTed 55993 Rebuilding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768613 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-01}} === Tracking list === {{AIC article list| {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=BS Nymph|status=completed|notes=note writer}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} 69dodj6yxouodm12ev77lwv4ayckcng 768614 768613 2026-10-16T15:24:42Z DVRTed 55993 Rebuilding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768614 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-01}} === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=completed|notes=22 edits: [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} nrx2wxbnbnacouov7973ccdmx7hh3zx 768616 768614 2026-10-16T15:31:49Z DVRTed 55993 Adding tracking table (using [[User:DVRTed/AINB-helper|AINB-helper]]) 768616 wikitext text/x-wiki == Cleanup == {{InfoCard|content='''Tracker detail''' * User: {{User-ainb|1=DVRTed}} * Start date: 2022-12-01 * End date: 2026-10-16}} === Tracking list === {{AIC article list| {{AIC article row|article=BS Nymph|status=requested|notes=23 edits: [[Special:Diff/768500|(+314)]] [[Special:Diff/765391|(+5)]] [[Special:Diff/762815|(+330)]] [[Special:Diff/762814|(-2679)]] [[Special:Diff/762811|(+88)]] [[Special:Diff/762776|(+331)]] [[Special:Diff/762774|(+90)]] [[Special:Diff/762772|(+283)]] [[Special:Diff/762716|(+88)]] [[Special:Diff/762713|(+88)]] [[Special:Diff/762710|(+88)]] [[Special:Diff/762707|(+318)]] [[Special:Diff/762691|(+318)]] [[Special:Diff/762688|(+88)]] [[Special:Diff/762686|(+318)]] [[Special:Diff/762684|(+88)]] [[Special:Diff/762682|(+88)]] [[Special:Diff/762681|(+88)]] [[Special:Diff/762678|(+318)]] [[Special:Diff/762677|(-88)]] [[Special:Diff/762676|(+88)]] [[Special:Diff/759773|(-85)]] [[Special:Diff/759772|(+85)]]}} {{AIC article row|article=Test Page 817876|status=requested|notes=2 edits: [[Special:Diff/765241|(+83)]] [[Special:Diff/691118|(+14)]]}} {{AIC article row|article=Testpage12|status=requested|notes=26 edits: [[Special:Diff/765089|(+330)]] [[Special:Diff/764111|(+72)]] [[Special:Diff/762674|(+88)]] [[Special:Diff/762672|(+318)]] [[Special:Diff/762671|(+88)]] [[Special:Diff/762670|(+318)]] [[Special:Diff/762610|(+88)]] [[Special:Diff/762607|(+318)]] [[Special:Diff/762606|(+318)]] [[Special:Diff/762604|(+318)]] [[Special:Diff/762424|(+320)]] [[Special:Diff/762423|(-515)]] [[Special:Diff/762237|(+323)]] [[Special:Diff/762235|(+96)]] [[Special:Diff/762233|(+96)]] [[Special:Diff/762232|(-418)]] [[Special:Diff/762229|(+96)]] [[Special:Diff/762227|(+323)]] [[Special:Diff/762226|(-323)]] [[Special:Diff/762223|(+323)]] [[Special:Diff/762222|(-442)]] [[Special:Diff/762220|(+5)]] [[Special:Diff/762217|(+103)]] [[Special:Diff/762215|(+335)]] [[Special:Diff/761537|(+2)]] [[Special:Diff/761536|(+4)]] (page created)}} {{AIC article row|article=Wp/sas/Kabupatén Tangerang|status=requested|notes=5 edits: [[Special:Diff/763465|(+330)]] [[Special:Diff/763463|(+88)]] [[Special:Diff/762818|(+88)]] [[Special:Diff/759771|(-317)]] [[Special:Diff/759770|(+317)]]}} {{AIC article row|article=Bob Morley|status=requested|notes=1 edit: [[Special:Diff/762028|(+342)]]}} {{AIC article row|article=Jugerum/edithistory|status=requested|notes=2 edits: [[Special:Diff/760823|(-343)]] [[Special:Diff/760822|(+343)]]}} }} i39lv2tolhqbd3hez2g6yqi2ww3nu4j User:DVRTed/AINB-helper.css 2 169164 768615 765491 2026-10-16T15:31:32Z DVRTed 55993 Blanked the page 768615 css text/css phoiac9h4m842xq45sp7s6u21eteeq1 NASA Institute for Advanced Concepts 0 174142 768660 752657 2026-10-17T00:07:46Z InternetArchiveBot 34092 Rescuing 2 sources and tagging 2 as dead.) #IABot (v2.0.9.6 768660 wikitext text/x-wiki {{Short description|NASA program}} [[File:NIAC Logo xl transparent black.png|thumb|Logo of the NIAC]] The '''NASA Innovative Advanced Concepts''' ('''NIAC'''), formerly '''NASA Institute for Advanced Concepts''' ('''NIAC'''), is a [[NASA]] program for development of far reaching, long term advanced concepts by "creating breakthroughs, radically better or entirely new aerospace concepts".<ref>{{cite journal |date=September 10, 2013 |title=NASA Innovative Advanced Concepts |url=http://www.nasa.gov/sites/default/files/files/NIAC_AIAA.pdf |journal=AIAA SPACE 2013 Conference and Exposition |number=AIAA 2013-5376 |archive-date=December 1, 2020 |access-date=June 20, 2014 |archive-url=https://web.archive.org/web/20201201061032/https://www.nasa.gov/sites/default/files/files/NIAC_AIAA.pdf |url-status=dead }}</ref> It funds work on revolutionary [[aeronautics]] and [[space]] concepts that can dramatically impact how NASA develops and conducts its missions. The program operated under the name NASA Institute for Advanced Concepts from 1998 until 2007 (managed by the [[Universities Space Research Association]] on behalf of NASA), and was reestablished in 2011 under the name '''NASA Innovative Advanced Concepts''' and continues to the present. ==History== The ''NASA Institute for Advanced Concepts'' ('''NIAC''') was a NASA-funded program that was operated by the [[Universities Space Research Association]] (USRA) for NASA from 1998 until its closure on 31 August 2007. NIAC was to serve as "an independent open forum, a high-level point of entry to NASA for an external community of innovators, and an external capability for analysis and definition of advanced aeronautics and space concepts to complement the advanced concept activities conducted within NASA."<ref name= "NRC-review">''[http://www.nap.edu/catalog.php?record_id=12702|Fostering Visions for the Future: A Review of the NASA Institute for Advanced Concepts]'', National Academies Press, Washington DC (2009); {{ISBN|0-309-14051-X}}; {{ISBN|978-0-309-14051-5}} (accessed 6 September 2012)</ref> NIAC sought proposals for revolutionary aeronautics and space concepts to dramatically impact how NASA developed and conducted its missions. NIAC provided a highly visible, recognizable, and high-level entry point for outside thinkers and researchers. It encouraged proposers to think decades into the future in pursuit of concepts that would "leapfrog" the evolution of contemporary aerospace systems. These concepts were expected to be based on sound scientific principles and attainable within a 10 to 40-year time frame. NIAC received a total of 1,309 proposals and awarded 126 Phase I grants and 42 Phase II contracts for a total value of $27.3 million from February 1998 to 2007.<ref>NASA Institute for Advanced Concepts, [http://www.niac.usra.edu/files/library/annual_report/2006annualreport.pdf 9th Annual & Final Report, 2006-2007], Performance Period July 12, 2006 - August 31, 2007 (page 9, Executive Summary, 4th paragraph)</ref> NASA announced on March 1, 2011 that the NIAC concept would be re-established at NASA with similar goals,<ref name="spacepolicyonline">Marcia S. Smith, [http://www.spacepolicyonline.com/news/niac2-gets-underway-at-nasa-two-other-technology-solicitations-announced?&ObjectID=4502363&ObjectType=35 "NIAC2 Gets Underway at NASA, Two Other Technology Solicitations Announced"], SpacePolicyOnline, 02-Mar-2011 (accessed 6 Sept. 2012)</ref><ref name="NASA Innovative Advanced Concepts">[http://www.nasa.gov/offices/oct/early_stage_innovation/niac/ NASA Innovative Advanced Concepts] {{Webarchive|url=https://web.archive.org/web/20230507110958/https://www.nasa.gov/offices/oct/early_stage_innovation/niac/ |date=2023-05-07 }} web page (accessed 1 August 2012)</ref> maintaining the acronym NIAC. ===NIAC 1998–2007=== Studies funded by the original NIAC 1998–2007 include <!-- Please keep this list alphabetized --> * [[Bionanotechnology#Designing the future|Bio-Nano-Machines for Space Applications]] – [[Constantinos Mavroidis]] * [[Caves of Mars Project|System Feasibility Demonstrations of Caves and Subsurface Constructs for Mars Habitation and Scientific Exploration (Caves of Mars Project)]] – [[Penelope Boston|Penelope J. Boston]] * [[Lunar space elevator]] – [[Jerome Pearson]] [http://www.niac.usra.edu/files/studies/final_report/1032Pearson.pdf – final report.pdf] * [[Magnetic sail]] – [[Robert Zubrin]] * Mars [[Entomopter]] – [[Robert Michelson]] / Anthony Colozza [http://angel-strike.com/entomopter/NIAC_Final_Report_10-31-02.pdf – Phase II final report.pdf] * [[Mini-magnetospheric plasma propulsion]] – Robert M. Winglee * [[Momentum exchange tether]] – Thomas J. Bogar [https://web.archive.org/web/20110724233526/http://www.spaceelevator.com/docs/355Bogar.pdf – final report.pdf] * [[New Worlds Mission]] – Webster Cash * [[Space elevator]] – [[Bradley C. Edwards]] ===Closing of the original NIAC=== On July 2, 2007, NIAC announced that "NASA, faced with the constraints of achieving the [[Vision for Space Exploration]], has made the difficult decision to terminate NIAC, which has been funded by NASA since inception. Effective August 31, 2007, the original NIAC organization ceased operations.<ref>[http://www.spaceref.com/news/viewsr.html?pid=24698 "The NASA Institute for Advanced Concepts (NIAC) is Closing"]{{Dead link|date=July 2025 |bot=InternetArchiveBot |fix-attempted=yes }}, SpaceRef - Space News as it Happens, posted Monday, July 2, 2007 (accessed 5 September 2012)</ref> ==Revised NIAC== Following the termination of the original NIAC program, Congress requested a review of the NIAC program by the [[United States National Research Council]] (NRC) of the [[National Academy of Sciences]].<ref>Marcia S. Smith, [http://www.spacepolicyonline.com/news/nrc-calls-for-reinstatement-of-nasas-institute-for-advanced-concepts?A=SearchResult&SearchID=2555040&ObjectID=4502394&ObjectType=35 "NRC Calls for Reinstatement of NASA's Institute for Advanced Concepts"], SpacePolicyOnline, 10-Aug-2009 (accessed 6 Sept. 2012)</ref> The review was done in 2009, and concluded that in order to achieve its mission, NASA needs "a mechanism to investigate visionary, far-reaching advanced concepts," and recommended that NIAC, or a NIAC-like program, should be reestablished.<ref name= "NRC-review" /> Consistent with this recommendation, it was announced on March 1, 2011 that the NIAC was to be revived with similar goals<ref name="spacepolicyonline" /> leading to the establishment in 2011 of a project within the NASA Office of Chief Technologist, the ''NASA Innovative Advanced Concepts,''<ref name="NASA Innovative Advanced Concepts"/> maintaining the acronym NIAC. It is now part of the NASA Space Technology Mission Directorate (STMD).<ref>[http://www.nasa.gov/directorates/spacetech/niac/index.html NASA Innovative Advanced Concepts (NIAC)] web page (accessed July 10, 2013.)</ref> According to Michael Gazarik, director of NASA's [[Space Technology Program]], "Through the NASA Innovative Advanced Concepts program, NASA is taking the long-term view of technological investment and the advancement that is essential for accomplishing our missions. We are inventing the ways in which next-generation aircraft and spacecraft will change the world and inspiring Americans to take bold steps."<ref name="gizmag2012">David Szondy, "[http://www.gizmag.com/nasa-niac-2012/23568/ NASA announces advanced technology proposals"], ''gizmag'', August 5, 2012 (accessed 9 August 2012)</ref> ===2011 NIAC Project Selections=== The revived NIAC, with the slightly-changed name "NASA Innovative Advanced Concepts," funded thirty phase-I studies in 2011 to investigate advanced concepts.<ref>Frank Morring, Jr., [http://www.aviationweek.com/Article.aspx?id=/article-xml/AW_08_15_2011_p20-357727.xml "NASA Starts Spending On Advanced Technology"] {{Dead link|date=October 2026 |bot=InternetArchiveBot |fix-attempted=yes }}, ''Aviation Week'', August 15, 2011 (accessed 9 August 2012)</ref><ref>NASA Office of the Chief Technologist, [http://www.nasa.gov/offices/oct/early_stage_innovation/niac/2011_phase1_selections.html 2011 NIAC Phase I Selections] (accessed 1 August 2012)</ref> *Duda, Kevin: Variable Vector Countermeasure Suit (V2Suit) for Space Habitation and Exploration *Ferguson, Scott: Enabling All-Access Mobility for Planetary Exploration Vehicles via Transformative Reconfiguration *Gilland, James: The Potential for Ambient Plasma Wave Propulsion *Gregory, Daniel: Space Debris Elimination (SpaDE) *Hogue, Michael: Regolith Derived Heat Shield for a Planetary Body Entry and Descent System with In-Situ Fabrication *Hohman, Kurt: Atmospheric Breathing Electric Thruster for Planetary Exploration *Howe, Steven: Economical Radioisotope Power *Khoshnevis, Behrokh: Contour Crafting Simulation Plan for Lunar Settlement Infrastructure Build-Up *Kwiat, Paul: Entanglement-assisted Communication System for NASA's Deep-Space Missions: Feasibility Test and Conceptual Design *Mankins, John: SPS-ALPHA: The First Practical Solar Power Satellite via Arbitrarily Large PHased Array *Miller, David: High-temperature Superconductors as Electromagnetic Deployment and Support Structures in Spacecraft *Paul, Michael: Non-Radioisotope Power Systems For Sunless Solar System Exploration Missions *Pavone, Marco: Spacecraft/Rover Hybrids for the Exploration of Small Solar System Bodies *Ritter, Joe: Ultra-Light "Photonic Muscle" Space Structures *Scott, Gregory: Low Power Microrobotics Utilizing Biologically Inspired Energy Generation *Short, Kendra: Printable Spacecraft *Sibille, Laurent: In-Space Propulsion Engine Architecture based on Sublimation of Planetary Resources: from exploration robots to NEO mitigation *Silvera, Isaac: Metallic Hydrogen: A Game Changing Rocket Propellant *Slough, John: Nuclear Propulsion through Direct Conversion of Fusion Energy *Staehle, Robert: Interplanetary CubeSats: Opening the Solar System to a Broad Community at Lower Cost *Strekalov, Dmitry: Ghost Imaging of Space Objects *Stysley, Paul: Laser-Based Optical Trap for Remote Sampling of Interplanetary and Atmospheric Particulate Matter *[[Grover Swartzlander|Swartzlander, Grover]]: Steering of Solar Sails Using Optical Lift Force *Tarditi, Alfonso: Aneutronic Fusion Spacecraft Architecture *Thibeault, Sheila: Radiation Shielding Materials Containing Hydrogen, Boron, and Nitrogen: Systematic Computational and Experimental Study *Tripathi, Ram: Meeting the Grand Challenge of Protecting Astronaut's Health: Electrostatic Active Space Radiation Shielding for Deep Space Missions *Werka, Robert: Proposal for a Concept Assessment of a Fission Fragment Rocket Engine (FFRE) Propelled Spacecraft *Westover, Shayne: Radiation Protection and Architecture Utilizing High Temperature Superconducting Magnets *Whittaker, William: Technologies Enabling Exploration of Skylights, Lava Tubes and Caves *Wie, Bong: Optimal Dispersion of Near-Earth Objects ===2012 NIAC project selections=== In August 2012, NIAC announced<ref>David E. Steitz, Aug. 1, 2012, NASA RELEASE 12-261, [http://www.nasa.gov/home/hqnews/2012/aug/HQ12-261_NIAC_Selections.html 2012 NASA Advanced Technology Concepts Selected For Study] {{Dead link|date=October 2026 |bot=InternetArchiveBot |fix-attempted=yes }} (accessed 10 July 2013)</ref> selection of 18 new phase-I proposals, along with Phase-II grants for continuation of 10 projects selected in earlier solicitations.<ref name="gizmag2012" /> These include many projects ranging from [[Landsailing]] rovers on [[Venus]]<ref>{{cite web|url=http://www.nasa.gov/directorates/spacetech/home/feature_windsurfing.html|title=Windsurfing on a Wicked World|first=Loura|last=Hall|date=7 June 2013|website=Nasa.gov|access-date=19 August 2017|archive-date=28 August 2013|archive-url=https://web.archive.org/web/20130828001542/http://www.nasa.gov/directorates/spacetech/home/feature_windsurfing.html|url-status=dead}}</ref> to schemes to explore under the ice of [[Europa (moon)|Europa]].<ref>Keith Wagstaff, ''Time Magazine'' Techland blog, [https://techland.time.com/2012/08/13/whats-next-for-nasa-10-wild-newly-funded-projects/ "What’s Next for NASA? 10 Wild Newly Funded Projects"] {{Webarchive|url=https://web.archive.org/web/20260214075421/https://techland.time.com/2012/08/13/whats-next-for-nasa-10-wild-newly-funded-projects/ |date=2026-02-14 }} August 14, 2012 (accessed 1 September 2012)</ref> Phase I projects selected were:<ref>NASA, [https://www.nasa.gov/directorates/spacetech/niac/niac_2012_phaseIandII_awards.html NASA - NIAC 2012 Phase I & Phase II Awards Announcement] {{Webarchive|url=https://web.archive.org/web/20230128003235/https://www.nasa.gov/directorates/spacetech/niac/niac_2012_phaseIandII_awards.html |date=2023-01-28 }}, Feb. 11, 2013 (retrieved 28 Oct 2015)</ref> *Agogino, Adrian: Super Ball Bot - Structures for Planetary Landing and Exploration *Arrieta, Juan: The Regolith Biters: A Divide-And-Conquer Architecture for Sample-Return Missions *Cohen, Marc: Robotic Asteroid Prospector (RAP) Staged from L-1: Start of the Deep Space Economy *Ditto, Thomas: HOMES - Holographic Optical Method for Exoplanet Spectroscopy *Flynn, Michael: Water Walls: Highly Reliable and Massively Redundant Life Support Architecture *Gellett, Wayne: Solid State Air Purification System *Hoyt, Robert: NanoTHOR: Low-Cost Launch of Nanosatellites to Deep Space *Hoyt, Robert: SpiderFab: Process for On-Orbit Construction of Kilometer-Scale Apertures *Kirtley, David: A Plasma Aerocapture and Entry System for Manned Missions and Planetary Deep Space Orbiters *Landis, Geoffrey: Venus Landsailing Rover *Lantoine, Gregory: MAGNETOUR: Surfing Planetary Systems on Electromagnetic and Multi-Body Gravity Fields *McCue, Leigh: Exploration of Under-Ice Regions with Ocean Profiling Agents (EUROPA) *Nosanov, Jeffrey: Solar System Escape Architecture for Revolutionary Science (SSEARS) *Predina, Joseph: NIST in Space: Better Remote Sensors for Better Science *Quadrelli, Marco: Orbiting Rainbows: Optical Manipulation of Aerosols and the Beginnings of Future Space Construction *Saif, Babak: Atom Interferometry for detection of Gravity Waves-a *Winglee, Robert: Sample Return Systems for Extreme Environments *Zha, GeCheng: Silent and Efficient Supersonic Bi-Directional Flying Wing ===2013 NIAC project selections=== In 2013 NIAC conducted a third solicitation for proposals, with projects to start in the summer of 2013.<ref>{{cite web|url=http://www.nasa.gov/content/nasa-niac-2013-phase-i-selections/|title=NIAC 2013 Phase I and Phase II Selections|first=Loura|last=Hall|date=10 April 2015|website=Nasa.gov|access-date=19 August 2017}}</ref> NASA selected 12 phase-I projects with a wide range of imaginative concepts, including 3-D printing of biomaterials, such as arrays of cells; using galactic rays to map the insides of asteroids; and an "eternal flight" platform that could hover in Earth's atmosphere, potentially providing better imaging, Wi-Fi, power generation, and other applications.<ref>NASA Press Release 13-222, [http://www.nasa.gov/press/2013/july/2013-nasa-advanced-technology-phase-i-concepts-selected-for-study/ 2013 NASA Advanced Technology Phase I Concepts Selected For Study], August 29, 2013 (accessed 5 November 2014)</ref> They selected 6 phase II projects, including photonic laser thrusters, extreme sample return, and innovative spherical robots designed for planetary exploration.<ref>NASA, Press release 13-270, [http://www.nasa.gov/press/2013/august/nasa-selects-2013-nasa-innovative-advanced-technology-concepts-for-continued-study/ NASA Selects 2013 NASA Innovative Advanced Technology Concepts for Continued Study], August 29, 2013 (accessed 5 November 2014)</ref> Phase I selections were:<ref>{{cite web|url=https://www.nasa.gov/content/niac-2013-phase-i-and-phase-ii-selections|title=NIAC 2013 Phase I and Phase II Selections|first=Loura|last=Hall|date=10 April 2015|website=Nasa.gov|access-date=19 August 2017}}</ref> *Adams, Rob: Pulsed Fission-Fusion (PuFF) Propulsion System *Bradford, John: Torpor Inducing Transfer Habitat For Human Stasis To Mars *Hemmati, Hamid: Two-Dimensional Planetary Surface Landers *Jerred, Nathan: Dual-mode Propulsion System Enabling CubeSat Exploration of the Solar System *Longman, Anthony: Growth Adapted Tensegrity Structures - A New Calculus for the Space Economy *Moore, Mark: Eternal Flight as the Solution for 'X' *Prettyman, Thomas: Deep Mapping of Small Solar System Bodies with Galactic Cosmic Ray Secondary Particle Showers *[[Lynn J. Rothschild|Rothschild, Lynn]]: Biomaterials out of thin air: in situ, on-demand printing of advanced biocomposites *Rovey, Joshua: Plasmonic Force Propulsion Revolutionizes Nano/PicoSatellite Capability *Stoica, Adrian: Transformers For Extreme Environments ===2014 NIAC project selections=== In 2014, NIAC conducted a fourth solicitation, and selected 12 projects for Phase-1 studies and 5 projects to continue on to phase II projects.<ref>NASA, [http://www.nasa.gov/content/niac-2014-phase-i-selections/ NIAC 2014 Phase I Selections], June 5, 2014 (accessed 5 Nov. 2014)</ref> Projects selected include a study of hibernation for astronauts<ref>Rhodi Lee, [http://www.techtimes.com/articles/17326/20141007/stasis-or-deep-sleep-may-make-mars-trip-affordable-nasa.htm "Stasis or deep sleep may make Mars trip affordable: NASA"], ''Tech Times,'' October 7, 2014 (accessed 5 Nov. 2014)</ref> and a submarine operating on [[Saturn]]'s moon [[Titan (moon)|Titan]]<ref>Alexis C. Madrigal, [https://www.theatlantic.com/technology/archive/2014/06/a-submarine-to-explore-the-ocean-on-saturns-moon-titan/372337/ "A Submarine to Explore the Ocean on Saturn's Moon, Titan"], ''The Atlantic'' Jun 6 2014, (accessed 5 Nov. 2014)</ref> 2014 Phase I selections were:<ref>NASA, [http://www.nasa.gov/content/niac-2014-phase-i-selections NIAC 2014 Phase I Selections], June 5, 2014 (retrieved 28 Oct 2015).</ref> *Atchison, Justin: Swarm Flyby Gravimetry *Boland, Eugene: Mars Ecopoiesis Test Bed *Cash, Webster: The Aragoscope: Ultra-High Resolution Optics at Low Cost *[[Bin Chen|Chen, Bin]]: 3D Photocatalytic Air Processor for Dramatic Reduction of Life Support Mass & Complexity *Hoyt, Robert: WRANGLER: Capture and De-Spin of Asteroids and Space Debris *Matthies, Larry: Titan Aerial Daughtercraft *Miller, Timothy: Using the Hottest Particles in the Universe to Probe Icy Solar System Worlds *Nosanov, Jeffrey: PERISCOPE: PERIapsis Subsurface Cave OPtical Explorer *Oleson, Steven: Titan Submarine: Exploring the Depths of Kraken *Ono, Masahiro: Comet Hitchhiker: Harvesting Kinetic Energy from Small Bodies to Enable Fast and Low-Cost Deep Space Exploration *Streetman, Brett: Exploration Architecture with Quantum Inertial Gravimetry and In Situ ChipSat Sensors *Wiegmann, Bruce: Heliopause Electrostatic Rapid Transit System (HERTS) ===2015 NIAC project selections=== The 2015 Phase-1 projects included a hopping vehicle to visit [[Triton (moon)|Triton]]<ref>{{cite web|url=https://www.vice.com/en/article/neptune-or-bust/|title=Why We Should Use This Jumping Robot to Explore Neptune|website=Motherboard|access-date=19 August 2017}}</ref> and others,<ref>{{cite web|url=http://space.io9.com/15-projects-nasa-wants-to-change-from-science-fiction-t-1703362134|title=15 Projects NASA Wants To Change From Science Fiction To Science Fact|author=Mika McKinnon|website=Space.io9.com|access-date=19 August 2017}}</ref> and seven phase two projects.<ref>John Wenz, [http://www.popularmechanics.com/space/a16346/nasa-niac-phase-ii-2015/ 6 Wild NASA Proposals to Take Us to the Solar System's Farthest Reaches], Popularmechanics.com, July 7, 2015 (retrieved 28 Oct 2015)</ref> Phase I projects selected were:<ref>NASA, [http://www.nasa.gov/feature/niac-2015-phase-i-and-phase-ii-selections NIAC 2015 Phase I and Phase II Selections] May 7, 2015 (retrieved 28 Oct 2015).</ref> *Engblom, William: Virtual Flight Demonstration of Stratospheric Dual-Aircraft Platform *Graf, John: Thirsty Walls - A new paradigm for air revitalization in life support *Hecht, Michael: A Tall Ship and a Star to Steer Her By *Lewis, John: In-Space Manufacture of Storable Propellants *Lubin, Philip: Directed Energy Propulsion for Interstellar Exploration ([[DEEP-IN]]) *Oleson, Steven: Triton Hopper: Exploring Neptune's Captured Kuiper Belt Object *Peck, Mason: Soft-Robotic Rover with Electrodynamic Power Scavenging *Plescia, Jeffrey: Seismic Exploration of Small Bodies *Paxton, Larry: CRICKET: Cryogenic Reservoir Inventory by Cost-Effective Kinetically Enhanced Technology *Sercel, Joel: APIS (Asteroid Provided In-Situ Supplies): 100MT Of Water from a Single Falcon 9 *Stoica, Adrian WindBots: persistent in-situ science explorers for gas giants *Tabirian, Nelson: Thin-Film Broadband Large Area Imaging System *Ulmer, Melville: Aperture: A Precise Extremely large Reflective Telescope Using Re-configurable Elements *Wang, Joseph: CubeSat with Nanostructured Sensing Instrumentation for Planetary Exploration *Youngquist, Robert: Cryogenic Selective Surfaces In addition, seven projects were selected for continuation into Phase II: *Atchison, Justin: Swarm Flyby Gravimetry *Chen, Bin: 3D Photocatalytic Air Processor for Dramatic Reduction of Life Support Mass and Complexity *Nosanov, Jeffrey: PERISCOPE: PERIapsis Subsurface Cave Optical Explorer *Oleson, Steven: Titan Submarine: Exploring the Depths of Kraken Mare *Paul, Michael: SCEPS in Space - Non-Radioisotope Power Systems for Sunless Solar System Exploration Missions *Stoica, Adrian: Trans-Formers for Lunar Extreme Environments: Ensuring Long-Term Operations in Regions of Darkness and Low Temperatures *Wiegmann, Bruce: Heliopause Electrostatic Rapid Transit System (HERTS) ===2016 NIAC project selections=== Phase I projects selected were:<ref>NASA, [http://www.nasa.gov/feature/niac-2016-phase-i-and-phase-ii-selections NIAC 2016 Phase I and Phase II Selections] Apr 7, 2016 (retrieved 30 Jun 2018).</ref> *Bayandor, Javid: Light Weight Multifunctional Planetary Probe for Extreme Environment Exploration and Locomotion *Bugga, Ratnakumar: Venus Interior Probe Using In-situ Power and Propulsion (VIP-INSPR) *Dunn, Jason: Reconstituting Asteroids into Mechanical Automata *Hughes, Gary: Molecular Composition Analysis of Distant Targets *Janson, Siegfried: Brane Craft *Mann, Chris: Stellar Echo Imaging of Exoplanets *Mueller, Robert: Mars Molniya Orbit Atmospheric Resource Mining *Ono, Masahiro: Journey to the Center of Icy Moons *Quadrelli, Marco: E-Glider: Active Electrostatic Flight for Airless Body Exploration *Rothschild, Lynn: Urban biomining meets printable electronics: end-to-end destination biological recycling and reprinting *Sauder, Jonathan: Automaton Rover for Extreme Environments (AREE) *Thomas, Stephanie: Fusion-Enabled Pluto Orbiter and Lander *VanWoerkom, Michael: NIMPH: Nano Icy Moons Propellant Harvester In addition, eight projects were selected for continuation into Phase II: *Bradford, John: Advancing Torpor Inducing Transfer Habitats for Human Stasis to Mars *Engblom, William: Flight Demonstration of Novel Atmospheric Satellite Concept *Kirtley, David: Magnetoshell Aerocapture for Manned Missions and Planetary Deep Space Orbiters *Lubin, Philip: Directed Energy for Interstellar Study *Rovey, Joshua: Experimental Demonstration and System Analysis for Plasmonic Force Propulsion *Skelton, Robert: Tensegrity Approaches to In-Space Construction of a 1g Growable Habitat *Ulmer, Melville: Further Development of Aperture: A Precise Extremely Large Reflective Telescope Using Re-configurable Elements *Youngquist, Robert: Cryogenic Selective Surfaces ===2017 NIAC project selections=== The fifteen projects selected for Phase I were:<ref>NASA, [https://www.nasa.gov/directorates/spacetech/niac/2017_Phase_I_Phase_II NIAC 2017 Phase I and Phase II Selections] Apr 6, 2017 (retrieved 30 Jun 2018).</ref> *Adam Arkin: A Synthetic Biology Architecture to Detoxify and Enrich Mars Soil for Agriculture *John Brophy: A Breakthrough Propulsion Architecture for Interstellar Precursor Missions *John-Paul Clarke : Evacuated Airship for Mars Missions *Heidi Fearn: Mach Effects for In Space Propulsion: Interstellar Mission *Benjamin Goldman : Pluto Hop, Skip, and Jump Global *Jason Gruber: Turbolift *Kevin Kempton : Phobos L1 Operational Tether Experiment (PHLOTE) *Michael LaPointe: Gradient Field Imploding Liner Fusion Propulsion System *John Lewis : Massively Expanded NEA Accessibility via Microwave-Sintered Aerobrakes *Jay McMahon: Dismantling Rubble Pile Asteroids with AoES (Area-of-Effect Soft-bots) *Raymond Sedwick: Continuous Electrode Inertial Electrostatic Confinement Fusion *Joel Sercel: Sutter: Breakthrough Telescope Innovation for Asteroid Survey Missions to Start a Gold Rush in Space *Slava Turyshev: Direct Multipixel Imaging and Spectroscopy of an exoplanet with a Solar Gravity Lens Mission *Robert Youngquist: Solar Surfing *Nan Yu: A direct probe of dark energy interactions with a solar system laboratory In addition, seven projects were selected for continuation into Phase II: *Ratnakumar Bugga: Venus Interior Probe Using In-situ Power and Propulsion (VIP-INSPR) *Gary Hughes: Remote Laser Evaporative Molecular Absorption Spectroscopy Sensor System *Siegfried Janson: Brane Craft Phase II *Chris Mann: Stellar Echo Imaging of Exoplanets *Jonathan Sauder: Automaton Rover for Extreme Environments (AREE) *Joel Sercel: Optical Mining of Asteroids, Moons, and Planets to Enable Sustainable Human Exploration and Space Industrialization *Stephanie Thomas: Fusion-Enabled Pluto Orbiter and Lander ===2018 NIAC project selections=== The sixteen projects selected for Phase I were:<ref>NASA, [https://www.nasa.gov/directorates/spacetech/niac/2018_Phase_I_Phase_II NIAC 2018 Phase I and Phase II Selections] Apr 30, 2018 (retrieved 30 Jun 2018).</ref> *Aliakbar Aghamohammadi: Shapeshifters from Science Fiction to Science Fact: Globetrotting from Titan's Rugged Cliffs to its Deep Seafloors *David Akin: Biobot: Innovative Offloading of Astronauts for More Effective Exploration *Jeffrey Balcerski: Lofted Environmental and Atmospheric Venus Sensors (LEAVES) *Sigrid Close: Meteoroid Impact Detection for Exploration of Asteroids (MIDEA) *Christine Hartzell: On-Orbit, Collision-Free Mapping of Small Orbital Debris *Chang-kwon Kang: Marsbee - Swarm of Flapping Wing Flyers for Enhanced Mars Exploration *John Kendra: Rotary Motion Extended Array Synthesis (R-MXAS) *Chris Limbach: PROCSIMA: Diffractionless Beamed Propulsion for Breakthrough Interstellar Missions *Gareth Meirion-Griffith: SPARROW: Steam Propelled Autonomous Retrieval Robot for Ocean Worlds *Hari Nayar: BALLET: BALloon Locomotion for Extreme Terrain *Lynn Rothschild: Myco-architecture off planet: growing surface structures at destination *Dmitry Savransky: Modular Active Self-Assembling Space Telescope Swarms *Nickolas Solomey: Astrophysics and Technical Study of a Solar Neutrino Spacecraft *Grover Swartzlander: Advanced Diffractive MetaFilm Sailcraft *Jordan Wachs: Spectrally-Resolved Synthetic Imaging Interferometer *Ryan Weed: Radioisotope Positron Propulsion In addition, nine projects were selected for continuation into Phase II: *Robert Adams: Pulsed Fission-Fusion (PuFF) Propulsion Concept *John Brophy: A Breakthrough Propulsion Architecture for Interstellar Precursor Missions *Devon Crowe: Kilometer Space Telescope (KST) *Jay McMahon: Dismantling Rubble Pile Asteroids with AoES (Area-of-Effect Soft-bots) *Steven Oleson: Triton Hopper: Exploring Neptune's Captured Kuiper Belt Object *John Slough: Spacecraft Scale Magnetospheric Protection from Galactic Cosmic Radiation *Slava Turyshev: Direct Multipixel Imaging and Spectroscopy of an Exoplanet with a Solar Gravity Lens Mission *Michael VanWoerkom: NIMPH: Nano Icy Moons Propellant Harvester *James Woodward: Mach Effect for In Space Propulsion: Interstellar Mission ===2019 NIAC project selections=== The twelve projects selected for Phase I were:<ref>{{cite web |url=https://www.nasa.gov/directorates/spacetech/niac/2019_Phase_I_Phase_II/ |title=NIAC 2019 Phase I and Phase II Selections |publisher=[[NASA]] |date=April 10, 2019 |access-date=April 11, 2019}}</ref> *Javid Bayandor: BREEZE- Bioinspired Ray for Extreme Environments and Zonal Exploration *Erik Brandon: Power Beaming for Long Life Venus Surface Missions *Ana Diaz Artiles: SmartSuit: A Hybrid, Intelligent, and Highly Mobile EVA Spacesuit for Next Generation Exploration Missions *Tom Ditto: Dual Use Exoplanet Telescope (DUET) *Yu Gu: Micro-Probes Propelled and Powered by Planetary Atmospheric Electricity (MP4AE) *Troy Howe: SPEAR Probe - An Ultra Lightweight Nuclear Electric Propulsion Probe for Deep Space Exploration *Noam Izenberg: RIPS: Ripcord Innovative Power System *Geoffrey Landis: Power for Interstellar Fly-by *Joel Sercel: Lunar-Polar Propellant Mining Outpost (LPMO): Affordable Exploration and Industrialization *John Slough: Crosscutting High Apogee Refueling Orbital Navigator (CHARON) for Active Debris Removal *George Sowers: Thermal Mining of Ices on Cold Solar System Bodies *Robert Staehle: Low-Cost SmallSats to Explore to Our Solar System's Boundaries In addition, six projects were selected for continuation into Phase II: *Tom Ditto: The High Étendue Multiple Object Spectrographic Telescope (THE MOST) *John Kendra: Rotary-Motion-Extended Array Synthesis (R-MXAS) *Chris Limbach: Self-Guided Beamed Propulsion for Breakthrough Interstellar Missions *Nickolas Solomey: Astrophysics and Technical Lab Studies of a Solar Neutrino Spacecraft Detector *Grover Swartzlander: [[Diffractive Lightsail]]s *Doug Willard: Solar Surfing Also, two projects were selected for Phase III: *William Whittaker: Robotic Technologies Enabling the Exploration of Lunar Pits *Joel Sercel: Mini Bee Prototype to Demonstrate the Apis Mission Architecture and Optical Mining Technology ===2020 NIAC project selections=== The sixteen projects selected for Phase I were:<ref>{{cite web |url=https://www.nasa.gov/directorates/spacetech/niac/2020_Phase_I_Phase_II/ |title=NIAC 2020 Phase I and Phase II Selections |publisher=[[NASA]] |date=April 7, 2020 |access-date=April 7, 2020}}</ref> *Saptarshi Bandyopadhyay: [[Lunar Crater Radio Telescope|LCRT - Lunar Crater Radio Telescope]] on the Far-Side of the Moon *John Christian: StarNAV: An Architecture for Autonomous Spacecraft Navigation by the Relativistic Perturbation of Starlight *Artur Davoyan: Extreme Metamaterial Solar Sails for Breakthrough Space Exploration *Caroline Genzale: Fueling a Human Mission to Mars *Davide Guzzetti: Flat Fabrication of Progressively Self-Assembling Space Systems *Benjamin Hockman: Gravity Poppers: Hopping Probes for the Interior Mapping of Small Solar System Bodies *Steven Howe: Pulsed Plasma Rocket: Shielded, Fast Transits for Humans to Mars *Troy Howe: High Irradiance Peltier Operated Tungsten Exo-Reflector (HI-POWER) *Gerald Jackson: Deceleration of Interstellar Spacecraft Utilizing Antimatter *Matthew Kuhns: Instant Landing Pads for Artemis Lunar Missions *Richard Linares: Dynamic Orbital Slingshot for Rendezvous with Interstellar Objects *[[Philip T. Metzger|Philip Metzger]]: Aqua Factorem: Ultra Low-Energy Lunar Water Extraction *Robert Moses: Advanced Aerocapture System for Enabling Faster-Larger Planetary Science & Human Exploration Missions *Eldar Noe Dobrea: Heat Exchange-Driven Aircraft for Low Altitude and Surface Exploration of Venus *Robert Romanofsky: Magneto-Inductive Communications for Ocean Worlds *Lynn Rothschild: An Astropharmacy In addition, six projects were selected for continuation into Phase II: *David Akin: Innovative Offloading of Astronauts for More Effective Exploration *Javid Bayandor: Lightweight Multifunctional Planetary Probe for Extreme Environment Exploration and Locomotion *Troy Howe: SPEAR Probe - An Ultra Lightweight Nuclear Electric Propulsion Probe for Deep Space Exploration *Masahiro Ono: Enceladus Vent Explorer *Joel Sercel: Lunar Polar Propellant Mining Outpost (LPMO): A Breakthrough for Lunar Exploration & Industry *Nan Yu: Gravity Observation and Dark Energy Detection Explorer in the Solar System Also, one project was selected for continuation into Phase III: *[[Slava Turyshev]]: Direct Multipixel Imaging and Spectroscopy of an Exoplanet with a [[solar gravitational lens|Solar Gravitational Lens]] Mission ===2021 NIAC project selections=== The sixteen projects selected for Phase I were:<ref>{{cite web |url=https://www.nasa.gov/general/niac-2021-phase-i-phase-ii-and-phase-iii-selections/ |title=NIAC 2021 Phase I, Phase II and Phase III Selections |publisher=[[NASA]] |date=February 25, 2021 |access-date=January 4, 2024}}</ref> *Sarbajit Banerjee: Regolith Adaptive Modification System (RAMs) to Support Early Extraterrestrial Planetary Landings (and Operations) *Sigrid Close: Exploring Uranus through SCATTER: Sustained ChipSat/CubeSat Activity Through Transmitted Electromagnetic Radiation *Amelia Greig: Ablative Arc Mining for [[In situ resource utilization|In-Situ Resource Utilization]] *Zachary Manchester: Kilometer-Scale Space Structures from a Single Launch *Patrick McGarey: PEDALS: Passively Expanding Dipole Array for Lunar Sounding *Quinn Morley: Autonomous Robotic Demonstrator for Deep Drilling (ARD3) *Christopher Morrison: [[Extrasolar object|Extrasolar Object]] Interceptor and Sample Return Enabled by Compact, Ultra Power Dense Radioisotope Batteries *E. Joseph Nemanick: Atomic Planar Power for Lightweight Exploration (APPLE) *Steven Oleson: A Titan Sample Return Using In-Situ Propellants *Marco Pavone: ReachBot: Small Robot for Large Mobile Manipulation Tasks in Martian Cave Environments *Ronald Polidan: FarView – An In Situ Manufactured Lunar Far Side Radio Observatory *Ethan Schaler: FLOAT — Flexible Levitation on a Track *Ethan Schaler: SWIM — Sensing with Independent Micro-swimmers *Jane Shevtsov: Making Soil for Space Habitats by Seeding Asteroids with Fungi *Charles Taylor: Light Bender *Joshua Vander Hook: Solar System Pony Express In addition, six projects were selected for continuation into Phase II: *Saptarshi Bandyopadhyay: [[Lunar Crater Radio Telescope|LCRT - Lunar Crater Radio Telescope]] on the Far-Side of the Moon *Lynn Rothschild: Mycotecture Off Planet *Kerry Nock: Pluto Hop, Skip, and Jump *Artur Davoyan: Extreme Solar Sailing for Breakthrough Space Exploration *Jeffrey Balcerski: Lofted Environmental Venus Sensors (LEAVES) *Peter Gural: Sutter Ultra: Breakthrough Space Telescope for Prospecting Asteroids Also, one project was selected for continuation into Phase III: *Nickolas Solomey: Cube-Sat Space Flight Test of a Neutrino Detector ===2022 NIAC project selections=== The twelve projects selected for Phase I were:<ref>{{cite web |url=https://www.nasa.gov/general/niac-2022-phase-i-and-phase-ii-selections/ |title=NIAC 2022 Phase I and Phase II Selections |publisher=[[NASA]] |date=February 18, 2022 |access-date=January 5, 2024}}</ref> *Darmindra Arumugam: Cryospheric Rydberg Radar *Steven Barrett: Silent, Solid-State Propulsion for Advanced Air Mobility Vehicles *Jason Benkoski: Combined Heat Shield and Solar Thermal Propulsion System for an [[Oberth effect|Oberth maneuver]] *Elena D’Onghia: CREW HaT: Cosmic Radiation Extended Warding using the [[Halbach array|Halbach Torus]] *Bonnie Dunbar: The Spacesuit Digital Thread: 4.0 Manufacture of Custom High Performance Spacesuits for the Exploration of Mars *Ivan Ermanoski: Breathing Mars Air: Stationary and Portable O2 Generation *Philip Lubin: Pi – [[Asteroid impact avoidance|Terminal Defense for Humanity]] *John Mather: Hybrid Observatory for Earth-like Exoplanets (HOEE) *Marcin Pilinski: In-situ Neutral-Optics Velocity Analyzer for Thermospheric Exploration (INOVATE) *Jonathan Sauder: Starburst: A Revolutionary Under-Constrained Adaptable Deployable Structure Architecture *Sara Seager: Venus Atmosphere and Cloud Particle Sample Return for Astrobiology *Mahmooda Sultana: SCOPE: ScienceCraft for Outer Planet Exploration In addition, five projects were selected for continuation into Phase II: *Javid Bayandor: BREEZE- Bioinspired Ray for Extreme Environments and Zonal Exploration *Zac Manchester: Kilometer-Scale Space Structures from a Single Launch *E Nemanick: Atomic Planar Power for Lightweight Exploration (APPLE) *Marco Pavone: ReachBot: Small Robot for Large Mobile Manipulation Tasks in Martian Cave Environments *Ethan Schaler: SWIM- Sensing with Independent Micro-swimmers Also, one project was selected for continuation into Phase III: *Amber Dubill: Diffractive Solar Sailing ===2023 NIAC Project Selections=== The fourteen projects selected for Phase I were:<ref>{{cite web |url=https://www.nasa.gov/general/niac-2023-phase-i-and-phase-ii-selections/ |title=NIAC 2023 Phase I and Phase II Selections |publisher=[[NASA]] |date=January 9, 2023 |access-date=January 5, 2024}}</ref> *Edward Balaban: Fluidic Telescope (FLUTE): Enabling the Next Generation of Large Space Observatories *Igor Bargatin: Photophoretic Propulsion Enabling Mesosphere Exploration *Theresa Benyo: Accessing Icy World Oceans Using Lattice Confinement Fusion Fast Fission *Zachary Cordero: Bend-Forming of Large Electrostatically Actuated Space Structures *Peter Curreri: Lunar South Pole Oxygen Pipeline *Artur Davoyan: Pellet-Beam Propulsion for Breakthrough Space Exploration *Ryan Gosse: New Class of Bimodal NTP/NEP with a Wave Rotor Topping Cycle Enabling Fast Transit to Mars *Congrui Jin: Biomineralization-Enabled Self-Growing Building Blocks for Habitat Outfitting on Mars *Mary Knapp: Great Observatory for Long Wavelengths (GO-LoW) *Quinn Morley: TitanAir: Leading-Edge Liquid Collection to Enable Cutting-Edge Science *Christopher Morrison: EmberCore Flashlight: Long Distance Lunar Characterization with Intense Passive X- and Gamma-ray Source *Heidi Newberg: Diffractive Interfero Coronagraph Exoplanet Resolver (DICER): Detecting and Characterizing All Earth-Like Exoplanets Orbiting Sun-Like Stars Within 10 pc *Stephen Polly: Radioisotope Thermoradiative Cell Power Generator *Ryan Weed: [[Aerogel]] Core Fission Fragment Rocket Engine In addition, six projects were selected for continuation into Phase II: *Darmindra Arumugam: Quantum Rydberg Radar for Surface, Topography, and Vegetation *Steven Barrett: Silent, Solid-State Propulsion for Advanced Air Mobility Vehicles *Philip Lubin: PI – Planetary Defense *Christopher Morrison: The Nyx Mission to Observe the Universe from Deep Space – Enabled by EmberCore, a High Specific Power RadioisotopeElectric Propulsion System *Ronald Polidan: FarView Observatory – A Large, In-Situ Manufactured, Lunar Far Side Radio Array *Lynn Rothschild: A Flexible, Personalized, On-Demand Astropharmacy No projects were selected for continuation into Phase III. ===2024 NIAC project selections=== The thirteen projects selected for Phase I were:<ref>{{cite web |url=https://www.nasa.gov/general/niac-2024-selections/ |title=NIAC 2024 Selections |publisher=[[NASA]] |date=January 4, 2023 |access-date=January 5, 2024}}</ref> *Matthew McQuinn: Solar System-Scale VLBI to Dramatically Improve Cosmological Distance Measurements *Kenneth Carpenter: A Lunar Long-Baseline Optical Imaging Interferometer: Artemis-enabled Stellar Imager (AeSI) *Alvaro Romero-Calvo: Magnetohydrodynamic Drive for Hydrogen and Oxygen Production in Mars Transfer *James Bickford: Thin Film Isotope Nuclear Engine Rocket (TFINER) *Ge-Cheng Zha: [[Mars Aerial and Ground Global Intelligent Explorer (MAGGIE)]] *Steven Benner: Add-on to Large-scale Water Mining Operations on Mars to Screen for Introduced and Alien Life *Lynn Rothschild: Detoxifying Mars: The Biocatalytic Elimination of Omnipresent Perchlorates *Thomas Eubanks: Swarming [[Proxima Centauri]]: Coherent Picospacecraft Swarms Over Interstellar Distances *Beijia Zhang: LIFA: Lightweight Fiber-based Antenna for Small Sat-Compatible Radiometry *Ryan Sprenger: A Revolutionary Approach to Interplanetary Space Travel: Studying Torpor in Animals for Space-health in Humans (STASH) *Geoffrey Landis: Sample Return from the Surface of Venus *Peter Cabauy: Autonomous Tritium Micropowered Sensors *Aaswath Pattabhi Raman: Electro-luminescently Cooled Zero-boil-off Propellant Depots Enabling Crewed Exploration of Mars ==See also== *[[Advanced Concepts Team]] *[[Advanced Propulsion Physics Laboratory]] ==References== {{Reflist|30em}} ==External links== * [http://www.niac.usra.edu/ NASA Institute for Advanced Concepts site] at USRA ** [https://web.archive.org/web/20060115003735/http://www.niac.usra.edu/studies/studies.jsp List of NIAC studies funded 1998-2007] * [https://www.nasa.gov/stmd-the-nasa-innovative-advanced-concepts-niac/ NASA Innovative Advanced concepts site] ** [https://www.nasa.gov/niac-funded-studies/ List of NIAC studies funded 2012-present] {{NASA space program}} {{Authority control}} [[Category:NASA programs]] [[Category:Futures studies organizations]] 1bfemg7rien93u2blbwlemmpu5twc0l 1995 Pop Train Lady of Pop Awards 0 175461 768635 742506 2026-10-16T20:18:54Z Island Hines 76160 768635 wikitext text/x-wiki {{Short description|American awards show}} {{Infobox award | name = Pop Train Lady of Pop Awards | host = [[Kathy Griffin]], [[Lenny Kravitz]], [[Cyndi Lauper]] | most_awards = [[Madonna]] (4) | date = {{start date|1995|08|6}} | location = [[Santa Monica Civic Auditorium]], [[Santa Monica, California]] | country = [[United States]] | year = 1995 | website = {{URL|http://poptrain.com}} | network = [[WGN America]] | previous = | main = 1995 | next = [[1996 Pop Train Lady of Pop Awards|1996]] }} The '''1995 [[Pop Train Lady of Pop Awards]]''' were held on August 6, 1995 at the [[Santa Monica Civic Auditorium]] in [[Santa Monica, California]]. The program was hosted by [[Kathy Griffin]], [[Lenny Kravitz]], and [[Cyndi Lauper]]. ==Special awards== ==Winners and nominees== ==Performances== ==Presenters== ==References== {{Reflist}} [[Category:Pop Train Lady of Pop Awards]] [[Category:1995 in American music]] [[Category:1995 awards in the United States|Pop]] bi4dwxzqwb6n2e9ozl1yrxcqjfgxxjt PCM (album) 0 175514 768677 767151 2026-10-17T01:17:09Z ~2026-55593-43 76252 /* Track listing */ 768677 wikitext text/x-wiki {{Use mdy dates|date=June 2025}} {{Infobox album | name = PCM | type = studio | artist = [[the Pussycat Moms]] | cover = | released = {{Start date|2005|09|12}} | recorded = 2004–2005 | genre = *[[Comedy music|Comedy pop]] *[[dance-pop]] *[[contemporary R&B|R&B]] *[[Pop music|pop]] | length = | label = *[[Violator Records|Violator]] *[[Interscope Records|Interscope]] | producer = *[[Swizz Beatz]] *[[Karen Poole]] *[[The Underdogs (music producers)|The Underdogs]] *[[Mariah Carey]] *[[L.A. Reid]] *[[Manuel Seal]] *[[Rob Knox (producer)|Rob Knox]] *[[The Neptunes]] *[[Stargate (music producers)|Stargate]] *[[Wyclef Jean]] *[[Jaheim Hines]] *[[Stuart Price]] | chronology = The Pussycat Moms | prev_title = | prev_year = | next_title = [[PCM Live from London]] | next_year = 2006 | misc = {{Singles | name = PCM | type = studio | single1 = [[Jenny from the Block (song)|Jenny from the Block]] | single1date = April 19, 2005 | single2 = [[Sober (The Pussycat Moms song)|Sober]] | single2date = September 26, 2005 | single3 = [[If You Had My Love (song)|If You Had My Love]] | single3date = February 6, 2006 | single4 = [[Get Right (The Pussycat Moms song)|Get Right]] | single4date = April 11, 2006 | single5 = [[All Good Things (Come to an End) (song)|All Good Things (Come to an End)]] | single5date = September 9, 2006 | single6 = [[Love Don't Cost a Thing (The Pussycat Moms song)|Love Don't Cost a Thing]] | single6date = October 16, 2006 }} }} '''PCM''' is the debut [[studio album]] by American comedy [[girl group]] [[the Pussycat Moms]], released on September 12, 2005 by [[Violator Records]] and [[Interscope Records]]. ==Background and recording== == Composition == == Promotion == === Singles === === Live performances === === Touring === == Track listing == {{Track listing | extra_column = Producer(s) | total_length = | headline = ''PCM'' − {{nobold|Standard edition}}<ref name="LinerNotes"/> | title1 = [[Jenny from the Block (song)|Jenny from the Block]] | note1 = featuring [[Ludacris]] | writer1 = {{flatlist| *[[Gary Numan]] *[[Pharrell Williams]] *[[Chad Hugo]] *Christopher Bridges }} | extra1 = [[The Neptunes]] | length1 = 4:34 | title2 = [[If You Had My Love (song)|If You Had My Love]] | note2 = featuring [[Jaheim Hines]] | writer2 = {{flatlist| *[[Jaheim Hines]] *[[Luis Bass]] *[[Karen Poole]] *[[Doug Ingle]] }} | extra2 = {{flatlist| *Jaheim Hines *Luis Bass{{ref|a|[a]}} *[[L.A. Reid]]{{ref|a|[a]}} }} | length2 = 3:50 | title3 = [[Love Don't Cost a Thing (The Pussycat Moms song)|Love Don't Cost a Thing]] | note3 = featuring [[Wyclef Jean]] | writer3 = {{flatlist| *[[Wyclef Jean]] *[[Jerry Duplessis]] *[[Ne-Yo|Shaffer Smith]] *LaTavia Parker }} | extra3 = {{flatlist| *Wyclef Jean *Jerry "Wonda" Duplessis *[[Ne-Yo]]{{ref|b|[b]}} *Reid{{ref|h|[h]}} }} | length3 = 4:44 | title4 = [[Sober (The Pussycat Moms song)|Sober]] | writer4 = {{flatlist| *[[L.A. Reid|Antonio Reid]] *[[Andre Harrell]] *[[Rick Nowels]] }} | extra4 = {{flatlist| *Reid *Andre Harrell{{ref|d|[d]}} }} | length4 = 3:28 | title5 = [[Get Right (The Pussycat Moms song)|Get Right]] | writer5 = {{flatlist| *[[Swizz Beatz|Kasseem Dean]] *[[Rob Knox (producer)|Robin Tadross]] *[[Cathy Dennis]] *[[Maya Rudolph]] }} | extra5 = {{flatlist| *[[Swizz Beatz]] *[[Rob Knox (producer)|Rob Knox]] *Reid *Harrell{{ref|d|[d]}} *[[Jimmy Iovine]]{{ref|d|[d]}} }} | length5 = 3:46 | title6 = [[All Good Things (Come to an End) (song)|All Good Things (Come to an End)]] | writer6 = {{flatlist| *[[Dallas Austin]] *Rudolph *Poole *[[Mima Stilwell]] }} | extra6 = {{flatlist| *Dallas Austin *Reid{{ref|c|[c]}}}} | length6 = 4:40 | title7 = Extraordinary Girl | writer7 = {{flatlist| *[[Mariah Carey]] *[[The Underdogs (record producers)|Damon Thomas]] *[[Harvey Mason Jr.]] *[[Manuel Seal]] *[[David Foster]] *[[The Keane Brothers|Tom Keane]] *[[Cynthia Weil]] }} | extra7 = {{flatlist| *Mariah Carey *[[The Underdogs (record producers)|The Underdogs]] *Manuel Seal *Reid{{ref|b|[b]}} }} | length7 = 3:48 | title8 = Whatever You Wanna Do | writer8 = [[Jack Warren (songwriter)|Jack Warren]] | extra8 = {{flatlist| *Reid *Harrell{{ref|d|[d]}} }} | length8 = 3:58 | title9 = Letterbomb | writer9 = {{flatlist| *Smith *[[Stargate (record producers)|Mikkel S. Eriksen]] *[[Stargate (record producers)|Hallgeir Rustan]] *[[Stargate (record producers)|Tor Erik Hermansen]] }} | extra9 = {{flatlist| *[[Stargate (record producers)|Stargate]] *Ne-Yo{{ref|b|[b]}} *Reid{{ref|a|[a]}} }} | length9 = 3:35 | title10 = Song of the Century | writer10 = {{flatlist| *Reid *Harrell }} | extra10 = {{flatlist| *Reid *Harrell{{ref|d|[d]}} }} | length10 = 2:30 | title11 = Mass Hysteria"/"Modern World | writer11 = {{flatlist| *Reid *Harrell *[[Linda Perry]] *[[Dan Shea (producer)|Dan Shea]] }} | extra11 = {{flatlist| *Reid *Harrell{{ref|d|[d]}} *Linda Perry{{ref|e|[e]}} }} | length11 = 3:28 | title12 = East Jesus Nowhere | writer12 = {{flatlist| *Reid *Harrell }} | extra12 = {{flatlist| *Reid *Harrell{{ref|d|[d]}} }} | length12 = 4:22 }} '''Notes''' * {{sup|{{note|a|[a]}}}} signifies an additional producer. * {{sup|{{note|b|[b]}}}} signifies a vocal producer. * {{sup|{{note|c|[c]}}}} signifies an additional assistant producer. * {{sup|{{note|d|[d]}}}} signifies a co-producer. * {{sup|{{note|e|[e]}}}} signifies "Mass Hysteria" beat producer. * {{sup|{{note|f|[f]}}}} signifies an additional vocal producer. * {{sup|{{note|g|[g]}}}} signifies a remixer. * {{sup|{{note|h|[h]}}}} signifies an assistant producer. ==Personnel== ==Charts== ===Weekly charts=== === Decade-end charts === ===Year-end charts=== ==Certifications and sales== ==Release history== ==See also== ==References== {{Reflist|30em}} {{The Pussycat Moms}} {{Authority control}} {{DEFAULTSORT:Pcm}} [[Category:2005 debut albums]] [[Category:The Pussycat Moms albums]] [[Category:Violator Records albums]] [[Category:Interscope Records albums]] [[Category:Albums produced by Swizz Beatz]] [[Category:Albums produced by L.A. Reid]] [[Category:Albums produced by Jerry Duplessis]] [[Category:Albums produced by Rob Knox]] [[Category:Albums produced by Dallas Austin]] [[Category:Albums produced by Jimmy Iovine]] [[Category:Albums produced by Luis Bass]] [[Category:Albums produced by Wyclef Jean]] [[Category:Albums produced by Jaheim Hines]] [[Category:Albums produced by Stuart Price]] 8a9qzdmn3i5zici31iikbmicmlddxxa 7/24 0 177741 768623 763365 2026-10-16T17:14:22Z Jaheim Ember 76112 /* Track listing */ 768623 wikitext text/x-wiki {{short description|2006 studio album by Backstreet Girls}} {{about|the Backstreet Girls album|the date|July 24|other uses|724 (disambiguation)}} {{good article}} {{Use mdy dates|date=September 2019}} {{Infobox album | name = 7/24 | type = studio | artist = [[Backstreet Girls (girl group)|Backstreet Girls]] | cover = | border = | alt = | caption = | released = {{start date|2006|05|27}} | recorded = September–December 2005 | venue = | studio = | genre = {{flatlist| * [[Pop music|Pop]] * [[tropical house]] * [[comedy pop]] * [[Contemporary R&B|R&B]] }} | length = | label = {{flatlist| * [[Columbia Records|Columbia]] * [[Syco Music|Syco]] }} | producer = {{flatlist| * [[Rob Dougan]] * [[Rhett Lawrence]] * [[Manuel Seal]] * Eric Seats * Jeremy Harding * [[Linda Perry]] * Malik Pendleton * Rapture Stewart * [[Dallas Austin]] * [[Jimmy Harry]] * [[Soulshock and Karlin]] * [[Just Blaze]] * [[Jimmy Jam and Terry Lewis]] }} | prev_title = [[Reflective (Backstreet Girls album)|Reflective]] | prev_year = 2005 | next_title = [[Backstreet Girls (album)|Backstreet Girls]] | next_year = 2007 | misc = {{Singles | name = 7/24 | type = Studio | single1 = [[Irresistible (Backstreet Girls song)|Irresistible]] | single1date = February 26, 2006 | single2 = [[All Nite (Don't Stop) (song)|All Nite (Don't Stop)]] | single2date = May 31, 2006 | single3 = [[Satisfied (Backstreet Girls song)|Satisfied]] | single3date = September 27, 2006 }} }} '''''7/24''''' is the second studio album by American comedy girl group [[Backstreet Girls (girl group)|Backstreet Girls]], released by [[Syco Music]] and [[Columbia Records]] on May 27, 2006. The record is the follow-up to the group's debut studio album ''[[Reflective (Backstreet Girls album)|Reflective]]'' (2005). Its lyrics discuss themes of [[female empowerment]] and love. It features guest appearances by American [[dancehall]] and [[hip hop]] artists [[Elephant Man]], [[Sean Paul]] and [[Method Man]], and collaborations with [[Record producer|producers]] [[Manuel Seal]], [[Dallas Austin]] and [[Jimmy Jam and Terry Lewis]]. ''7/24'' is primarily a [[Pop music|pop]], [[tropical house]] and [[Contemporary R&B|R&B]] record that includes elements of [[reggae]], [[funk]], [[electronic dance music]], [[hip hop]] and [[Trap music (EDM)|trap]]. Unlike the genres explored on ''Reflective'', ''7/24''{{'s}} songs incorporate new genres like tropical house. This is the first Backstreet Girls album to feature [[Carmen Electra]] before she left the group in December 2006 to pursue a solo career. == Background and production == ==Recording== ==Title and artwork== ==Composition== ===Music and lyrics=== ===Songs and lyrical content=== == Release and promotion == == Singles == ===Promotional singles=== == Track listing == {{Track listing | headline = Standard edition<ref name = "Album booklet">{{cite AV media notes |title = 7/24 |year = 2006 |type = booklet |publisher = [[Syco Music|Syco]]}}</ref> | extra_column = Producer(s) | total_length = | title_width = 30% | writing_width = 70% | title1 = [[Satisfied (Backstreet Girls song)|Satisfied]] | writer1 = {{hlist|[[Pink (singer)|Alecia Moore]]|[[Rhett Lawrence]]|[[Jimmy Harry]]}} | extra1 = {{hlist|[[Jimmy Harry]]|[[Rhett Lawrence]]|[[Siobhan Fahey]]{{ref|a|[a]}}}} | length1 = | title2 = [[Irresistible (Backstreet Girls song)|Irresistible]] | note2 = featuring [[Elephant Man]] | writer2 = {{hlist|Eric Seats|[[Tweet (singer)|Clarlene Keys]]|[[Elephant Man|O'Neil Bryan]]|[[Timbaland & Magoo|Melvin Barcliff]]|Rapture Stewart|Hannon Lane}} | extra2 = {{hlist|Eric Seats|Rapture Stewart|[[Mary Brown (songwriter)|Mary Brown]]{{ref|a|[a]}}}} | length2 = | title3 = [[Models (Backstreet Girls song)|Models]] | writer3 = {{hlist|Moore|Lawrence|Harry}} | extra3 = {{hlist|Harry|Fahey{{ref|a|[a]}}}} | length3 = | title4 = [[Candy (Backstreet Girls song)|Candy]] | writer4 = {{hlist|[[Jimmy Jam and Terry Lewis|James Harris III]]|[[Jimmy Jam and Terry Lewis|Terry Lewis]]|[[Dallas Austin]]|[[Rebbie Jackson]]|[[Debra Killings]]}} | extra4 = {{hlist|[[Jimmy Jam and Terry Lewis]]|[[Dallas Austin]]}} | length4 = | title5 = Wild Horses | writer5 = {{hlist|[[Wayne Hector]]|Barcliff|[[Soulshock|Carsten Schack]]|[[Kenneth Karlin]]|[[Louis Biancaniello]]|[[Sam Watters]]}} | extra5 = {{hlist|[[Soulshock and Karlin]]|[[Louis Biancaniello]]|[[Sam Watters]]|[[Wayne Hector]]{{ref|a|[a]}}}} | length5 = | title6 = [[All Nite (Don't Stop (song)|All Nite (Don't Stop)]] | note6 = featuring [[Sean Paul]] | writer6 = {{hlist|Harris III|Lewis|Jason Henriques|Jeremy Harding|[[Cham (singer)|Damon Beckett]]|[[Just Blaze|Justin Smith]]|[[Solange Knowles]]|[[Sean Paul|Sean Henriques]]|[[Babyface (musician)|Kenneth Edmonds]]|[[Pharrell Williams]]|[[Chad Hugo]]}} | extra6 = {{hlist|Jimmy Jam and Terry Lewis|Jeremy Harding|[[Just Blaze]]{{ref|b|[b]}}}} | length6 = | title7 = Money | writer7 = {{hlist|Harris III|Lewis|Austin|Jackson|Killings|Smith}} | extra7 = {{hlist|Jimmy Jam and Terry Lewis|Austin}} | length7 = | title8 = Watch Me Go | writer8 = {{hlist|[[Morris Day]]|[[Jesse Johnson (musician)|Jesse Johnson]]|[[Jellybean Johnson]]}} | extra8 = Jimmy Jam and Terry Lewis | length8 = | title9 = Waiting | writer9 = {{hlist|Harris III|Lewis|Moore|[[Linda Perry]]|[[Cathy Dennis]]}} | extra9 = {{hlist|Jimmy Jam and Terry Lewis|[[Linda Perry]]|Brown{{ref|a|[a]}}}} | length9 = | title10 = Release Yo' Self | note10 = featuring [[Method Man]] | writer10 = {{hlist|[[Rob Dougan]]|[[Amerie|Amerie Rogers]]|[[Street Life (rapper)|Patrick Charles]]|[[Method Man|Clifford Smith]]}} | extra10 = {{hlist|[[Rob Dougan]]|[[Jack Knight (songwriter)|Jack Knight]]{{ref|a|[a]}}}} | length10 = }} ==Notes== * <sup>{{note|a|[a]}}</sup> signifies a vocal producer. * <sup>{{note|b|[b]}}</sup> signifies an additional producer. ===Sample credits=== * "All Nite (Don't Stop)" contains a portion of the composition "[[There She Goes (Babyface song)|There She Goes]]", written by [[Babyface (musician)|Kenneth Edmonds]], [[Pharrell Williams]] and [[Chad Hugo]]. == Personnel == == Charts == === Weekly charts === === Year-end charts === == Certifications and sales == ==Notes== {{reflist|group=note}} == References == {{Reflist}} {{Backstreet Girls (girl group)|state=collapsed}} {{Authority control}} {{DEFAULTSORT:7 24}} [[Category:2006 albums]] [[Category:Backstreet Girls (girl group) albums]] [[Category:Columbia Records albums]] [[Category:Tropical house albums]] [[Category:House music albums by American artists]] [[Category:Contemporary R&B albums by American artists]] jeikr0m3z0gzlp24nqx4f5kv2oelfai Backstreet Girls (album) 0 177745 768624 767371 2026-10-16T17:14:43Z Jaheim Ember 76112 /* Track listing */ 768624 wikitext text/x-wiki {{About|the self-titled album by Backstreet Girls|other albums by Backstreet Girls|Backstreet Girls discography}} {{Use mdy dates|date=September 2017}} {{Infobox album | name = Backstreet Girls | type = studio | artist = [[Backstreet Girls (girl group)|Backstreet Girls]] | cover = | alt = | border = | released = {{Start date|2007|08|25}} | recorded = 2007 | studio = | genre = {{flatlist| <!--Don't add genre without CITATION--> *[[Pop music|Pop]] *[[Hip-hop|hip hop]] *[[comedy pop]] *[[Contemporary R&B|R&B]] }} | length = | label = {{Flatlist| * [[Columbia Records|Columbia]] * [[Syco Music|Syco]] }} | producer = {{Flatlist| * Eric Seats * Rapture Stewart * [[Sean Garrett]] * [[DJ Toomp]] * Malik Pendleton * [[Brian Alexander Morgan]] * [[Soulshock and Karlin]] * [[The Runners (production duo)|The Runners]] * CKB * [[Kara DioGuardi]] * [[Lester Mendez]] }} | prev_title = [[7/24]] | prev_year = 2006 | next_title = | next_year = | misc = {{Singles | name = Backstreet Girls | type = studio | single1 = [[Push (Backstreet Girls song)|Push]] | single1date = June 2, 2007 | single2 = [[Rock with U (song)|Rock with U]] | single2date = September 19, 2007 }} }} '''''Backstreet Girls''''' is the third studio album by American comedy girl group [[Backstreet Girls (girl group)|Backstreet Girls]], released on August 25, 2007, through [[Syco Music]] and [[Columbia Records]]. The band's only album not to feature [[Carmen Electra]], who left in December 2006 to pursue a solo career, its lyrics discuss themes of female empowerment, confidence, love and unity. the group assumed creative control over their third album and co-wrote half of its songs. The album features a guest appearance by rapper [[Jeezy|Young Jeezy]] and collaborations with several notable [[Record producer|producer]]s such as Eric Seats, who contributed to their 2006 smash hit "[[Irresistible (Backstreet Girls song)|Irresistible]]", along with [[Sean Garrett]] and [[DJ Toomp]]. Test edit ==Background and conception== ==Writing and recording== ==Composition== ===Music and lyrics=== ===Songs and lyrical content=== ==Release and promotion== ==Singles== ===Promotional singles=== ==Track listing== {{Track listing | headline = Standard edition<ref name = "album booklet">{{cite AV media notes |others = Backstreet Girls |title = Backstreet Girls |year = 2007 |type = booklet |publisher = [[Syco Music|Syco]]}}</ref> | extra_column = Producer(s) | total_length = | title_width = 25% | writing_width = 75% | title1 = [[Push (Backstreet Girls song)|Push]] | note1 = featuring [[Jeezy|Young Jeezy]] | writer1 = {{hlist|Eric Seats|Rapture Stewart|[[Tweet (singer)|Charlene Keys]]|[[Jeezy|Jay Jenkins]]}} | extra1 = {{hlist|Eric Seats|Rapture Stewart|Aaron Renner{{ref|b|[b]}}}} | length1 = | title2 = [[Rock with U (song)|Rock with U]] | writer2 = {{hlist|Seats|Stewart|[[Kara DioGuardi]]|[[Beyoncé|Beyoncé Knowles]]|[[Rich Harrison]]|[[Jay-Z|Shawn Carter]]|[[Eugene Record]]}} | extra2 = {{hlist|Seats|Stewart|[[Kara DioGuardi]]{{ref|a|[a]}}|Pat Thrall{{ref|b|[b]}}}} | length2 = | title3 = Breathe on Me | writer3 = {{hlist|[[Jenny McCarthy]]|[[Pamela Anderson]]|[[Jenna Jameson]]|[[Cindy Crawford]]|[[Warryn Campbell]]|William Odum|[[Keri Lewis]]|[[Tamar Braxton]]|[[Sam Salter]]}} | extra3 = {{hlist|[[Warryn Campbell|Warryn "Baby Dubb" Campbell]]|William "Billy" Odum{{ref|c|[c]}}|[[Keri Lewis]]{{ref|b|[b]}}|[[Sam Salter]]{{ref|b|[b]}}}} | length3 = | title4 = Touch of My Hand | writer4 = {{hlist|McCarthy|Anderson|Jameson|Crawford|Charles Bereal|Kenneth Bereal|[[Rick Nowels]]}} | extra4 = {{hlist|CKB|[[Rick Nowels]]}} | length4 = | title5 = [[In My Pocket (song)|In My Pocket]] | writer5 = {{hlist|[[The Runners (production duo)|Andrew Harr]]|[[The Runners (production duo)|Jermaine Jackson]]|[[Karen Poole]]|Johnny Douglas}} | extra5 = {{hlist|[[The Runners (production duo)|The Runners]]|[[Karen Poole]]{{ref|b|[b]}}|Johnny Douglas{{ref|b|[b]}}}} | length5 = | title6 = The Hook Up | writer6 = {{hlist|McCarthy|Anderson|Jameson|Crawford|[[Teddy Bishop]]|[[Peter Biker]]|[[Soulshock|Carsten Schack]]|[[Kenneth Karlin]]}} | extra6 = {{hlist|[[Soulshock and Karlin]]|[[Teddy Bishop]]}} | length6 = | title7 = [[Someone to Call My Lover (song)|Someone to Call My Lover]] | writer7 = {{hlist|[[Damon Sharpe]]|[[Lester Mendez]]|[[Cutfather|Mich Hansen]]|Joe Belmaati|[[Lucas Secon]]}} | extra7 = {{hlist|[[Lester Mendez]]|[[Cutfather & Joe]]}} | length7 = | title8 = [[Feedback (Backstreet Girls song)|Feedback]] | writer8 = {{hlist|[[DJ Toomp|Aldrin Davis]]|[[Sean Garrett]]}} | extra8 = {{hlist|[[DJ Toomp]]|[[Sean Garrett]]}} | length8 = | title9 = Shadow | writer9 = {{hlist|McCarthy|Anderson|Jameson|Crawford|Bereal|Bereal|Nowels|[[John Legend|John Stephens]]|[[Kanye West]]|[[Ja Rule|Jeffrey Atkins]]|[[Channel 7 (musician)|Marcus Vest]]|[[Irv Gotti|Irving Lorenzo]]}} | extra9 = {{hlist|CKB|Rick Nowels}} | length9 = | title10 = Outrageous | writer10 = {{hlist|McCarthy|Anderson|Jameson|Crawford|Charles Pendleton|[[Brian Alexander Morgan]]|[[Mike Spencer]]}} | extra10 = {{hlist|Malik Pendleton|[[Brian Alexander Morgan]]{{ref|a|[a]}}|[[Chris Godbey]]{{ref|b|[b]}}}} | length10 = }} '''Notes''' * <sup>{{note|a|[a]}}</sup> signifies a co-producer. * <sup>{{note|b|[b]}}</sup> signifies a vocal producer. * <sup>{{note|c|[c]}}</sup> signifies an additional producer. '''Sample credits''' * "Rock with U" contains a portion of the composition "[[Crazy in Love]]", written by [[Beyoncé|Beyoncé Knowles]], [[Rich Harrison]], [[Jay-Z|Shawn Carter]] and [[Eugene Record]], performed by [[Beyoncé]] featuring [[Jay-Z]]. * "Shadow" contains a portion of the composition "[[Always on Time]]", written by [[Ja Rule|Jeffrey Atkins]], [[Channel 7 (musician)|Marcus Vest]] and [[Irv Gotti|Irving Lorenzo]], performed by [[Ja Rule]] featuring [[Ashanti (singer)|Ashanti]], which interpolates "[[Used to Love U]]", performed by [[John Legend]], written by [[John Legend|John Stephens]] and [[Kanye West]]. ==Credits and personnel== ==Charts== ===Weekly charts=== ===Year-end charts=== == Release history == ==Notes and references== {{Notelist}} {{Reflist}} {{Backstreet Girls (girl group)|state=collapsed}} {{Authority control}} [[Category:2007 albums]] [[Category:Columbia Records albums]] [[Category:Backstreet Girls (girl group) albums]] [[Category:Syco Music albums]] [[Category:Albums produced by Sean Garrett]] [[Category:Albums produced by Cutfather & Joe]] [[Category:Albums produced by Teddy Bishop (music producer)]] 1uhtb5rdcsjmz6tiapeb08o4t19duiu User:Nardog/sandbox11.js 2 178772 768678 768564 2026-10-17T01:41:48Z Nardog 40946 768678 javascript text/javascript mw.hook('wikipage.diff').remove(window.sdcb); mw.hook('wikipage.diff.wikitextBodyUpdate').remove(window.sdcbu); $('.smartdiff-link').contents().unwrap().end().remove(); $(':is(.diff-addedline, .diff-addedline, .diff-context) > div, .mw-diff-inline-added, .mw-diff-inline-deleted, .mw-diff-inline-changed').contents().each(function () { if (this.previousSibling && this.previousSibling.tagName === this.tagName) { this.previousSibling.textContent += this.textContent; this.remove(); } }); window.smartdiffTemplates = [ { names: ['T', 'Tl'], namespace: 10, forceNs: true, end: 1 }, { names: ['Tlx'], namespace: 10, end: 1 }, { names: ['U'], prefix: 'Special:Contributions/', end: 1 }, { names: ['Re', 'Reply to', 'Ping'], prefix: 'Special:Contributions/' }, { names: ['About'], start: 3, skipEven: true }, { names: ['For'], start: 2 }, { names: ['Other uses', 'Otheruses'], end: 1 }, { names: ['Section link', 'Slink'], end: 1 }, { names: ['Redirect'], skipEven: true, noRedirectEnd: 1 }, { names: ['Shortcut'], noRedirectStart: 1 }, { names: ['Tracked', 'Phab'], prefix: 'phab:', end: 1 }, { names: [ 'Distinguish', 'Main', 'Main article', 'Further', 'See also', 'Seealso' ] }, { names: ['Ll'], end: 1 } ]; mw.loader.using([ 'mediawiki.util', 'mediawiki.Title', 'mediawiki.api' ], () => { mw.loader.addStyleTag(`body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external) { color: #36b; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):visited { color: #636; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):active { color: #b63; }`); class SmartDiff { constructor($diff) { this.now = performance.now(); this.$diff = $diff; this.isView = mw.config.get('wgNamespaceNumber') !== -1 && mw.config.get('wgAction') === 'view' && $diff.nextAll().is('.diff-hr'); [ ['old', '#mw-diff-otitle1 a, #differences-prevlink'], ['new', '#mw-diff-ntitle1 a, #differences-nextlink'] ].forEach(([side, selector]) => { let link = this.$diff[0].querySelector(selector); let pn = link && mw.util.getParamValue('title', link.search); if (pn) { this[side] = { pn, ns: mw.Title.newFromText(pn).getNamespaceId() }; } }); this.isSamePage = this.old?.pn === this.new?.pn; this.titles = {}; this.noRedirLinks = new WeakSet(); SmartDiff.sds.set($diff[0], this); this.init(); } async init($rows = this.$diff) { this.side = 'old'; for (let div of $rows.find( '.diff-deletedline > div, .mw-diff-inline-deleted' )) { await this.processLine(div); } this.side = 'new'; for (let div of $rows.find( '.diff-addedline > div, .mw-diff-inline-added, .mw-diff-inline-context' )) { await this.processLine(div); } for (let div of $rows.find( '.mw-diff-inline-changed, .mw-diff-inline-moved' )) { await this.processLine(div, true); } let $contexts = $rows.find('.diff-context > div'), clones = []; for (let [i, div] of $contexts.get().entries()) { if (i % 2) { this.side = 'new'; if (this.sidePropUsed) { await this.processLine(div); } else if (this.divHasLink) { div.replaceChildren(...$contexts.eq(i - 1).contents().clone()); clones.push(div); } } else { this.side = 'old'; this.sidePropUsed = false; await this.processLine(div); } } $(clones).find('.smartdiff-link[title]').each((_, link) => { this.titles[link.title]?.links.push(link); }); this.queryTitles(); if (this.hasError) { mw.notify('SmartDiff error', { type: 'warn' }); } console.log(performance.now() - this.now); } async processLine(div, isInlineChange) { this.divHasLink = false; let tokens; if (isInlineChange) { tokens = this.tokenize( div, 'del, .mw-diff-movedpara-left, .mw-diff-movedpara-right' ); this.side = 'new'; await this.exec(tokens); this.escapeTags(tokens, 'ins'); this.unescapeTags(tokens, 'del'); this.side = 'old'; await this.exec(tokens, true); this.unescapeTags(tokens); } else { tokens = this.tokenize(div); await this.exec(tokens); } if (!this.divHasLink) return; try { let newDiv = this.unescape(tokens); this.verify(div, newDiv); div.replaceChildren(...newDiv.childNodes); } catch (e) { debugger; if (typeof e === 'string') { this.hasError = true; console.warn(`SmartDiff error: ${e}`); } else { throw e; } } } tokenize(el, escSelector) { return [...el.childNodes].flatMap(node => { if (node.nodeType === 3) { return node.textContent.split('').map(s => ({ s })); } if (node.nodeType !== 1) { return []; } if (escSelector && node.matches(escSelector)) { return [ { openingTag: node }, { esc: this.tokenize(node, escSelector), tag: node }, { closingTag: node } ]; } return [ { openingTag: node }, ...this.tokenize(node, escSelector), { closingTag: node } ]; }); } escapeTags(tokens, selector) { let openTags = [], data = []; tokens.forEach((token, i) => { if (token.openingTag?.matches(selector)) { openTags.push([token.openingTag, i + 1]); } else if (token.closingTag && openTags.length && token.closingTag.tagName === openTags.at(-1)[0].tagName ) { data.push([...openTags.pop(), i]); } }); data.reverse().forEach(([tag, start, end]) => { let token = { tag }; token.esc = tokens.splice(start, end - start, token); }); } unescapeTags(tokens, selector) { tokens.splice(0, Infinity, ...tokens.flatMap(token => ( token.esc && (!selector || token.tag.matches(selector)) ? token.esc : [token] ))); } unescape(tokens) { let els = [$('<div>')[0]], lastText = ''; tokens.forEach(token => { if (token.openingTag) { if (lastText) { els.at(-1).append(lastText); lastText = ''; } let el = token.openingTag; if (!token.link) { el = el.cloneNode(); } els.at(-1).append(el); els.push(el); } else if (token.closingTag) { let el = els.pop(); if (!els.length) { throw `too many closing tags.\n\n${el.innerHTML}`; } if (el.tagName !== token.closingTag.tagName) { throw `expected </${ token.closingTag.tagName }>, got </${el.tagName}>.\n\n${els[0].innerHTML}`; } if (lastText) { el.append(lastText); lastText = ''; } } else { lastText += token.s; } }); if (lastText) { els.at(-1).append(lastText); } if (els.length !== 1) { throw `too many opening tags.\n\n${els[0].innerHTML}`; } return els[0]; } verify(div, newDiv) { let origHtml = div.innerHTML; let $comp = $(newDiv).clone(); $comp.find('.smartdiff-link').contents().unwrap(); let comp = $comp.html().replace(/<\/(ins|del)><\1(?: [^>]+)?>/g, ''); if (comp !== origHtml) { throw `changed substance.\n\nOriginal:\n${origHtml}\n\nCleaned:\n${comp}\n\nFull:\n${newDiv.innerHTML}`; } let emptyCells = newDiv.querySelectorAll(':is(ins, del):empty'); if (emptyCells.length) { console.log('Empty cells found:', ...emptyCells); mw.notify('Empty cells found'); } } async exec(tokens, isSecond) { let s = tokens.map(token => token.s || '').join(''); let modes = isSecond ? ['url', 'link', 'template', 'gallery'] : ['url', 'link', 'template', 'heading', 'gallery']; for (let mode of modes) { await this.search(s, tokens, mode); } } async search(s, tokens, mode, data) { for (let match of s.matchAll(SmartDiff[mode + 'Re'])) { await this[mode + 'Callback']( tokens, ...match.indices.slice(1).map((indices, i) => indices && { s: match[i + 1], indices, tokens, tokenIndices: SmartDiff.tokenIndices }), data ); } } static tokenIndices() { let count = 0, start; for (let [i, token] of this.tokens.entries()) { if (token.s) { if (count === this.indices[0]) { start = i; } if (count === this.indices[1] - 1) { return [start, i + 1]; } count++; } } } static linkRe = /\[\[\s*(?:<tvar(?: [^>]*)?>\s*)?((?:[^<>\[\]{|}])+?)(?:\s*<\/tvar>)?\s*(?:\||\]\])/dg; async linkCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t; if (s.startsWith('/')) { t = await this.getSubpage(s); } else if (s.startsWith('#') && (!this.isView || !this.isSamePage)) { t = mw.Title.newFromText(this.getProp() + s); } else if (s.startsWith('../')) { t = await this.getParentPage(s); } else { t = mw.Title.newFromText(s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } static templateRe = /((?<!{){{\s*(?:(?:#invoke|(?:safe)?subst|msg(?:nw)?|raw|int):\s*)?(?:<tvar(?: [^>]*)?>\s*)?)([^<>\[\]{|}]+?)((?:\s*<\/tvar>)?\s*(\|.*)?(?:}}|$))/dg; async templateCallback(tokens, pre, mid, post, args) { let s = this.decodeWikitext(mid.s, true); let t; if (pre.s.includes('invoke')) { t = mw.Title.makeTitle(828, s); } else if (s.startsWith('#')) { return; } else if (pre.s.includes('int')) { t = mw.Title.makeTitle(8, s); } else if (s.startsWith('/')) { t = await this.getSubpage(s, 10); } else if (s.startsWith('../')) { t = await this.getParentPage(s, 10); } else { if (!pre.s.includes('msg') && !pre.s.includes('raw')) { let match = s.match(/^[^:]+(?::(?=.)|$)/); if (match && SmartDiff.magicWords.includes(match[0])) return; } t = mw.Title.newFromText(s, 10); } if (t) { this.link(tokens, ...mid.tokenIndices(), t); } if (!args) return; let [postStart, postEnd] = post.tokenIndices(); let newPost = tokens.slice(postStart, postEnd); await this.search(post.s, newPost, 'template'); if (!t || !Array.isArray(SmartDiff.templates)) return; let name = t.getMainText(); for (let data of SmartDiff.templates) { if (Array.isArray(data?.names) && Array.prototype.includes.call(data.names, name) ) { await this.search( post.s, newPost, 'templateArgs', { ...data, i: 1 } ); } } tokens.splice(postStart, postEnd - postStart, ...newPost); } static templateArgsRe = /\|\s*(?:([^=|]*?)\s*=)?\s*(?:<tvar(?: [^>]*)?>\s*)?(.*?)(?:\s*<\/tvar>)?\s*(?=\||{{!}}|}}|$)/dg; templateArgsCallback(tokens, name, mid, data) { let n = name ? Number(name.s) || name.s : data.i++; if (typeof n !== 'number' || ( n < data.start || n > data.end || (n % 2 ? data.skipOdd : data.skipEven) )) { return; } let s = this.decodeWikitext(mid.s); if (data.prefix) { s = data.prefix + s; } if (data.suffix) { s += data.suffix; } let t = data.forceNs ? mw.Title.makeTitle(data.namespace, s) : mw.Title.newFromText(s, data.namespace); if (!t) return; this.link( tokens, ...mid.tokenIndices(), t, n >= data.noRedirectStart || n <= data.noRedirectEnd ); } static urlRe = /(\[(?=.+\]))?((?:\bhttps?:)?\/\/[^\s"<>\[\]{|}]*)([^\s"<>\[\]{|}])/dg; urlCallback(tokens, pre, mid, last) { let omitLast; if (!pre) { if (mid.s.startsWith('//')) return; if (last.s === ';') { let match = mid.s.match(/&#?[\da-z]+$/i); if (match) { let source = match[0] + last.s; omitLast = this.decodeWikitext(source) !== source; } } else { let trails = '!,.:?'; if (!mid.s.includes('(')) { trails += ')'; } omitLast = trails.includes(last.s); } } let s = mid.s; if (!omitLast) { s += last.s; } let [midStart, midEnd] = mid.tokenIndices(); this.link( tokens, midStart, omitLast ? midEnd : last.tokenIndices()[1], this.decodeWikitext(s) ); } static headingRe = /^(={1,6})\s*(.+?)\s*(\1)\s*(?=<!--|$)/dg; headingCallback(tokens, pre, mid, post) { if (/{{|<\/?ref(?:\s[^>]*)?>|\[(?:https?:)?\/\/[^\s\[\]]+\]/i.test(mid.s)) return; let s = this.decodeWikitext(mid.s).replace( /'''(.+?)'''|\[\[:?(?:[^|\]]+\|)?([^\]]+)\]\]|<\/?(?:abbr|b|bdi|bdo|big|cite|code|data|del|dfn|em|font|i|ins|kbd|mark|nowiki|q|rb|rp|rt|rtc|ruby|s|samp|small|span|strike|strong|sub|sup|templatestyles|time|translate|tt|u|var)(?:\s[^>]*)?>|<!--.*?-->|\[(?:https?:)?\/\/[^\s\[\]]+\s([^\]]+)\]/gi, '$1$2$3' ).replace(/''(.+?)''/g, '$1'); let t = mw.Title.newFromText( `${!this.isView || !this.isSamePage ? this.getProp() : ''}#${s}` ); if (!t) return; let midIndices = mid.tokenIndices(); if (tokens.slice(...midIndices).some(({ link }) => link)) { this.link(tokens, ...post.tokenIndices(), t); this.link(tokens, ...pre.tokenIndices(), t); } else { this.link(tokens, ...midIndices, t); } } // https://commons.wikimedia.org/wiki/Special:MediaStatistics static galleryRe = /^\s*((?:[^<>\[\]{|}])+\.(?:apng|djv|djvu|flac|gif|jpe|jpeg|jpg|jps|kar|m4a|m4b|m4p|m4r|m4v|mid|midi|mp2|mp3|mp4|mpa|mpe|mpeg|mpg|mpga|oga|ogg|ogm|ogv|ogx|opus|pdf|png|spx|stl|svg|tif|tiff|wav|webm|webp|xcf))\s*(?:\||$)/dgi; galleryCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t = mw.Title.newFromText(s, 6); if (t && t.getNamespaceId() !== 6) { t = mw.Title.makeTitle(6, s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } link(tokens, start, end, mwtOrUrl, noRedirect) { let indices = [], last; tokens.slice(start, end).forEach((token, i) => { if (!token.s && !token.link && !token.esc) return; if (token.s && !token.link) { if (!indices.length || last?.link || last?.esc) { indices.push([start + i]); } indices.at(-1)[1] = start + i + 1; } last = token; }); if (indices.some(chunkIndices => chunkIndices.length !== 2)) { mw.notify('Corrupt chunks found'); debugger; } if (!indices.length) return; let attribs = { class: 'smartdiff-link' }, obj; if (typeof mwtOrUrl === 'string') { attribs.class += ' external'; attribs.href = mwtOrUrl; attribs.rel = 'nofollow'; } else { let title = mwtOrUrl.toText(); if (title) { if (Object.hasOwn(this.titles, title)) { obj = this.titles[title]; if (obj.classes) { attribs.class += ' ' + obj.classes.join(' '); } } else { obj = { links: [] }; this.titles[title] = obj; } if (obj.url) { attribs.href = obj.url; } else { let params = obj.red && { action: 'edit', redlink: 1 } || noRedirect && obj.redirect && { redirect: 'no' }; attribs.href = mw.util.getUrl( obj.canonical || title, params ); } let fragment = mwtOrUrl.getFragment(); if (fragment) { attribs.href += mw.util.getUrl('#' + fragment); } attribs.title = obj.canonical || title; } else { attribs.class += ' mw-selflink-fragment'; attribs.href = mwtOrUrl.getUrl(); } } let links = indices.reverse().map(chunkIndices => ( this.linkChunk(tokens, ...chunkIndices, attribs) )); if (obj && !obj.processed) { obj.links.push(...links); if (noRedirect) { links.forEach(link => { this.noRedirLinks.add(link); }); } } this.divHasLink = true; } linkChunk(tokens, start, end, attribs) { let newStart = start, newEnd = end; let mid = tokens.slice(start, end); let midTags = mid.filter(({ s }) => !s); for (let i = 0; ; i += 2) { if (tokens[newStart - 1]?.openingTag && midTags[i]?.closingTag && tokens[newStart - 1].openingTag.tagName === midTags[i].closingTag.tagName ) { midTags.unshift(tokens[newStart - 1]); newStart--; } else { break; } } for (let i = midTags.length - 1; ; i--) { if (tokens[newEnd]?.closingTag && midTags[i]?.openingTag && tokens[newEnd].closingTag.tagName === midTags[i].openingTag.tagName ) { midTags.push(tokens[newEnd]); newEnd++; } else { break; } } if (start - newStart) { console.log(`Moved up ${start - newStart} times`); } if (start - newStart > 1) { mw.notify(`Moved up ${start - newStart} times`); } if (newEnd - end) { console.log(`Moved down ${newEnd - end} times`); } if (newEnd - end > 1) { mw.notify(`Moved down ${newEnd - end} times`); } let link = $('<a>').attr(attribs)[0]; let pre = [{ openingTag: link, link }]; let post = [{ closingTag: link, link }]; if (midTags[0]?.closingTag) { pre.unshift({ ...midTags[0] }); pre.push({ openingTag: midTags[0].closingTag }); } if (midTags.at(-1)?.openingTag) { post.unshift({ closingTag: midTags.at(-1).openingTag }); post.push({ ...midTags.at(-1) }); } tokens.splice(newEnd, 0, ...post); tokens.splice(newStart, 0, ...pre); mid.forEach(token => { if (token.s) { token.link = link; } }); return link; } decodeWikitext(text, decodePercents) { let s = text; if (decodePercents) { try { s = decodeURIComponent(s); } catch {} } return $($.parseHTML(s)).text(); } async getSubpage(s, fallbackNs) { if (await this.canHaveSubpages()) { return mw.Title.newFromText( this.getProp() + s.replace(/\/+$/, '') ); } return mw.Title.newFromText(s, fallbackNs); } async getParentPage(s, fallbackNs) { if (await this.canHaveSubpages()) { let chunks = s.split('/'); let levelCount = chunks.findIndex(v => v !== '..'); let sup = this.getProp().split('/').slice(0, -levelCount).join('/'); if (sup) { let sub = chunks.slice(levelCount).join('/').replace(/\/+$/, ''); return mw.Title.newFromText(sub ? `${sup}/${sub}` : sup); } } return mw.Title.newFromText(s, fallbackNs); } async canHaveSubpages(ns = this.getProp('ns')) { SmartDiff.subNs = SmartDiff.subNs || mw.config.get('wgVisualEditorConfig')?.namespacesWithSubpages || Object.values((await new mw.Api().get({ action: 'query', meta: 'siteinfo', siprop: 'namespaces', formatversion: 2 })).query.namespaces).filter(n => n.subpages).map(n => n.id); return SmartDiff.subNs.includes(ns); } getProp(n = 'pn') { if (this[this.side]) { this.sidePropUsed = !this.isSamePage; return this[this.side][n]; } if (Object.hasOwn(this, n)) { return this[n]; } this.pn = mw.config.get('wgPageName'); this.ns = mw.config.get('wgNamespaceNumber'); return this[n]; } async queryTitles() { let unprocessed = Object.entries(this.titles) .filter(([, v]) => !v.processed).slice(0, 500).map(([k]) => k); while (unprocessed.length) { let curTitles = unprocessed.slice(0, 50); curTitles.forEach(title => { this.titles[title].processed = true; }); let { query } = await new mw.Api().post({ action: 'query', titles: curTitles, iwurl: 1, prop: 'info', inprop: 'linkclasses', inlinkcontext: this.getProp(), formatversion: 2 }, { headers: { 'Promise-Non-Write-API-Action': 1 } }); query.pages?.forEach(p => { if (!Object.hasOwn(this.titles, p.title)) return; let obj = this.titles[p.title]; let classes = p.linkclasses || []; if (p.missing && !p.known) { classes.push('new'); obj.red = true; } else if (p.redirect) { obj.redirect = true; } if (classes.length) { obj.classes = classes; } }); query.interwiki?.forEach(iw => { this.titles[iw.title] = { classes: ['extiw'], url: iw.url }; }); query.normalized?.forEach(({ from, to }) => { if (!Object.hasOwn(this.titles, to)) return; this.titles[from] = { ...this.titles[to], canonical: to }; }); curTitles.forEach(title => { let obj = this.titles[title]; if (obj.classes) { $(obj.links).addClass(obj.classes); } if (obj.redirect) { $(obj.links).attr('href', (_, link) => { return mw.util.getUrl( obj.canonical || title, this.noRedirLinks.has(link) && { redirect: 'no' } ) + link.hash; }); } else { let url = obj.url || obj.red && mw.util.getUrl( obj.canonical || title, { action: 'edit', redlink: 1 } ) || obj.canonical && mw.util.getUrl(obj.canonical); if (url) { $(obj.links).attr('href', function () { return url + this.hash; }); } } if (obj.canonical) { $(obj.links).attr('title', obj.canonical); } obj.links = []; }); unprocessed = unprocessed.slice(50); } } static sds = new WeakMap(); static templates = window.smartdiffTemplates; static magicWords = [ '!', '=', 'BASEPAGENAME', 'BASEPAGENAME:', 'BASEPAGENAMEE', 'BASEPAGENAMEE:', 'canonicalurl:', 'CURRENTDAY', 'CURRENTDAY2', 'CURRENTDAYNAME', 'CURRENTDOW', 'CURRENTHOUR', 'CURRENTMONTH', 'CURRENTMONTH1', 'CURRENTMONTHABBREV', 'CURRENTMONTHNAME', 'CURRENTMONTHNAMEGEN', 'CURRENTTIME', 'CURRENTTIMESTAMP', 'CURRENTVERSION', 'CURRENTWEEK', 'CURRENTYEAR', 'DEFAULTCATEGORYSORT:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DISPLAYTITLE:', 'filepath:', 'formatnum:', 'FULLPAGENAME', 'FULLPAGENAME:', 'FULLPAGENAMEE', 'FULLPAGENAMEE:', 'fullurl:', 'gender:', 'lc:', 'lcfirst:', 'LOCALDAY', 'LOCALDAY2', 'LOCALDAYNAME', 'LOCALDOW', 'LOCALHOUR', 'LOCALMONTH', 'LOCALMONTH1', 'LOCALMONTHABBREV', 'LOCALMONTHNAME', 'LOCALMONTHNAMEGEN', 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCALWEEK', 'LOCALYEAR','NAMESPACE', 'NAMESPACE:', 'NAMESPACEE', 'NAMESPACEE:', 'NAMESPACENUMBER', 'NAMESPACENUMBER:', 'ns:', 'NUMBEROFACTIVEUSERS', 'NUMBEROFARTICLES', 'NUMBEROFEDITS', 'NUMBEROFFILES', 'NUMBEROFPAGES', 'NUMBEROFUSERS', 'padleft:', 'PAGENAME', 'PAGENAMEE', 'PAGESINCAT:', 'PAGESINCATEGORY:', 'plural:', 'REVISIONDAY', 'REVISIONDAY:', 'REVISIONDAY2', 'REVISIONDAY2:', 'REVISIONID', 'REVISIONID:', 'REVISIONMONTH', 'REVISIONMONTH:', 'REVISIONMONTH1', 'REVISIONMONTH1:', 'REVISIONSIZE', 'REVISIONTIMESTAMP', 'REVISIONTIMESTAMP:', 'REVISIONUSER', 'REVISIONUSER:', 'REVISIONYEAR', 'REVISIONYEAR:', 'ROOTPAGENAME', 'ROOTPAGENAME:', 'ROOTPAGENAMEE', 'ROOTPAGENAMEE:', 'SHORTDESC:', 'SUBJECTPAGENAME', 'SUBJECTPAGENAME:', 'SUBJECTPAGENAMEE', 'SUBJECTPAGENAMEE:', 'SUBJECTSPACE', 'SUBJECTSPACE:', 'SUBJECTSPACEE', 'SUBJECTSPACEE:', 'SUBPAGENAME', 'SUBPAGENAME:', 'SUBPAGENAMEE', 'SUBPAGENAMEE:', 'TALKPAGENAME', 'TALKPAGENAME:', 'TALKPAGENAMEE', 'TALKPAGENAMEE:', 'TALKSPACE', 'TALKSPACE:', 'TALKSPACEE', 'TALKSPACEE:', 'uc:', 'ucfirst:', 'urlencode:' ]; } if (Array.isArray(window.smartdiffMagicWords)) { SmartDiff.magicWords.push(...window.smartdiffMagicWords); } mw.hook('wikipage.diff').add((window.sdcb = ($diff => { window.sd = new SmartDiff($diff); }))); mw.hook('wikipage.diff.wikitextBodyUpdate').add((window.sdcbu = ($rows => { let $diff = $rows.closest('.diff'); let sd = SmartDiff.sds.get($diff[0]); if (sd) { sd.init($rows.filter(function () { return this.checkVisibility(); })); } else { window.sd = new SmartDiff($diff); } }))); }); k6l2mzkf90kaktly71bzsrbq8ae964n 768679 768678 2026-10-17T05:36:33Z Nardog 40946 768679 javascript text/javascript mw.hook('wikipage.diff').remove(window.sdcb); mw.hook('wikipage.diff.wikitextBodyUpdate').remove(window.sdcbu); $('.smartdiff-link').contents().unwrap().end().remove(); $(':is(.diff-addedline, .diff-addedline, .diff-context) > div, .mw-diff-inline-added, .mw-diff-inline-deleted, .mw-diff-inline-changed').contents().each(function () { if (this.previousSibling && this.previousSibling.tagName === this.tagName) { this.previousSibling.textContent += this.textContent; this.remove(); } }); window.smartdiffTemplates = [ { names: ['T', 'Tl'], namespace: 10, forceNs: true, end: 1 }, { names: ['Tlx'], namespace: 10, end: 1 }, { names: ['U'], prefix: 'Special:Contributions/', end: 1 }, { names: ['Re', 'Reply to', 'Ping'], prefix: 'Special:Contributions/' }, { names: ['About'], start: 3, skipEven: true }, { names: ['For'], start: 2 }, { names: ['Other uses', 'Otheruses'], end: 1 }, { names: ['Section link', 'Slink'], end: 1 }, { names: ['Redirect'], skipEven: true, noRedirectEnd: 1 }, { names: ['Shortcut'], noRedirectStart: 1 }, { names: ['Tracked', 'Phab'], prefix: 'phab:', end: 1 }, { names: [ 'Distinguish', 'Main', 'Main article', 'Further', 'See also', 'Seealso' ] }, { names: ['Ll'], end: 1 } ]; mw.loader.using([ 'mediawiki.util', 'mediawiki.Title', 'mediawiki.api' ], () => { mw.loader.addStyleTag(`body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external) { color: #36b; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):visited { color: #636; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):active { color: #b63; }`); class SmartDiff { constructor($diff) { this.now = performance.now(); this.$diff = $diff; this.isView = mw.config.get('wgNamespaceNumber') !== -1 && mw.config.get('wgAction') === 'view' && $diff.nextAll().is('.diff-hr'); [ ['old', '#mw-diff-otitle1 a, #differences-prevlink'], ['new', '#mw-diff-ntitle1 a, #differences-nextlink'] ].forEach(([side, selector]) => { let link = this.$diff[0].querySelector(selector); let pn = link && mw.util.getParamValue('title', link.search); if (pn) { this[side] = { pn, ns: mw.Title.newFromText(pn).getNamespaceId() }; } }); this.isSamePage = this.old?.pn === this.new?.pn; this.titles = {}; this.noRedirLinks = new WeakSet(); SmartDiff.sds.set($diff[0], this); this.init(); } async init($rows = this.$diff) { this.side = 'old'; for (let div of $rows.find( '.diff-deletedline > div, .mw-diff-inline-deleted' )) { await this.processLine(div); } this.side = 'new'; for (let div of $rows.find( '.diff-addedline > div, .mw-diff-inline-added, .mw-diff-inline-context' )) { await this.processLine(div); } for (let div of $rows.find( '.mw-diff-inline-changed, .mw-diff-inline-moved' )) { await this.processLine(div, true); } let $contexts = $rows.find('.diff-context > div'), clones = []; for (let [i, div] of $contexts.get().entries()) { if (i % 2) { this.side = 'new'; if (this.sidePropUsed) { await this.processLine(div); } else if (this.divHasLink) { div.replaceChildren(...$contexts.eq(i - 1).contents().clone()); clones.push(div); } } else { this.side = 'old'; this.sidePropUsed = false; await this.processLine(div); } } $(clones).find('.smartdiff-link[title]').each((_, link) => { this.titles[link.title]?.links.push(link); }); this.queryTitles(); if (this.hasError) { mw.notify('SmartDiff error', { type: 'warn' }); } console.log(performance.now() - this.now); } async processLine(div, isInlineChange) { this.divHasLink = false; let tokens; if (isInlineChange) { tokens = this.tokenize( div, 'del, .mw-diff-movedpara-left, .mw-diff-movedpara-right' ); this.side = 'new'; await this.exec(tokens); this.escapeTags(tokens, 'ins'); this.unescapeTags(tokens, 'del'); this.side = 'old'; await this.exec(tokens, true); this.unescapeTags(tokens); } else { tokens = this.tokenize(div); await this.exec(tokens); } if (!this.divHasLink) return; try { let newDiv = this.unescape(tokens); this.verify(div, newDiv); div.replaceChildren(...newDiv.childNodes); } catch (e) { debugger; if (typeof e === 'string') { this.hasError = true; console.warn(`SmartDiff error: ${e}`); } else { throw e; } } } tokenize(el, escSelector) { return [...el.childNodes].flatMap(node => { if (node.nodeType === 3) { return node.textContent.split('').map(s => ({ s })); } if (node.nodeType !== 1) { return []; } if (escSelector && node.matches(escSelector)) { return [ { openingTag: node }, { esc: this.tokenize(node, escSelector), tag: node }, { closingTag: node } ]; } return [ { openingTag: node }, ...this.tokenize(node, escSelector), { closingTag: node } ]; }); } escapeTags(tokens, selector) { let openTags = [], data = []; tokens.forEach((token, i) => { if (token.openingTag?.matches(selector)) { openTags.push([token.openingTag, i + 1]); } else if (token.closingTag && openTags.length && token.closingTag.tagName === openTags.at(-1)[0].tagName ) { data.push([...openTags.pop(), i]); } }); data.reverse().forEach(([tag, start, end]) => { let token = { tag }; token.esc = tokens.splice(start, end - start, token); }); } unescapeTags(tokens, selector) { tokens.splice(0, Infinity, ...tokens.flatMap(token => ( token.esc && (!selector || token.tag.matches(selector)) ? token.esc : [token] ))); } unescape(tokens) { let els = [$('<div>')[0]], lastText = ''; tokens.forEach(token => { if (token.openingTag) { if (lastText) { els.at(-1).append(lastText); lastText = ''; } let el = token.openingTag; if (!token.link) { el = el.cloneNode(); } els.at(-1).append(el); els.push(el); } else if (token.closingTag) { let el = els.pop(); if (!els.length) { throw `too many closing tags.\n\n${el.innerHTML}`; } if (el.tagName !== token.closingTag.tagName) { throw `expected </${ token.closingTag.tagName }>, got </${el.tagName}>.\n\n${els[0].innerHTML}`; } if (lastText) { el.append(lastText); lastText = ''; } } else { lastText += token.s; } }); if (lastText) { els.at(-1).append(lastText); } if (els.length !== 1) { throw `too many opening tags.\n\n${els[0].innerHTML}`; } return els[0]; } verify(div, newDiv) { let origHtml = div.innerHTML; let $comp = $(newDiv).clone(); $comp.find('.smartdiff-link').contents().unwrap(); let comp = $comp.html().replace(/<\/(ins|del)><\1(?: [^>]+)?>/g, ''); if (comp !== origHtml) { throw `changed substance.\n\nOriginal:\n${origHtml}\n\nCleaned:\n${comp}\n\nFull:\n${newDiv.innerHTML}`; } let emptyCells = newDiv.querySelectorAll(':is(ins, del):empty'); if (emptyCells.length) { console.log('Empty cells found:', ...emptyCells); mw.notify('Empty cells found'); } } async exec(tokens, isSecond) { let s = tokens.map(token => token.s || '').join(''); let modes = isSecond ? ['url', 'link', 'template', 'gallery'] : ['url', 'link', 'template', 'heading', 'gallery']; for (let mode of modes) { await this.search(s, tokens, mode); } } async search(s, tokens, mode, data) { for (let match of s.matchAll(SmartDiff[mode + 'Re'])) { await this[mode + 'Callback']( tokens, ...match.indices.slice(1).map((indices, i) => indices && { s: match[i + 1], indices, tokens, tokenIndices: SmartDiff.tokenIndices }), data ); } } static tokenIndices() { let count = 0, start; for (let [i, token] of this.tokens.entries()) { if (token.s) { if (count === this.indices[0]) { start = i; } if (count === this.indices[1] - 1) { return [start, i + 1]; } count++; } } } static linkRe = /\[\[\s*(?:<tvar(?: [^>]*)?>\s*)?((?:[^<>\[\]{|}])+?)(?:\s*<\/tvar>)?\s*(?:\||\]\])/dg; async linkCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t; if (s.startsWith('/')) { t = await this.getSubpage(s); } else if (s.startsWith('#') && (!this.isView || !this.isSamePage)) { t = mw.Title.newFromText(this.getProp() + s); } else if (s.startsWith('../')) { t = await this.getParentPage(s); } else { t = mw.Title.newFromText(s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } static templateRe = /((?<!{){{\s*(?:(?:#invoke|(?:safe)?subst|msg(?:nw)?|raw|int):\s*)?(?:<tvar(?: [^>]*)?>\s*)?)([^<>\[\]{|}]+?)((?:\s*<\/tvar>)?\s*(\|.*)?(?:}}|$))/dg; async templateCallback(tokens, pre, mid, post, args) { let s = this.decodeWikitext(mid.s, true); let t; if (pre.s.includes('invoke')) { t = mw.Title.makeTitle(828, s); } else if (s.startsWith('#')) { return; } else if (pre.s.includes('int')) { t = mw.Title.makeTitle(8, s); } else if (s.startsWith('/')) { t = await this.getSubpage(s, 10); } else if (s.startsWith('../')) { t = await this.getParentPage(s, 10); } else { if (!pre.s.includes('msg') && !pre.s.includes('raw')) { let match = s.match(/^[^:]+(?::(?=.)|$)/); if (match && SmartDiff.magicWords.includes(match[0])) return; } t = mw.Title.newFromText(s, 10); } if (t) { this.link(tokens, ...mid.tokenIndices(), t); } if (!args) return; let [postStart, postEnd] = post.tokenIndices(); let newPost = tokens.slice(postStart, postEnd); await this.search(post.s, newPost, 'template'); if (!t || !Array.isArray(SmartDiff.templates)) return; let name = t.getMainText(); for (let data of SmartDiff.templates) { if (Array.isArray(data?.names) && Array.prototype.includes.call(data.names, name) ) { await this.search( post.s, newPost, 'templateArgs', { ...data, i: 1 } ); } } tokens.splice(postStart, postEnd - postStart, ...newPost); } static templateArgsRe = /\|\s*(?:([^=|]*?)\s*=)?\s*(?:<tvar(?: [^>]*)?>\s*)?(.*?)(?:\s*<\/tvar>)?\s*(?=\||{{!}}|}}|$)/dg; templateArgsCallback(tokens, name, mid, data) { let n = name ? Number(name.s) || name.s : data.i++; if (typeof n !== 'number' || ( n < data.start || n > data.end || (n % 2 ? data.skipOdd : data.skipEven) )) { return; } let s = this.decodeWikitext(mid.s); if (data.prefix) { s = data.prefix + s; } if (data.suffix) { s += data.suffix; } let t = data.forceNs ? mw.Title.makeTitle(data.namespace, s) : mw.Title.newFromText(s, data.namespace); if (!t) return; this.link( tokens, ...mid.tokenIndices(), t, n >= data.noRedirectStart || n <= data.noRedirectEnd ); } static urlRe = /(\[(?=.+\]))?((?:\bhttps?:)?\/\/[^\s"<>\[\]{|}]*)([^\s"<>\[\]{|}])/dg; urlCallback(tokens, pre, mid, last) { let omitLast; if (!pre) { if (mid.s.startsWith('//')) return; if (last.s === ';') { let match = mid.s.match(/&#?[\da-z]+$/i); if (match) { let source = match[0] + last.s; omitLast = this.decodeWikitext(source) !== source; } } else { let trails = '!,.:?'; if (!mid.s.includes('(')) { trails += ')'; } omitLast = trails.includes(last.s); } } let s = mid.s; if (!omitLast) { s += last.s; } let [midStart, midEnd] = mid.tokenIndices(); this.link( tokens, midStart, omitLast ? midEnd : last.tokenIndices()[1], this.decodeWikitext(s) ); } static headingRe = /^(={1,6})\s*(.+?)\s*(\1)\s*(?=<!--|$)/dg; headingCallback(tokens, pre, mid, post) { if (/{{|<\/?ref(?:\s[^>]*)?>|\[(?:https?:)?\/\/[^\s\[\]]+\]/i.test(mid.s)) return; let s = this.decodeWikitext(mid.s).replace( /'''(.+?)'''|\[\[:?(?:[^|\]]+\|)?([^\]]+)\]\]|<\/?(?:abbr|b|bdi|bdo|big|cite|code|data|del|dfn|em|font|i|ins|kbd|mark|nowiki|q|rb|rp|rt|rtc|ruby|s|samp|small|span|strike|strong|sub|sup|templatestyles|time|translate|tt|u|var)(?:\s[^>]*)?>|<!--.*?-->|\[(?:https?:)?\/\/[^\s\[\]]+\s([^\]]+)\]/gi, '$1$2$3' ).replace(/''(.+?)''/g, '$1'); let t = mw.Title.newFromText( `${!this.isView || !this.isSamePage ? this.getProp() : ''}#${s}` ); if (!t) return; let midIndices = mid.tokenIndices(); if (tokens.slice(...midIndices).some(({ link }) => link)) { this.link(tokens, ...post.tokenIndices(), t); this.link(tokens, ...pre.tokenIndices(), t); } else { this.link(tokens, ...midIndices, t); } } // https://commons.wikimedia.org/wiki/Special:MediaStatistics static galleryRe = /^\s*((?:[^<>\[\]{|}])+\.(?:apng|djv|djvu|flac|gif|jpe|jpeg|jpg|jps|kar|m4a|m4b|m4p|m4r|m4v|mid|midi|mp2|mp3|mp4|mpa|mpe|mpeg|mpg|mpga|oga|ogg|ogm|ogv|ogx|opus|pdf|png|spx|stl|svg|tif|tiff|wav|webm|webp|xcf))\s*(?:\||$)/dgi; galleryCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t = mw.Title.newFromText(s, 6); if (t && t.getNamespaceId() !== 6) { t = mw.Title.makeTitle(6, s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } link(tokens, start, end, mwtOrUrl, noRedirect) { let indices = [], last; tokens.slice(start, end).forEach((token, i) => { if (!token.s && !token.link && !token.esc) return; if (token.s && !token.link) { if (!indices.length || last?.link || last?.esc) { indices.push([start + i]); } indices.at(-1)[1] = start + i + 1; } last = token; }); if (indices.some(chunkIndices => chunkIndices.length !== 2)) { mw.notify('Corrupt chunks found'); debugger; } if (!indices.length) return; let attribs = { class: 'smartdiff-link' }, obj; if (typeof mwtOrUrl === 'string') { attribs.class += ' external'; attribs.href = mwtOrUrl; attribs.rel = 'nofollow'; } else { let title = mwtOrUrl.toText(); if (title) { if (Object.hasOwn(this.titles, title)) { obj = this.titles[title]; if (obj.classes) { attribs.class += ' ' + obj.classes.join(' '); } } else { obj = { links: [] }; this.titles[title] = obj; } if (obj.url) { attribs.href = obj.url; } else { let params = obj.red && { action: 'edit', redlink: 1 } || noRedirect && obj.redirect && { redirect: 'no' }; attribs.href = mw.util.getUrl( obj.canonical || title, params ); } let fragment = mwtOrUrl.getFragment(); if (fragment) { attribs.href += mw.util.getUrl('#' + fragment); } attribs.title = obj.canonical || title; } else { attribs.class += ' mw-selflink-fragment'; attribs.href = mwtOrUrl.getUrl(); } } let links = indices.reverse().map(chunkIndices => ( this.linkChunk(tokens, ...chunkIndices, attribs) )); if (obj && !obj.processed) { obj.links.push(...links); if (noRedirect) { links.forEach(link => { this.noRedirLinks.add(link); }); } } this.divHasLink = true; } linkChunk(tokens, start, end, attribs) { let newStart = start, newEnd = end; let mid = tokens.slice(start, end); let midTags = mid.filter(({ s }) => !s); for (let i = 0; ; i += 2) { if (tokens[newStart - 1]?.openingTag && midTags[i]?.closingTag && tokens[newStart - 1].openingTag.tagName === midTags[i].closingTag.tagName ) { midTags.unshift(tokens[newStart - 1]); newStart--; } else { break; } } for (let i = midTags.length - 1; ; i--) { if (tokens[newEnd]?.closingTag && midTags[i]?.openingTag && tokens[newEnd].closingTag.tagName === midTags[i].openingTag.tagName ) { midTags.push(tokens[newEnd]); newEnd++; } else { break; } } if (start - newStart) { console.log(`Moved up ${start - newStart} times`); } if (start - newStart > 1) { mw.notify(`Moved up ${start - newStart} times`); } if (newEnd - end) { console.log(`Moved down ${newEnd - end} times`); } if (newEnd - end > 1) { mw.notify(`Moved down ${newEnd - end} times`); } let link = $('<a>').attr(attribs)[0]; let pre = [{ openingTag: link, link }]; let post = [{ closingTag: link, link }]; if (midTags[0]?.closingTag) { pre.unshift({ ...midTags[0] }); pre.push({ openingTag: midTags[0].closingTag }); } if (midTags.at(-1)?.openingTag) { post.unshift({ closingTag: midTags.at(-1).openingTag }); post.push({ ...midTags.at(-1) }); } tokens.splice(newEnd, 0, ...post); tokens.splice(newStart, 0, ...pre); mid.forEach(token => { if (token.s) { token.link = link; } }); return link; } decodeWikitext(text, decodePercents) { let s = text; if (decodePercents) { try { s = decodeURIComponent(s); } catch {} } return $($.parseHTML(s)).text(); } async getSubpage(s, fallbackNs) { if (await this.canHaveSubpages()) { return mw.Title.newFromText( this.getProp() + s.replace(/\/+$/, '') ); } return mw.Title.newFromText(s, fallbackNs); } async getParentPage(s, fallbackNs) { if (await this.canHaveSubpages()) { let chunks = s.split('/'); let levelCount = chunks.findIndex(v => v !== '..'); let sup = this.getProp().split('/').slice(0, -levelCount).join('/'); if (sup) { let sub = chunks.slice(levelCount).join('/').replace(/\/+$/, ''); return mw.Title.newFromText(sub ? `${sup}/${sub}` : sup); } } return mw.Title.newFromText(s, fallbackNs); } async canHaveSubpages(ns = this.getProp('ns')) { SmartDiff.subNs = SmartDiff.subNs || mw.config.get('wgVisualEditorConfig')?.namespacesWithSubpages || Object.values((await new mw.Api().get({ action: 'query', meta: 'siteinfo', siprop: 'namespaces', formatversion: 2 })).query.namespaces).filter(n => n.subpages).map(n => n.id); return SmartDiff.subNs.includes(ns); } getProp(n = 'pn') { if (this[this.side]) { this.sidePropUsed = !this.isSamePage; return this[this.side][n]; } if (Object.hasOwn(this, n)) { return this[n]; } this.pn = mw.config.get('wgPageName'); this.ns = mw.config.get('wgNamespaceNumber'); return this[n]; } async queryTitles() { let unprocessed = Object.entries(this.titles) .filter(([, v]) => !v.processed).slice(0, 500).map(([k]) => k); while (unprocessed.length) { let curTitles = unprocessed.slice(0, 50); curTitles.forEach(title => { this.titles[title].processed = true; }); let { query } = await new mw.Api().post({ action: 'query', titles: curTitles, iwurl: 1, prop: 'info', inprop: 'linkclasses', inlinkcontext: this.getProp(), formatversion: 2 }, { headers: { 'Promise-Non-Write-API-Action': 1 } }); query.pages?.forEach(p => { this.titles[p.title] = this.titles[p.title] || {}; let obj = this.titles[p.title]; let classes = p.linkclasses || []; if (p.missing && !p.known) { classes.push('new'); obj.red = true; } else if (p.redirect) { obj.redirect = true; } if (classes.length) { obj.classes = classes; } }); query.interwiki?.forEach(iw => { this.titles[iw.title] = { classes: ['extiw'], url: iw.url }; }); query.normalized?.forEach(({ from, to }) => { if (!Object.hasOwn(this.titles, to)) return; this.titles[from] = { ...this.titles[to], canonical: to }; }); curTitles.forEach(title => { let obj = this.titles[title]; if (obj.classes) { $(obj.links).addClass(obj.classes); } if (obj.redirect) { $(obj.links).attr('href', (_, link) => { return mw.util.getUrl( obj.canonical || title, this.noRedirLinks.has(link) && { redirect: 'no' } ) + link.hash; }); } else { let url = obj.url || obj.red && mw.util.getUrl( obj.canonical || title, { action: 'edit', redlink: 1 } ) || obj.canonical && mw.util.getUrl(obj.canonical); if (url) { $(obj.links).attr('href', function () { return url + this.hash; }); } } if (obj.canonical) { $(obj.links).attr('title', obj.canonical); } obj.links = []; }); unprocessed = unprocessed.slice(50); } } static sds = new WeakMap(); static templates = window.smartdiffTemplates; static magicWords = [ '!', '=', 'BASEPAGENAME', 'BASEPAGENAME:', 'BASEPAGENAMEE', 'BASEPAGENAMEE:', 'canonicalurl:', 'CURRENTDAY', 'CURRENTDAY2', 'CURRENTDAYNAME', 'CURRENTDOW', 'CURRENTHOUR', 'CURRENTMONTH', 'CURRENTMONTH1', 'CURRENTMONTHABBREV', 'CURRENTMONTHNAME', 'CURRENTMONTHNAMEGEN', 'CURRENTTIME', 'CURRENTTIMESTAMP', 'CURRENTVERSION', 'CURRENTWEEK', 'CURRENTYEAR', 'DEFAULTCATEGORYSORT:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DISPLAYTITLE:', 'filepath:', 'formatnum:', 'FULLPAGENAME', 'FULLPAGENAME:', 'FULLPAGENAMEE', 'FULLPAGENAMEE:', 'fullurl:', 'gender:', 'lc:', 'lcfirst:', 'LOCALDAY', 'LOCALDAY2', 'LOCALDAYNAME', 'LOCALDOW', 'LOCALHOUR', 'LOCALMONTH', 'LOCALMONTH1', 'LOCALMONTHABBREV', 'LOCALMONTHNAME', 'LOCALMONTHNAMEGEN', 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCALWEEK', 'LOCALYEAR','NAMESPACE', 'NAMESPACE:', 'NAMESPACEE', 'NAMESPACEE:', 'NAMESPACENUMBER', 'NAMESPACENUMBER:', 'ns:', 'NUMBEROFACTIVEUSERS', 'NUMBEROFARTICLES', 'NUMBEROFEDITS', 'NUMBEROFFILES', 'NUMBEROFPAGES', 'NUMBEROFUSERS', 'padleft:', 'PAGENAME', 'PAGENAMEE', 'PAGESINCAT:', 'PAGESINCATEGORY:', 'plural:', 'REVISIONDAY', 'REVISIONDAY:', 'REVISIONDAY2', 'REVISIONDAY2:', 'REVISIONID', 'REVISIONID:', 'REVISIONMONTH', 'REVISIONMONTH:', 'REVISIONMONTH1', 'REVISIONMONTH1:', 'REVISIONSIZE', 'REVISIONTIMESTAMP', 'REVISIONTIMESTAMP:', 'REVISIONUSER', 'REVISIONUSER:', 'REVISIONYEAR', 'REVISIONYEAR:', 'ROOTPAGENAME', 'ROOTPAGENAME:', 'ROOTPAGENAMEE', 'ROOTPAGENAMEE:', 'SHORTDESC:', 'SUBJECTPAGENAME', 'SUBJECTPAGENAME:', 'SUBJECTPAGENAMEE', 'SUBJECTPAGENAMEE:', 'SUBJECTSPACE', 'SUBJECTSPACE:', 'SUBJECTSPACEE', 'SUBJECTSPACEE:', 'SUBPAGENAME', 'SUBPAGENAME:', 'SUBPAGENAMEE', 'SUBPAGENAMEE:', 'TALKPAGENAME', 'TALKPAGENAME:', 'TALKPAGENAMEE', 'TALKPAGENAMEE:', 'TALKSPACE', 'TALKSPACE:', 'TALKSPACEE', 'TALKSPACEE:', 'uc:', 'ucfirst:', 'urlencode:' ]; } if (Array.isArray(window.smartdiffMagicWords)) { SmartDiff.magicWords.push(...window.smartdiffMagicWords); } mw.hook('wikipage.diff').add((window.sdcb = ($diff => { window.sd = new SmartDiff($diff); }))); mw.hook('wikipage.diff.wikitextBodyUpdate').add((window.sdcbu = ($rows => { let $diff = $rows.closest('.diff'); let sd = SmartDiff.sds.get($diff[0]); if (sd) { sd.init($rows.filter(function () { return this.checkVisibility(); })); } else { window.sd = new SmartDiff($diff); } }))); }); lr0rkq7ehbp0nxeyl7lgto9lcgn0nid 768680 768679 2026-10-17T05:37:03Z Nardog 40946 768680 javascript text/javascript mw.hook('wikipage.diff').remove(window.sdcb); mw.hook('wikipage.diff.wikitextBodyUpdate').remove(window.sdcbu); $('.smartdiff-link').contents().unwrap().end().remove(); $(':is(.diff-addedline, .diff-addedline, .diff-context) > div, .mw-diff-inline-added, .mw-diff-inline-deleted, .mw-diff-inline-changed').contents().each(function () { if (this.previousSibling && this.previousSibling.tagName === this.tagName) { this.previousSibling.textContent += this.textContent; this.remove(); } }); window.smartdiffTemplates = [ { names: ['T', 'Tl'], namespace: 10, forceNs: true, end: 1 }, { names: ['Tlx'], namespace: 10, end: 1 }, { names: ['U'], prefix: 'Special:Contributions/', end: 1 }, { names: ['Re', 'Reply to', 'Ping'], prefix: 'Special:Contributions/' }, { names: ['About'], start: 3, skipEven: true }, { names: ['For'], start: 2 }, { names: ['Other uses', 'Otheruses'], end: 1 }, { names: ['Section link', 'Slink'], end: 1 }, { names: ['Redirect'], skipEven: true, noRedirectEnd: 1 }, { names: ['Shortcut'], noRedirectStart: 1 }, { names: ['Tracked', 'Phab'], prefix: 'phab:', end: 1 }, { names: [ 'Distinguish', 'Main', 'Main article', 'Further', 'See also', 'Seealso' ] }, { names: ['Ll'], end: 1 } ]; mw.loader.using([ 'mediawiki.util', 'mediawiki.Title', 'mediawiki.api' ], () => { mw.loader.addStyleTag(`body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external) { color: #36b; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):visited { color: #636; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):active { color: #b63; }`); class SmartDiff { constructor($diff) { this.now = performance.now(); this.$diff = $diff; this.isView = mw.config.get('wgNamespaceNumber') !== -1 && mw.config.get('wgAction') === 'view' && $diff.nextAll().is('.diff-hr'); [ ['old', '#mw-diff-otitle1 a, #differences-prevlink'], ['new', '#mw-diff-ntitle1 a, #differences-nextlink'] ].forEach(([side, selector]) => { let link = this.$diff[0].querySelector(selector); let pn = link && mw.util.getParamValue('title', link.search); if (pn) { this[side] = { pn, ns: mw.Title.newFromText(pn).getNamespaceId() }; } }); this.isSamePage = this.old?.pn === this.new?.pn; this.titles = {}; this.noRedirLinks = new WeakSet(); SmartDiff.sds.set($diff[0], this); this.init(); } async init($rows = this.$diff) { this.side = 'old'; for (let div of $rows.find( '.diff-deletedline > div, .mw-diff-inline-deleted' )) { await this.processLine(div); } this.side = 'new'; for (let div of $rows.find( '.diff-addedline > div, .mw-diff-inline-added, .mw-diff-inline-context' )) { await this.processLine(div); } for (let div of $rows.find( '.mw-diff-inline-changed, .mw-diff-inline-moved' )) { await this.processLine(div, true); } let $contexts = $rows.find('.diff-context > div'), clones = []; for (let [i, div] of $contexts.get().entries()) { if (i % 2) { this.side = 'new'; if (this.sidePropUsed) { await this.processLine(div); } else if (this.divHasLink) { div.replaceChildren(...$contexts.eq(i - 1).contents().clone()); clones.push(div); } } else { this.side = 'old'; this.sidePropUsed = false; await this.processLine(div); } } $(clones).find('.smartdiff-link[title]').each((_, link) => { this.titles[link.title]?.links.push(link); }); this.queryTitles(); if (this.hasError) { mw.notify('SmartDiff error', { type: 'warn' }); } console.log(performance.now() - this.now); } async processLine(div, isInlineChange) { this.divHasLink = false; let tokens; if (isInlineChange) { tokens = this.tokenize( div, 'del, .mw-diff-movedpara-left, .mw-diff-movedpara-right' ); this.side = 'new'; await this.exec(tokens); this.escapeTags(tokens, 'ins'); this.unescapeTags(tokens, 'del'); this.side = 'old'; await this.exec(tokens, true); this.unescapeTags(tokens); } else { tokens = this.tokenize(div); await this.exec(tokens); } if (!this.divHasLink) return; try { let newDiv = this.unescape(tokens); this.verify(div, newDiv); div.replaceChildren(...newDiv.childNodes); } catch (e) { debugger; if (typeof e === 'string') { this.hasError = true; console.warn(`SmartDiff error: ${e}`); } else { throw e; } } } tokenize(el, escSelector) { return [...el.childNodes].flatMap(node => { if (node.nodeType === 3) { return node.textContent.split('').map(s => ({ s })); } if (node.nodeType !== 1) { return []; } if (escSelector && node.matches(escSelector)) { return [ { openingTag: node }, { esc: this.tokenize(node, escSelector), tag: node }, { closingTag: node } ]; } return [ { openingTag: node }, ...this.tokenize(node, escSelector), { closingTag: node } ]; }); } escapeTags(tokens, selector) { let openTags = [], data = []; tokens.forEach((token, i) => { if (token.openingTag?.matches(selector)) { openTags.push([token.openingTag, i + 1]); } else if (token.closingTag && openTags.length && token.closingTag.tagName === openTags.at(-1)[0].tagName ) { data.push([...openTags.pop(), i]); } }); data.reverse().forEach(([tag, start, end]) => { let token = { tag }; token.esc = tokens.splice(start, end - start, token); }); } unescapeTags(tokens, selector) { tokens.splice(0, Infinity, ...tokens.flatMap(token => ( token.esc && (!selector || token.tag.matches(selector)) ? token.esc : [token] ))); } unescape(tokens) { let els = [$('<div>')[0]], lastText = ''; tokens.forEach(token => { if (token.openingTag) { if (lastText) { els.at(-1).append(lastText); lastText = ''; } let el = token.openingTag; if (!token.link) { el = el.cloneNode(); } els.at(-1).append(el); els.push(el); } else if (token.closingTag) { let el = els.pop(); if (!els.length) { throw `too many closing tags.\n\n${el.innerHTML}`; } if (el.tagName !== token.closingTag.tagName) { throw `expected </${ token.closingTag.tagName }>, got </${el.tagName}>.\n\n${els[0].innerHTML}`; } if (lastText) { el.append(lastText); lastText = ''; } } else { lastText += token.s; } }); if (lastText) { els.at(-1).append(lastText); } if (els.length !== 1) { throw `too many opening tags.\n\n${els[0].innerHTML}`; } return els[0]; } verify(div, newDiv) { let origHtml = div.innerHTML; let $comp = $(newDiv).clone(); $comp.find('.smartdiff-link').contents().unwrap(); let comp = $comp.html().replace(/<\/(ins|del)><\1(?: [^>]+)?>/g, ''); if (comp !== origHtml) { throw `changed substance.\n\nOriginal:\n${origHtml}\n\nCleaned:\n${comp}\n\nFull:\n${newDiv.innerHTML}`; } let emptyCells = newDiv.querySelectorAll(':is(ins, del):empty'); if (emptyCells.length) { console.log('Empty cells found:', ...emptyCells); mw.notify('Empty cells found'); } } async exec(tokens, isSecond) { let s = tokens.map(token => token.s || '').join(''); let modes = isSecond ? ['url', 'link', 'template', 'gallery'] : ['url', 'link', 'template', 'heading', 'gallery']; for (let mode of modes) { await this.search(s, tokens, mode); } } async search(s, tokens, mode, data) { for (let match of s.matchAll(SmartDiff[mode + 'Re'])) { await this[mode + 'Callback']( tokens, ...match.indices.slice(1).map((indices, i) => indices && { s: match[i + 1], indices, tokens, tokenIndices: SmartDiff.tokenIndices }), data ); } } static tokenIndices() { let count = 0, start; for (let [i, token] of this.tokens.entries()) { if (token.s) { if (count === this.indices[0]) { start = i; } if (count === this.indices[1] - 1) { return [start, i + 1]; } count++; } } } static linkRe = /\[\[\s*(?:<tvar(?: [^>]*)?>\s*)?((?:[^<>\[\]{|}])+?)(?:\s*<\/tvar>)?\s*(?:\||\]\])/dg; async linkCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t; if (s.startsWith('/')) { t = await this.getSubpage(s); } else if (s.startsWith('#') && (!this.isView || !this.isSamePage)) { t = mw.Title.newFromText(this.getProp() + s); } else if (s.startsWith('../')) { t = await this.getParentPage(s); } else { t = mw.Title.newFromText(s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } static templateRe = /((?<!{){{\s*(?:(?:#invoke|(?:safe)?subst|msg(?:nw)?|raw|int):\s*)?(?:<tvar(?: [^>]*)?>\s*)?)([^<>\[\]{|}]+?)((?:\s*<\/tvar>)?\s*(\|.*)?(?:}}|$))/dg; async templateCallback(tokens, pre, mid, post, args) { let s = this.decodeWikitext(mid.s, true); let t; if (pre.s.includes('invoke')) { t = mw.Title.makeTitle(828, s); } else if (s.startsWith('#')) { return; } else if (pre.s.includes('int')) { t = mw.Title.makeTitle(8, s); } else if (s.startsWith('/')) { t = await this.getSubpage(s, 10); } else if (s.startsWith('../')) { t = await this.getParentPage(s, 10); } else { if (!pre.s.includes('msg') && !pre.s.includes('raw')) { let match = s.match(/^[^:]+(?::(?=.)|$)/); if (match && SmartDiff.magicWords.includes(match[0])) return; } t = mw.Title.newFromText(s, 10); } if (t) { this.link(tokens, ...mid.tokenIndices(), t); } if (!args) return; let [postStart, postEnd] = post.tokenIndices(); let newPost = tokens.slice(postStart, postEnd); await this.search(post.s, newPost, 'template'); if (!t || !Array.isArray(SmartDiff.templates)) return; let name = t.getMainText(); for (let data of SmartDiff.templates) { if (Array.isArray(data?.names) && Array.prototype.includes.call(data.names, name) ) { await this.search( post.s, newPost, 'templateArgs', { ...data, i: 1 } ); } } tokens.splice(postStart, postEnd - postStart, ...newPost); } static templateArgsRe = /\|\s*(?:([^=|]*?)\s*=)?\s*(?:<tvar(?: [^>]*)?>\s*)?(.*?)(?:\s*<\/tvar>)?\s*(?=\||{{!}}|}}|$)/dg; templateArgsCallback(tokens, name, mid, data) { let n = name ? Number(name.s) || name.s : data.i++; if (typeof n !== 'number' || ( n < data.start || n > data.end || (n % 2 ? data.skipOdd : data.skipEven) )) { return; } let s = this.decodeWikitext(mid.s); if (data.prefix) { s = data.prefix + s; } if (data.suffix) { s += data.suffix; } let t = data.forceNs ? mw.Title.makeTitle(data.namespace, s) : mw.Title.newFromText(s, data.namespace); if (!t) return; this.link( tokens, ...mid.tokenIndices(), t, n >= data.noRedirectStart || n <= data.noRedirectEnd ); } static urlRe = /(\[(?=.+\]))?((?:\bhttps?:)?\/\/[^\s"<>\[\]{|}]*)([^\s"<>\[\]{|}])/dg; urlCallback(tokens, pre, mid, last) { let omitLast; if (!pre) { if (mid.s.startsWith('//')) return; if (last.s === ';') { let match = mid.s.match(/&#?[\da-z]+$/i); if (match) { let source = match[0] + last.s; omitLast = this.decodeWikitext(source) !== source; } } else { let trails = '!,.:?'; if (!mid.s.includes('(')) { trails += ')'; } omitLast = trails.includes(last.s); } } let s = mid.s; if (!omitLast) { s += last.s; } let [midStart, midEnd] = mid.tokenIndices(); this.link( tokens, midStart, omitLast ? midEnd : last.tokenIndices()[1], this.decodeWikitext(s) ); } static headingRe = /^(={1,6})\s*(.+?)\s*(\1)\s*(?=<!--|$)/dg; headingCallback(tokens, pre, mid, post) { if (/{{|<\/?ref(?:\s[^>]*)?>|\[(?:https?:)?\/\/[^\s\[\]]+\]/i.test(mid.s)) return; let s = this.decodeWikitext(mid.s).replace( /'''(.+?)'''|\[\[:?(?:[^|\]]+\|)?([^\]]+)\]\]|<\/?(?:abbr|b|bdi|bdo|big|cite|code|data|del|dfn|em|font|i|ins|kbd|mark|nowiki|q|rb|rp|rt|rtc|ruby|s|samp|small|span|strike|strong|sub|sup|templatestyles|time|translate|tt|u|var)(?:\s[^>]*)?>|<!--.*?-->|\[(?:https?:)?\/\/[^\s\[\]]+\s([^\]]+)\]/gi, '$1$2$3' ).replace(/''(.+?)''/g, '$1'); let t = mw.Title.newFromText( `${!this.isView || !this.isSamePage ? this.getProp() : ''}#${s}` ); if (!t) return; let midIndices = mid.tokenIndices(); if (tokens.slice(...midIndices).some(({ link }) => link)) { this.link(tokens, ...post.tokenIndices(), t); this.link(tokens, ...pre.tokenIndices(), t); } else { this.link(tokens, ...midIndices, t); } } // https://commons.wikimedia.org/wiki/Special:MediaStatistics static galleryRe = /^\s*((?:[^<>\[\]{|}])+\.(?:apng|djv|djvu|flac|gif|jpe|jpeg|jpg|jps|kar|m4a|m4b|m4p|m4r|m4v|mid|midi|mp2|mp3|mp4|mpa|mpe|mpeg|mpg|mpga|oga|ogg|ogm|ogv|ogx|opus|pdf|png|spx|stl|svg|tif|tiff|wav|webm|webp|xcf))\s*(?:\||$)/dgi; galleryCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t = mw.Title.newFromText(s, 6); if (t && t.getNamespaceId() !== 6) { t = mw.Title.makeTitle(6, s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } link(tokens, start, end, mwtOrUrl, noRedirect) { let indices = [], last; tokens.slice(start, end).forEach((token, i) => { if (!token.s && !token.link && !token.esc) return; if (token.s && !token.link) { if (!indices.length || last?.link || last?.esc) { indices.push([start + i]); } indices.at(-1)[1] = start + i + 1; } last = token; }); if (indices.some(chunkIndices => chunkIndices.length !== 2)) { mw.notify('Corrupt chunks found'); debugger; } if (!indices.length) return; let attribs = { class: 'smartdiff-link' }, obj; if (typeof mwtOrUrl === 'string') { attribs.class += ' external'; attribs.href = mwtOrUrl; attribs.rel = 'nofollow'; } else { let title = mwtOrUrl.toText(); if (title) { if (Object.hasOwn(this.titles, title)) { obj = this.titles[title]; if (obj.classes) { attribs.class += ' ' + obj.classes.join(' '); } } else { obj = { links: [] }; this.titles[title] = obj; } if (obj.url) { attribs.href = obj.url; } else { let params = obj.red && { action: 'edit', redlink: 1 } || noRedirect && obj.redirect && { redirect: 'no' }; attribs.href = mw.util.getUrl( obj.canonical || title, params ); } let fragment = mwtOrUrl.getFragment(); if (fragment) { attribs.href += mw.util.getUrl('#' + fragment); } attribs.title = obj.canonical || title; } else { attribs.class += ' mw-selflink-fragment'; attribs.href = mwtOrUrl.getUrl(); } } let links = indices.reverse().map(chunkIndices => ( this.linkChunk(tokens, ...chunkIndices, attribs) )); if (obj && !obj.processed) { obj.links.push(...links); if (noRedirect) { links.forEach(link => { this.noRedirLinks.add(link); }); } } this.divHasLink = true; } linkChunk(tokens, start, end, attribs) { let newStart = start, newEnd = end; let mid = tokens.slice(start, end); let midTags = mid.filter(({ s }) => !s); for (let i = 0; ; i += 2) { if (tokens[newStart - 1]?.openingTag && midTags[i]?.closingTag && tokens[newStart - 1].openingTag.tagName === midTags[i].closingTag.tagName ) { midTags.unshift(tokens[newStart - 1]); newStart--; } else { break; } } for (let i = midTags.length - 1; ; i--) { if (tokens[newEnd]?.closingTag && midTags[i]?.openingTag && tokens[newEnd].closingTag.tagName === midTags[i].openingTag.tagName ) { midTags.push(tokens[newEnd]); newEnd++; } else { break; } } if (start - newStart) { console.log(`Moved up ${start - newStart} times`); } if (start - newStart > 1) { mw.notify(`Moved up ${start - newStart} times`); } if (newEnd - end) { console.log(`Moved down ${newEnd - end} times`); } if (newEnd - end > 1) { mw.notify(`Moved down ${newEnd - end} times`); } let link = $('<a>').attr(attribs)[0]; let pre = [{ openingTag: link, link }]; let post = [{ closingTag: link, link }]; if (midTags[0]?.closingTag) { pre.unshift({ ...midTags[0] }); pre.push({ openingTag: midTags[0].closingTag }); } if (midTags.at(-1)?.openingTag) { post.unshift({ closingTag: midTags.at(-1).openingTag }); post.push({ ...midTags.at(-1) }); } tokens.splice(newEnd, 0, ...post); tokens.splice(newStart, 0, ...pre); mid.forEach(token => { if (token.s) { token.link = link; } }); return link; } decodeWikitext(text, decodePercents) { let s = text; if (decodePercents) { try { s = decodeURIComponent(s); } catch {} } return $($.parseHTML(s)).text(); } async getSubpage(s, fallbackNs) { if (await this.canHaveSubpages()) { return mw.Title.newFromText( this.getProp() + s.replace(/\/+$/, '') ); } return mw.Title.newFromText(s, fallbackNs); } async getParentPage(s, fallbackNs) { if (await this.canHaveSubpages()) { let chunks = s.split('/'); let levelCount = chunks.findIndex(v => v !== '..'); let sup = this.getProp().split('/').slice(0, -levelCount).join('/'); if (sup) { let sub = chunks.slice(levelCount).join('/').replace(/\/+$/, ''); return mw.Title.newFromText(sub ? `${sup}/${sub}` : sup); } } return mw.Title.newFromText(s, fallbackNs); } async canHaveSubpages(ns = this.getProp('ns')) { SmartDiff.subNs = SmartDiff.subNs || mw.config.get('wgVisualEditorConfig')?.namespacesWithSubpages || Object.values((await new mw.Api().get({ action: 'query', meta: 'siteinfo', siprop: 'namespaces', formatversion: 2 })).query.namespaces).filter(n => n.subpages).map(n => n.id); return SmartDiff.subNs.includes(ns); } getProp(n = 'pn') { if (this[this.side]) { this.sidePropUsed = !this.isSamePage; return this[this.side][n]; } if (Object.hasOwn(this, n)) { return this[n]; } this.pn = mw.config.get('wgPageName'); this.ns = mw.config.get('wgNamespaceNumber'); return this[n]; } async queryTitles() { let unprocessed = Object.entries(this.titles) .filter(([, v]) => !v.processed).slice(0, 500).map(([k]) => k); while (unprocessed.length) { let curTitles = unprocessed.slice(0, 50); curTitles.forEach(title => { this.titles[title].processed = true; }); let { query } = await new mw.Api().post({ action: 'query', titles: curTitles, iwurl: 1, prop: 'info', inprop: 'linkclasses', inlinkcontext: this.getProp(), formatversion: 2 }, { headers: { 'Promise-Non-Write-API-Action': 1 } }); query.pages?.forEach(p => { let obj = (this.titles[p.title] ??= {}); let classes = p.linkclasses || []; if (p.missing && !p.known) { classes.push('new'); obj.red = true; } else if (p.redirect) { obj.redirect = true; } if (classes.length) { obj.classes = classes; } }); query.interwiki?.forEach(iw => { this.titles[iw.title] = { classes: ['extiw'], url: iw.url }; }); query.normalized?.forEach(({ from, to }) => { if (!Object.hasOwn(this.titles, to)) return; this.titles[from] = { ...this.titles[to], canonical: to }; }); curTitles.forEach(title => { let obj = this.titles[title]; if (obj.classes) { $(obj.links).addClass(obj.classes); } if (obj.redirect) { $(obj.links).attr('href', (_, link) => { return mw.util.getUrl( obj.canonical || title, this.noRedirLinks.has(link) && { redirect: 'no' } ) + link.hash; }); } else { let url = obj.url || obj.red && mw.util.getUrl( obj.canonical || title, { action: 'edit', redlink: 1 } ) || obj.canonical && mw.util.getUrl(obj.canonical); if (url) { $(obj.links).attr('href', function () { return url + this.hash; }); } } if (obj.canonical) { $(obj.links).attr('title', obj.canonical); } obj.links = []; }); unprocessed = unprocessed.slice(50); } } static sds = new WeakMap(); static templates = window.smartdiffTemplates; static magicWords = [ '!', '=', 'BASEPAGENAME', 'BASEPAGENAME:', 'BASEPAGENAMEE', 'BASEPAGENAMEE:', 'canonicalurl:', 'CURRENTDAY', 'CURRENTDAY2', 'CURRENTDAYNAME', 'CURRENTDOW', 'CURRENTHOUR', 'CURRENTMONTH', 'CURRENTMONTH1', 'CURRENTMONTHABBREV', 'CURRENTMONTHNAME', 'CURRENTMONTHNAMEGEN', 'CURRENTTIME', 'CURRENTTIMESTAMP', 'CURRENTVERSION', 'CURRENTWEEK', 'CURRENTYEAR', 'DEFAULTCATEGORYSORT:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DISPLAYTITLE:', 'filepath:', 'formatnum:', 'FULLPAGENAME', 'FULLPAGENAME:', 'FULLPAGENAMEE', 'FULLPAGENAMEE:', 'fullurl:', 'gender:', 'lc:', 'lcfirst:', 'LOCALDAY', 'LOCALDAY2', 'LOCALDAYNAME', 'LOCALDOW', 'LOCALHOUR', 'LOCALMONTH', 'LOCALMONTH1', 'LOCALMONTHABBREV', 'LOCALMONTHNAME', 'LOCALMONTHNAMEGEN', 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCALWEEK', 'LOCALYEAR','NAMESPACE', 'NAMESPACE:', 'NAMESPACEE', 'NAMESPACEE:', 'NAMESPACENUMBER', 'NAMESPACENUMBER:', 'ns:', 'NUMBEROFACTIVEUSERS', 'NUMBEROFARTICLES', 'NUMBEROFEDITS', 'NUMBEROFFILES', 'NUMBEROFPAGES', 'NUMBEROFUSERS', 'padleft:', 'PAGENAME', 'PAGENAMEE', 'PAGESINCAT:', 'PAGESINCATEGORY:', 'plural:', 'REVISIONDAY', 'REVISIONDAY:', 'REVISIONDAY2', 'REVISIONDAY2:', 'REVISIONID', 'REVISIONID:', 'REVISIONMONTH', 'REVISIONMONTH:', 'REVISIONMONTH1', 'REVISIONMONTH1:', 'REVISIONSIZE', 'REVISIONTIMESTAMP', 'REVISIONTIMESTAMP:', 'REVISIONUSER', 'REVISIONUSER:', 'REVISIONYEAR', 'REVISIONYEAR:', 'ROOTPAGENAME', 'ROOTPAGENAME:', 'ROOTPAGENAMEE', 'ROOTPAGENAMEE:', 'SHORTDESC:', 'SUBJECTPAGENAME', 'SUBJECTPAGENAME:', 'SUBJECTPAGENAMEE', 'SUBJECTPAGENAMEE:', 'SUBJECTSPACE', 'SUBJECTSPACE:', 'SUBJECTSPACEE', 'SUBJECTSPACEE:', 'SUBPAGENAME', 'SUBPAGENAME:', 'SUBPAGENAMEE', 'SUBPAGENAMEE:', 'TALKPAGENAME', 'TALKPAGENAME:', 'TALKPAGENAMEE', 'TALKPAGENAMEE:', 'TALKSPACE', 'TALKSPACE:', 'TALKSPACEE', 'TALKSPACEE:', 'uc:', 'ucfirst:', 'urlencode:' ]; } if (Array.isArray(window.smartdiffMagicWords)) { SmartDiff.magicWords.push(...window.smartdiffMagicWords); } mw.hook('wikipage.diff').add((window.sdcb = ($diff => { window.sd = new SmartDiff($diff); }))); mw.hook('wikipage.diff.wikitextBodyUpdate').add((window.sdcbu = ($rows => { let $diff = $rows.closest('.diff'); let sd = SmartDiff.sds.get($diff[0]); if (sd) { sd.init($rows.filter(function () { return this.checkVisibility(); })); } else { window.sd = new SmartDiff($diff); } }))); }); ma5qteojlgzjpul7v7wgbg0otyiiw22 768681 768680 2026-10-17T05:37:23Z Nardog 40946 768681 javascript text/javascript mw.hook('wikipage.diff').remove(window.sdcb); mw.hook('wikipage.diff.wikitextBodyUpdate').remove(window.sdcbu); $('.smartdiff-link').contents().unwrap().end().remove(); $(':is(.diff-addedline, .diff-addedline, .diff-context) > div, .mw-diff-inline-added, .mw-diff-inline-deleted, .mw-diff-inline-changed').contents().each(function () { if (this.previousSibling && this.previousSibling.tagName === this.tagName) { this.previousSibling.textContent += this.textContent; this.remove(); } }); window.smartdiffTemplates = [ { names: ['T', 'Tl'], namespace: 10, forceNs: true, end: 1 }, { names: ['Tlx'], namespace: 10, end: 1 }, { names: ['U'], prefix: 'Special:Contributions/', end: 1 }, { names: ['Re', 'Reply to', 'Ping'], prefix: 'Special:Contributions/' }, { names: ['About'], start: 3, skipEven: true }, { names: ['For'], start: 2 }, { names: ['Other uses', 'Otheruses'], end: 1 }, { names: ['Section link', 'Slink'], end: 1 }, { names: ['Redirect'], skipEven: true, noRedirectEnd: 1 }, { names: ['Shortcut'], noRedirectStart: 1 }, { names: ['Tracked', 'Phab'], prefix: 'phab:', end: 1 }, { names: [ 'Distinguish', 'Main', 'Main article', 'Further', 'See also', 'Seealso' ] }, { names: ['Ll'], end: 1 } ]; mw.loader.using([ 'mediawiki.util', 'mediawiki.Title', 'mediawiki.api' ], () => { mw.loader.addStyleTag(`body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external) { color: #36b; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):visited { color: #636; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):active { color: #b63; }`); class SmartDiff { constructor($diff) { this.now = performance.now(); this.$diff = $diff; this.isView = mw.config.get('wgNamespaceNumber') !== -1 && mw.config.get('wgAction') === 'view' && $diff.nextAll().is('.diff-hr'); [ ['old', '#mw-diff-otitle1 a, #differences-prevlink'], ['new', '#mw-diff-ntitle1 a, #differences-nextlink'] ].forEach(([side, selector]) => { let link = this.$diff[0].querySelector(selector); let pn = link && mw.util.getParamValue('title', link.search); if (pn) { this[side] = { pn, ns: mw.Title.newFromText(pn).getNamespaceId() }; } }); this.isSamePage = this.old?.pn === this.new?.pn; this.titles = {}; this.noRedirLinks = new WeakSet(); SmartDiff.sds.set($diff[0], this); this.init(); } async init($rows = this.$diff) { this.side = 'old'; for (let div of $rows.find( '.diff-deletedline > div, .mw-diff-inline-deleted' )) { await this.processLine(div); } this.side = 'new'; for (let div of $rows.find( '.diff-addedline > div, .mw-diff-inline-added, .mw-diff-inline-context' )) { await this.processLine(div); } for (let div of $rows.find( '.mw-diff-inline-changed, .mw-diff-inline-moved' )) { await this.processLine(div, true); } let $contexts = $rows.find('.diff-context > div'), clones = []; for (let [i, div] of $contexts.get().entries()) { if (i % 2) { this.side = 'new'; if (this.sidePropUsed) { await this.processLine(div); } else if (this.divHasLink) { div.replaceChildren(...$contexts.eq(i - 1).contents().clone()); clones.push(div); } } else { this.side = 'old'; this.sidePropUsed = false; await this.processLine(div); } } $(clones).find('.smartdiff-link[title]').each((_, link) => { this.titles[link.title]?.links.push(link); }); this.queryTitles(); if (this.hasError) { mw.notify('SmartDiff error', { type: 'warn' }); } console.log(performance.now() - this.now); } async processLine(div, isInlineChange) { this.divHasLink = false; let tokens; if (isInlineChange) { tokens = this.tokenize( div, 'del, .mw-diff-movedpara-left, .mw-diff-movedpara-right' ); this.side = 'new'; await this.exec(tokens); this.escapeTags(tokens, 'ins'); this.unescapeTags(tokens, 'del'); this.side = 'old'; await this.exec(tokens, true); this.unescapeTags(tokens); } else { tokens = this.tokenize(div); await this.exec(tokens); } if (!this.divHasLink) return; try { let newDiv = this.unescape(tokens); this.verify(div, newDiv); div.replaceChildren(...newDiv.childNodes); } catch (e) { debugger; if (typeof e === 'string') { this.hasError = true; console.warn(`SmartDiff error: ${e}`); } else { throw e; } } } tokenize(el, escSelector) { return [...el.childNodes].flatMap(node => { if (node.nodeType === 3) { return node.textContent.split('').map(s => ({ s })); } if (node.nodeType !== 1) { return []; } if (escSelector && node.matches(escSelector)) { return [ { openingTag: node }, { esc: this.tokenize(node, escSelector), tag: node }, { closingTag: node } ]; } return [ { openingTag: node }, ...this.tokenize(node, escSelector), { closingTag: node } ]; }); } escapeTags(tokens, selector) { let openTags = [], data = []; tokens.forEach((token, i) => { if (token.openingTag?.matches(selector)) { openTags.push([token.openingTag, i + 1]); } else if (token.closingTag && openTags.length && token.closingTag.tagName === openTags.at(-1)[0].tagName ) { data.push([...openTags.pop(), i]); } }); data.reverse().forEach(([tag, start, end]) => { let token = { tag }; token.esc = tokens.splice(start, end - start, token); }); } unescapeTags(tokens, selector) { tokens.splice(0, Infinity, ...tokens.flatMap(token => ( token.esc && (!selector || token.tag.matches(selector)) ? token.esc : [token] ))); } unescape(tokens) { let els = [$('<div>')[0]], lastText = ''; tokens.forEach(token => { if (token.openingTag) { if (lastText) { els.at(-1).append(lastText); lastText = ''; } let el = token.openingTag; if (!token.link) { el = el.cloneNode(); } els.at(-1).append(el); els.push(el); } else if (token.closingTag) { let el = els.pop(); if (!els.length) { throw `too many closing tags.\n\n${el.innerHTML}`; } if (el.tagName !== token.closingTag.tagName) { throw `expected </${ token.closingTag.tagName }>, got </${el.tagName}>.\n\n${els[0].innerHTML}`; } if (lastText) { el.append(lastText); lastText = ''; } } else { lastText += token.s; } }); if (lastText) { els.at(-1).append(lastText); } if (els.length !== 1) { throw `too many opening tags.\n\n${els[0].innerHTML}`; } return els[0]; } verify(div, newDiv) { let origHtml = div.innerHTML; let $comp = $(newDiv).clone(); $comp.find('.smartdiff-link').contents().unwrap(); let comp = $comp.html().replace(/<\/(ins|del)><\1(?: [^>]+)?>/g, ''); if (comp !== origHtml) { throw `changed substance.\n\nOriginal:\n${origHtml}\n\nCleaned:\n${comp}\n\nFull:\n${newDiv.innerHTML}`; } let emptyCells = newDiv.querySelectorAll(':is(ins, del):empty'); if (emptyCells.length) { console.log('Empty cells found:', ...emptyCells); mw.notify('Empty cells found'); } } async exec(tokens, isSecond) { let s = tokens.map(token => token.s || '').join(''); let modes = isSecond ? ['url', 'link', 'template', 'gallery'] : ['url', 'link', 'template', 'heading', 'gallery']; for (let mode of modes) { await this.search(s, tokens, mode); } } async search(s, tokens, mode, data) { for (let match of s.matchAll(SmartDiff[mode + 'Re'])) { await this[mode + 'Callback']( tokens, ...match.indices.slice(1).map((indices, i) => indices && { s: match[i + 1], indices, tokens, tokenIndices: SmartDiff.tokenIndices }), data ); } } static tokenIndices() { let count = 0, start; for (let [i, token] of this.tokens.entries()) { if (token.s) { if (count === this.indices[0]) { start = i; } if (count === this.indices[1] - 1) { return [start, i + 1]; } count++; } } } static linkRe = /\[\[\s*(?:<tvar(?: [^>]*)?>\s*)?((?:[^<>\[\]{|}])+?)(?:\s*<\/tvar>)?\s*(?:\||\]\])/dg; async linkCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t; if (s.startsWith('/')) { t = await this.getSubpage(s); } else if (s.startsWith('#') && (!this.isView || !this.isSamePage)) { t = mw.Title.newFromText(this.getProp() + s); } else if (s.startsWith('../')) { t = await this.getParentPage(s); } else { t = mw.Title.newFromText(s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } static templateRe = /((?<!{){{\s*(?:(?:#invoke|(?:safe)?subst|msg(?:nw)?|raw|int):\s*)?(?:<tvar(?: [^>]*)?>\s*)?)([^<>\[\]{|}]+?)((?:\s*<\/tvar>)?\s*(\|.*)?(?:}}|$))/dg; async templateCallback(tokens, pre, mid, post, args) { let s = this.decodeWikitext(mid.s, true); let t; if (pre.s.includes('invoke')) { t = mw.Title.makeTitle(828, s); } else if (s.startsWith('#')) { return; } else if (pre.s.includes('int')) { t = mw.Title.makeTitle(8, s); } else if (s.startsWith('/')) { t = await this.getSubpage(s, 10); } else if (s.startsWith('../')) { t = await this.getParentPage(s, 10); } else { if (!pre.s.includes('msg') && !pre.s.includes('raw')) { let match = s.match(/^[^:]+(?::(?=.)|$)/); if (match && SmartDiff.magicWords.includes(match[0])) return; } t = mw.Title.newFromText(s, 10); } if (t) { this.link(tokens, ...mid.tokenIndices(), t); } if (!args) return; let [postStart, postEnd] = post.tokenIndices(); let newPost = tokens.slice(postStart, postEnd); await this.search(post.s, newPost, 'template'); if (!t || !Array.isArray(SmartDiff.templates)) return; let name = t.getMainText(); for (let data of SmartDiff.templates) { if (Array.isArray(data?.names) && Array.prototype.includes.call(data.names, name) ) { await this.search( post.s, newPost, 'templateArgs', { ...data, i: 1 } ); } } tokens.splice(postStart, postEnd - postStart, ...newPost); } static templateArgsRe = /\|\s*(?:([^=|]*?)\s*=)?\s*(?:<tvar(?: [^>]*)?>\s*)?(.*?)(?:\s*<\/tvar>)?\s*(?=\||{{!}}|}}|$)/dg; templateArgsCallback(tokens, name, mid, data) { let n = name ? Number(name.s) || name.s : data.i++; if (typeof n !== 'number' || ( n < data.start || n > data.end || (n % 2 ? data.skipOdd : data.skipEven) )) { return; } let s = this.decodeWikitext(mid.s); if (data.prefix) { s = data.prefix + s; } if (data.suffix) { s += data.suffix; } let t = data.forceNs ? mw.Title.makeTitle(data.namespace, s) : mw.Title.newFromText(s, data.namespace); if (!t) return; this.link( tokens, ...mid.tokenIndices(), t, n >= data.noRedirectStart || n <= data.noRedirectEnd ); } static urlRe = /(\[(?=.+\]))?((?:\bhttps?:)?\/\/[^\s"<>\[\]{|}]*)([^\s"<>\[\]{|}])/dg; urlCallback(tokens, pre, mid, last) { let omitLast; if (!pre) { if (mid.s.startsWith('//')) return; if (last.s === ';') { let match = mid.s.match(/&#?[\da-z]+$/i); if (match) { let source = match[0] + last.s; omitLast = this.decodeWikitext(source) !== source; } } else { let trails = '!,.:?'; if (!mid.s.includes('(')) { trails += ')'; } omitLast = trails.includes(last.s); } } let s = mid.s; if (!omitLast) { s += last.s; } let [midStart, midEnd] = mid.tokenIndices(); this.link( tokens, midStart, omitLast ? midEnd : last.tokenIndices()[1], this.decodeWikitext(s) ); } static headingRe = /^(={1,6})\s*(.+?)\s*(\1)\s*(?=<!--|$)/dg; headingCallback(tokens, pre, mid, post) { if (/{{|<\/?ref(?:\s[^>]*)?>|\[(?:https?:)?\/\/[^\s\[\]]+\]/i.test(mid.s)) return; let s = this.decodeWikitext(mid.s).replace( /'''(.+?)'''|\[\[:?(?:[^|\]]+\|)?([^\]]+)\]\]|<\/?(?:abbr|b|bdi|bdo|big|cite|code|data|del|dfn|em|font|i|ins|kbd|mark|nowiki|q|rb|rp|rt|rtc|ruby|s|samp|small|span|strike|strong|sub|sup|templatestyles|time|translate|tt|u|var)(?:\s[^>]*)?>|<!--.*?-->|\[(?:https?:)?\/\/[^\s\[\]]+\s([^\]]+)\]/gi, '$1$2$3' ).replace(/''(.+?)''/g, '$1'); let t = mw.Title.newFromText( `${!this.isView || !this.isSamePage ? this.getProp() : ''}#${s}` ); if (!t) return; let midIndices = mid.tokenIndices(); if (tokens.slice(...midIndices).some(({ link }) => link)) { this.link(tokens, ...post.tokenIndices(), t); this.link(tokens, ...pre.tokenIndices(), t); } else { this.link(tokens, ...midIndices, t); } } // https://commons.wikimedia.org/wiki/Special:MediaStatistics static galleryRe = /^\s*((?:[^<>\[\]{|}])+\.(?:apng|djv|djvu|flac|gif|jpe|jpeg|jpg|jps|kar|m4a|m4b|m4p|m4r|m4v|mid|midi|mp2|mp3|mp4|mpa|mpe|mpeg|mpg|mpga|oga|ogg|ogm|ogv|ogx|opus|pdf|png|spx|stl|svg|tif|tiff|wav|webm|webp|xcf))\s*(?:\||$)/dgi; galleryCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t = mw.Title.newFromText(s, 6); if (t && t.getNamespaceId() !== 6) { t = mw.Title.makeTitle(6, s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } link(tokens, start, end, mwtOrUrl, noRedirect) { let indices = [], last; tokens.slice(start, end).forEach((token, i) => { if (!token.s && !token.link && !token.esc) return; if (token.s && !token.link) { if (!indices.length || last?.link || last?.esc) { indices.push([start + i]); } indices.at(-1)[1] = start + i + 1; } last = token; }); if (indices.some(chunkIndices => chunkIndices.length !== 2)) { mw.notify('Corrupt chunks found'); debugger; } if (!indices.length) return; let attribs = { class: 'smartdiff-link' }, obj; if (typeof mwtOrUrl === 'string') { attribs.class += ' external'; attribs.href = mwtOrUrl; attribs.rel = 'nofollow'; } else { let title = mwtOrUrl.toText(); if (title) { if (Object.hasOwn(this.titles, title)) { obj = this.titles[title]; if (obj.classes) { attribs.class += ' ' + obj.classes.join(' '); } } else { obj = { links: [] }; this.titles[title] = obj; } if (obj.url) { attribs.href = obj.url; } else { let params = obj.red && { action: 'edit', redlink: 1 } || noRedirect && obj.redirect && { redirect: 'no' }; attribs.href = mw.util.getUrl( obj.canonical || title, params ); } let fragment = mwtOrUrl.getFragment(); if (fragment) { attribs.href += mw.util.getUrl('#' + fragment); } attribs.title = obj.canonical || title; } else { attribs.class += ' mw-selflink-fragment'; attribs.href = mwtOrUrl.getUrl(); } } let links = indices.reverse().map(chunkIndices => ( this.linkChunk(tokens, ...chunkIndices, attribs) )); if (obj && !obj.processed) { obj.links.push(...links); if (noRedirect) { links.forEach(link => { this.noRedirLinks.add(link); }); } } this.divHasLink = true; } linkChunk(tokens, start, end, attribs) { let newStart = start, newEnd = end; let mid = tokens.slice(start, end); let midTags = mid.filter(({ s }) => !s); for (let i = 0; ; i += 2) { if (tokens[newStart - 1]?.openingTag && midTags[i]?.closingTag && tokens[newStart - 1].openingTag.tagName === midTags[i].closingTag.tagName ) { midTags.unshift(tokens[newStart - 1]); newStart--; } else { break; } } for (let i = midTags.length - 1; ; i--) { if (tokens[newEnd]?.closingTag && midTags[i]?.openingTag && tokens[newEnd].closingTag.tagName === midTags[i].openingTag.tagName ) { midTags.push(tokens[newEnd]); newEnd++; } else { break; } } if (start - newStart) { console.log(`Moved up ${start - newStart} times`); } if (start - newStart > 1) { mw.notify(`Moved up ${start - newStart} times`); } if (newEnd - end) { console.log(`Moved down ${newEnd - end} times`); } if (newEnd - end > 1) { mw.notify(`Moved down ${newEnd - end} times`); } let link = $('<a>').attr(attribs)[0]; let pre = [{ openingTag: link, link }]; let post = [{ closingTag: link, link }]; if (midTags[0]?.closingTag) { pre.unshift({ ...midTags[0] }); pre.push({ openingTag: midTags[0].closingTag }); } if (midTags.at(-1)?.openingTag) { post.unshift({ closingTag: midTags.at(-1).openingTag }); post.push({ ...midTags.at(-1) }); } tokens.splice(newEnd, 0, ...post); tokens.splice(newStart, 0, ...pre); mid.forEach(token => { if (token.s) { token.link = link; } }); return link; } decodeWikitext(text, decodePercents) { let s = text; if (decodePercents) { try { s = decodeURIComponent(s); } catch {} } return $($.parseHTML(s)).text(); } async getSubpage(s, fallbackNs) { if (await this.canHaveSubpages()) { return mw.Title.newFromText( this.getProp() + s.replace(/\/+$/, '') ); } return mw.Title.newFromText(s, fallbackNs); } async getParentPage(s, fallbackNs) { if (await this.canHaveSubpages()) { let chunks = s.split('/'); let levelCount = chunks.findIndex(v => v !== '..'); let sup = this.getProp().split('/').slice(0, -levelCount).join('/'); if (sup) { let sub = chunks.slice(levelCount).join('/').replace(/\/+$/, ''); return mw.Title.newFromText(sub ? `${sup}/${sub}` : sup); } } return mw.Title.newFromText(s, fallbackNs); } async canHaveSubpages(ns = this.getProp('ns')) { SmartDiff.subNs = SmartDiff.subNs || mw.config.get('wgVisualEditorConfig')?.namespacesWithSubpages || Object.values((await new mw.Api().get({ action: 'query', meta: 'siteinfo', siprop: 'namespaces', formatversion: 2 })).query.namespaces).filter(n => n.subpages).map(n => n.id); return SmartDiff.subNs.includes(ns); } getProp(n = 'pn') { if (this[this.side]) { this.sidePropUsed = !this.isSamePage; return this[this.side][n]; } if (Object.hasOwn(this, n)) { return this[n]; } this.pn = mw.config.get('wgPageName'); this.ns = mw.config.get('wgNamespaceNumber'); return this[n]; } async queryTitles() { let unprocessed = Object.entries(this.titles) .filter(([, v]) => !v.processed).slice(0, 500).map(([k]) => k); while (unprocessed.length) { let curTitles = unprocessed.slice(0, 50); curTitles.forEach(title => { this.titles[title].processed = true; }); let { query } = await new mw.Api().post({ action: 'query', titles: curTitles, iwurl: 1, prop: 'info', inprop: 'linkclasses', inlinkcontext: this.getProp(), formatversion: 2 }, { headers: { 'Promise-Non-Write-API-Action': 1 } }); query.pages?.forEach(p => { let obj = (this.titles[p.title] ??= {}); let classes = p.linkclasses || []; if (p.missing && !p.known) { classes.push('new'); obj.red = true; } else if (p.redirect) { obj.redirect = true; } if (classes.length) { obj.classes = classes; } }); query.interwiki?.forEach(iw => { this.titles[iw.title] = { classes: ['extiw'], url: iw.url }; }); query.normalized?.forEach(({ from, to }) => { this.titles[from] = { ...this.titles[to], canonical: to }; }); curTitles.forEach(title => { let obj = this.titles[title]; if (obj.classes) { $(obj.links).addClass(obj.classes); } if (obj.redirect) { $(obj.links).attr('href', (_, link) => { return mw.util.getUrl( obj.canonical || title, this.noRedirLinks.has(link) && { redirect: 'no' } ) + link.hash; }); } else { let url = obj.url || obj.red && mw.util.getUrl( obj.canonical || title, { action: 'edit', redlink: 1 } ) || obj.canonical && mw.util.getUrl(obj.canonical); if (url) { $(obj.links).attr('href', function () { return url + this.hash; }); } } if (obj.canonical) { $(obj.links).attr('title', obj.canonical); } obj.links = []; }); unprocessed = unprocessed.slice(50); } } static sds = new WeakMap(); static templates = window.smartdiffTemplates; static magicWords = [ '!', '=', 'BASEPAGENAME', 'BASEPAGENAME:', 'BASEPAGENAMEE', 'BASEPAGENAMEE:', 'canonicalurl:', 'CURRENTDAY', 'CURRENTDAY2', 'CURRENTDAYNAME', 'CURRENTDOW', 'CURRENTHOUR', 'CURRENTMONTH', 'CURRENTMONTH1', 'CURRENTMONTHABBREV', 'CURRENTMONTHNAME', 'CURRENTMONTHNAMEGEN', 'CURRENTTIME', 'CURRENTTIMESTAMP', 'CURRENTVERSION', 'CURRENTWEEK', 'CURRENTYEAR', 'DEFAULTCATEGORYSORT:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DISPLAYTITLE:', 'filepath:', 'formatnum:', 'FULLPAGENAME', 'FULLPAGENAME:', 'FULLPAGENAMEE', 'FULLPAGENAMEE:', 'fullurl:', 'gender:', 'lc:', 'lcfirst:', 'LOCALDAY', 'LOCALDAY2', 'LOCALDAYNAME', 'LOCALDOW', 'LOCALHOUR', 'LOCALMONTH', 'LOCALMONTH1', 'LOCALMONTHABBREV', 'LOCALMONTHNAME', 'LOCALMONTHNAMEGEN', 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCALWEEK', 'LOCALYEAR','NAMESPACE', 'NAMESPACE:', 'NAMESPACEE', 'NAMESPACEE:', 'NAMESPACENUMBER', 'NAMESPACENUMBER:', 'ns:', 'NUMBEROFACTIVEUSERS', 'NUMBEROFARTICLES', 'NUMBEROFEDITS', 'NUMBEROFFILES', 'NUMBEROFPAGES', 'NUMBEROFUSERS', 'padleft:', 'PAGENAME', 'PAGENAMEE', 'PAGESINCAT:', 'PAGESINCATEGORY:', 'plural:', 'REVISIONDAY', 'REVISIONDAY:', 'REVISIONDAY2', 'REVISIONDAY2:', 'REVISIONID', 'REVISIONID:', 'REVISIONMONTH', 'REVISIONMONTH:', 'REVISIONMONTH1', 'REVISIONMONTH1:', 'REVISIONSIZE', 'REVISIONTIMESTAMP', 'REVISIONTIMESTAMP:', 'REVISIONUSER', 'REVISIONUSER:', 'REVISIONYEAR', 'REVISIONYEAR:', 'ROOTPAGENAME', 'ROOTPAGENAME:', 'ROOTPAGENAMEE', 'ROOTPAGENAMEE:', 'SHORTDESC:', 'SUBJECTPAGENAME', 'SUBJECTPAGENAME:', 'SUBJECTPAGENAMEE', 'SUBJECTPAGENAMEE:', 'SUBJECTSPACE', 'SUBJECTSPACE:', 'SUBJECTSPACEE', 'SUBJECTSPACEE:', 'SUBPAGENAME', 'SUBPAGENAME:', 'SUBPAGENAMEE', 'SUBPAGENAMEE:', 'TALKPAGENAME', 'TALKPAGENAME:', 'TALKPAGENAMEE', 'TALKPAGENAMEE:', 'TALKSPACE', 'TALKSPACE:', 'TALKSPACEE', 'TALKSPACEE:', 'uc:', 'ucfirst:', 'urlencode:' ]; } if (Array.isArray(window.smartdiffMagicWords)) { SmartDiff.magicWords.push(...window.smartdiffMagicWords); } mw.hook('wikipage.diff').add((window.sdcb = ($diff => { window.sd = new SmartDiff($diff); }))); mw.hook('wikipage.diff.wikitextBodyUpdate').add((window.sdcbu = ($rows => { let $diff = $rows.closest('.diff'); let sd = SmartDiff.sds.get($diff[0]); if (sd) { sd.init($rows.filter(function () { return this.checkVisibility(); })); } else { window.sd = new SmartDiff($diff); } }))); }); t6ubonal9xowdupad1w4j233kxwo01i 768682 768681 2026-10-17T05:46:47Z Nardog 40946 768682 javascript text/javascript mw.hook('wikipage.diff').remove(window.sdcb); mw.hook('wikipage.diff.wikitextBodyUpdate').remove(window.sdcbu); $('.smartdiff-link').contents().unwrap().end().remove(); $(':is(.diff-addedline, .diff-addedline, .diff-context) > div, .mw-diff-inline-added, .mw-diff-inline-deleted, .mw-diff-inline-changed').contents().each(function () { if (this.previousSibling && this.previousSibling.tagName === this.tagName) { this.previousSibling.textContent += this.textContent; this.remove(); } }); window.smartdiffTemplates = [ { names: ['T', 'Tl'], namespace: 10, forceNs: true, end: 1 }, { names: ['Tlx'], namespace: 10, end: 1 }, { names: ['U'], prefix: 'Special:Contributions/', end: 1 }, { names: ['Re', 'Reply to', 'Ping'], prefix: 'Special:Contributions/' }, { names: ['About'], start: 3, skipEven: true }, { names: ['For'], start: 2 }, { names: ['Other uses', 'Otheruses'], end: 1 }, { names: ['Section link', 'Slink'], end: 1 }, { names: ['Redirect'], skipEven: true, noRedirectEnd: 1 }, { names: ['Shortcut'], noRedirectStart: 1 }, { names: ['Tracked', 'Phab'], prefix: 'phab:', end: 1 }, { names: [ 'Distinguish', 'Main', 'Main article', 'Further', 'See also', 'Seealso' ] }, { names: ['Ll'], end: 1 } ]; mw.loader.using([ 'mediawiki.util', 'mediawiki.Title', 'mediawiki.api' ], () => { mw.loader.addStyleTag(`body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external) { color: #36b; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):visited { color: #636; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):active { color: #b63; }`); class SmartDiff { constructor($diff) { this.now = performance.now(); this.$diff = $diff; this.isView = mw.config.get('wgNamespaceNumber') !== -1 && mw.config.get('wgAction') === 'view' && $diff.nextAll().is('.diff-hr'); [ ['old', '#mw-diff-otitle1 a, #differences-prevlink'], ['new', '#mw-diff-ntitle1 a, #differences-nextlink'] ].forEach(([side, selector]) => { let link = this.$diff[0].querySelector(selector); let pn = link && mw.util.getParamValue('title', link.search); if (pn) { this[side] = { pn, ns: mw.Title.newFromText(pn).getNamespaceId() }; } }); this.isSamePage = this.old?.pn === this.new?.pn; this.titles = {}; this.noRedirLinks = new WeakSet(); SmartDiff.sds.set($diff[0], this); this.init(); } async init($rows = this.$diff) { this.side = 'old'; for (let div of $rows.find( '.diff-deletedline > div, .mw-diff-inline-deleted' )) { await this.processLine(div); } this.side = 'new'; for (let div of $rows.find( '.diff-addedline > div, .mw-diff-inline-added, .mw-diff-inline-context' )) { await this.processLine(div); } for (let div of $rows.find( '.mw-diff-inline-changed, .mw-diff-inline-moved' )) { await this.processLine(div, true); } let $contexts = $rows.find('.diff-context > div'), clones = []; for (let [i, div] of $contexts.get().entries()) { if (i % 2) { this.side = 'new'; if (this.sidePropUsed) { await this.processLine(div); } else if (this.divHasLink) { div.replaceChildren(...$contexts.eq(i - 1).contents().clone()); clones.push(div); } } else { this.side = 'old'; this.sidePropUsed = false; await this.processLine(div); } } $(clones).find('.smartdiff-link[title]').each((_, link) => { this.titles[link.title]?.links.push(link); }); this.queryTitles(); if (this.hasError) { mw.notify('SmartDiff error', { type: 'warn' }); } console.log(performance.now() - this.now); } async processLine(div, isInlineChange) { this.divHasLink = false; let tokens; if (isInlineChange) { tokens = this.tokenize( div, 'del, .mw-diff-movedpara-left, .mw-diff-movedpara-right' ); this.side = 'new'; await this.exec(tokens); this.escapeTags(tokens, 'ins'); this.unescapeTags(tokens, 'del'); this.side = 'old'; await this.exec(tokens, true); this.unescapeTags(tokens); } else { tokens = this.tokenize(div); await this.exec(tokens); } if (!this.divHasLink) return; try { let newDiv = this.unescape(tokens); this.verify(div, newDiv); div.replaceChildren(...newDiv.childNodes); } catch (e) { debugger; if (typeof e === 'string') { this.hasError = true; console.warn(`SmartDiff error: ${e}`); } else { throw e; } } } tokenize(el, escSelector) { return [...el.childNodes].flatMap(node => { if (node.nodeType === 3) { return node.textContent.split('').map(s => ({ s })); } if (node.nodeType !== 1) { return []; } if (escSelector && node.matches(escSelector)) { return [ { openingTag: node }, { esc: this.tokenize(node, escSelector), tag: node }, { closingTag: node } ]; } return [ { openingTag: node }, ...this.tokenize(node, escSelector), { closingTag: node } ]; }); } escapeTags(tokens, selector) { let openTags = [], data = []; tokens.forEach((token, i) => { if (token.openingTag?.matches(selector)) { openTags.push([token.openingTag, i + 1]); } else if (token.closingTag && openTags.length && token.closingTag.tagName === openTags.at(-1)[0].tagName ) { data.push([...openTags.pop(), i]); } }); data.reverse().forEach(([tag, start, end]) => { let token = { tag }; token.esc = tokens.splice(start, end - start, token); }); } unescapeTags(tokens, selector) { tokens.splice(0, Infinity, ...tokens.flatMap(token => ( token.esc && (!selector || token.tag.matches(selector)) ? token.esc : [token] ))); } unescape(tokens) { let els = [$('<div>')[0]], lastText = ''; tokens.forEach(token => { if (token.openingTag) { if (lastText) { els.at(-1).append(lastText); lastText = ''; } let el = token.openingTag; if (!token.link) { el = el.cloneNode(); } els.at(-1).append(el); els.push(el); } else if (token.closingTag) { let el = els.pop(); if (!els.length) { throw `too many closing tags.\n\n${el.innerHTML}`; } if (el.tagName !== token.closingTag.tagName) { throw `expected </${ token.closingTag.tagName }>, got </${el.tagName}>.\n\n${els[0].innerHTML}`; } if (lastText) { el.append(lastText); lastText = ''; } } else { lastText += token.s; } }); if (lastText) { els.at(-1).append(lastText); } if (els.length !== 1) { throw `too many opening tags.\n\n${els[0].innerHTML}`; } return els[0]; } verify(div, newDiv) { let origHtml = div.innerHTML; let $comp = $(newDiv).clone(); $comp.find('.smartdiff-link').contents().unwrap(); let comp = $comp.html().replace(/<\/(ins|del)><\1(?: [^>]+)?>/g, ''); if (comp !== origHtml) { throw `changed substance.\n\nOriginal:\n${origHtml}\n\nCleaned:\n${comp}\n\nFull:\n${newDiv.innerHTML}`; } let emptyCells = newDiv.querySelectorAll(':is(ins, del):empty'); if (emptyCells.length) { console.log('Empty cells found:', ...emptyCells); mw.notify('Empty cells found'); } } async exec(tokens, isSecond) { let s = tokens.map(token => token.s || '').join(''); let modes = isSecond ? ['url', 'link', 'template', 'gallery'] : ['url', 'link', 'template', 'heading', 'gallery']; for (let mode of modes) { await this.search(s, tokens, mode); } } async search(s, tokens, mode, data) { for (let match of s.matchAll(SmartDiff[mode + 'Re'])) { await this[mode + 'Callback']( tokens, ...match.indices.slice(1).map((indices, i) => indices && { s: match[i + 1], indices, tokens, tokenIndices: SmartDiff.tokenIndices }), data ); } } static tokenIndices() { let count = 0, start; for (let [i, token] of this.tokens.entries()) { if (token.s) { if (count === this.indices[0]) { start = i; } if (count === this.indices[1] - 1) { return [start, i + 1]; } count++; } } } static linkRe = /\[\[\s*(?:<tvar(?: [^>]*)?>\s*)?((?:[^<>\[\]{|}])+?)(?:\s*<\/tvar>)?\s*(?:\||\]\])/dg; async linkCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t; if (s.startsWith('/')) { t = await this.getSubpage(s); } else if (s.startsWith('#') && (!this.isView || !this.isSamePage)) { t = mw.Title.newFromText(this.getProp() + s); } else if (s.startsWith('../')) { t = await this.getParentPage(s); } else { t = mw.Title.newFromText(s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } static templateRe = /((?<!{){{\s*(?:(?:#invoke|(?:safe)?subst|msg(?:nw)?|raw|int):\s*)?(?:<tvar(?: [^>]*)?>\s*)?)([^<>\[\]{|}]+?)((?:\s*<\/tvar>)?\s*(\|.*)?(?:}}|$))/dg; async templateCallback(tokens, pre, mid, post, args) { let s = this.decodeWikitext(mid.s, true); let t; if (pre.s.includes('invoke')) { t = mw.Title.makeTitle(828, s); } else if (s.startsWith('#')) { return; } else if (pre.s.includes('int')) { t = mw.Title.makeTitle(8, s); } else if (s.startsWith('/')) { t = await this.getSubpage(s, 10); } else if (s.startsWith('../')) { t = await this.getParentPage(s, 10); } else { if (!pre.s.includes('msg') && !pre.s.includes('raw')) { let match = s.match(/^[^:]+(?::(?=.)|$)/); if (match && SmartDiff.magicWords.includes(match[0])) return; } t = mw.Title.newFromText(s, 10); } if (t) { this.link(tokens, ...mid.tokenIndices(), t); } if (!args) return; let [postStart, postEnd] = post.tokenIndices(); let newPost = tokens.slice(postStart, postEnd); await this.search(post.s, newPost, 'template'); if (!t || !Array.isArray(SmartDiff.templates)) return; let name = t.getMainText(); for (let data of SmartDiff.templates) { if (Array.isArray(data?.names) && Array.prototype.includes.call(data.names, name) ) { await this.search( post.s, newPost, 'templateArgs', { ...data, i: 1 } ); } } tokens.splice(postStart, postEnd - postStart, ...newPost); } static templateArgsRe = /\|\s*(?:([^=|]*?)\s*=)?\s*(?:<tvar(?: [^>]*)?>\s*)?(.*?)(?:\s*<\/tvar>)?\s*(?=\||{{!}}|}}|$)/dg; templateArgsCallback(tokens, name, mid, data) { let n = name ? Number(name.s) || name.s : data.i++; if (typeof n !== 'number' || ( n < data.start || n > data.end || (n % 2 ? data.skipOdd : data.skipEven) )) { return; } let s = this.decodeWikitext(mid.s); if (data.prefix) { s = data.prefix + s; } if (data.suffix) { s += data.suffix; } let t = data.forceNs ? mw.Title.makeTitle(data.namespace, s) : mw.Title.newFromText(s, data.namespace); if (!t) return; this.link( tokens, ...mid.tokenIndices(), t, n >= data.noRedirectStart || n <= data.noRedirectEnd ); } static urlRe = /(\[(?=.+\]))?((?:\bhttps?:)?\/\/[^\s"<>\[\]{|}]*)([^\s"<>\[\]{|}])/dg; urlCallback(tokens, pre, mid, last) { let omitLast; if (!pre) { if (mid.s.startsWith('//')) return; if (last.s === ';') { let match = mid.s.match(/&#?[\da-z]+$/i); if (match) { let source = match[0] + last.s; omitLast = this.decodeWikitext(source) === source; } } else { let trails = '!,.:?'; if (!mid.s.includes('(')) { trails += ')'; } omitLast = trails.includes(last.s); } } let s = mid.s; if (!omitLast) { s += last.s; } let [midStart, midEnd] = mid.tokenIndices(); this.link( tokens, midStart, omitLast ? midEnd : last.tokenIndices()[1], this.decodeWikitext(s) ); } static headingRe = /^(={1,6})\s*(.+?)\s*(\1)\s*(?=<!--|$)/dg; headingCallback(tokens, pre, mid, post) { if (/{{|<\/?ref(?:\s[^>]*)?>|\[(?:https?:)?\/\/[^\s\[\]]+\]/i.test(mid.s)) return; let s = this.decodeWikitext(mid.s).replace( /'''(.+?)'''|\[\[:?(?:[^|\]]+\|)?([^\]]+)\]\]|<\/?(?:abbr|b|bdi|bdo|big|cite|code|data|del|dfn|em|font|i|ins|kbd|mark|nowiki|q|rb|rp|rt|rtc|ruby|s|samp|small|span|strike|strong|sub|sup|templatestyles|time|translate|tt|u|var)(?:\s[^>]*)?>|<!--.*?-->|\[(?:https?:)?\/\/[^\s\[\]]+\s([^\]]+)\]/gi, '$1$2$3' ).replace(/''(.+?)''/g, '$1'); let t = mw.Title.newFromText( `${!this.isView || !this.isSamePage ? this.getProp() : ''}#${s}` ); if (!t) return; let midIndices = mid.tokenIndices(); if (tokens.slice(...midIndices).some(({ link }) => link)) { this.link(tokens, ...post.tokenIndices(), t); this.link(tokens, ...pre.tokenIndices(), t); } else { this.link(tokens, ...midIndices, t); } } // https://commons.wikimedia.org/wiki/Special:MediaStatistics static galleryRe = /^\s*((?:[^<>\[\]{|}])+\.(?:apng|djv|djvu|flac|gif|jpe|jpeg|jpg|jps|kar|m4a|m4b|m4p|m4r|m4v|mid|midi|mp2|mp3|mp4|mpa|mpe|mpeg|mpg|mpga|oga|ogg|ogm|ogv|ogx|opus|pdf|png|spx|stl|svg|tif|tiff|wav|webm|webp|xcf))\s*(?:\||$)/dgi; galleryCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t = mw.Title.newFromText(s, 6); if (t && t.getNamespaceId() !== 6) { t = mw.Title.makeTitle(6, s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } link(tokens, start, end, mwtOrUrl, noRedirect) { let indices = [], last; tokens.slice(start, end).forEach((token, i) => { if (!token.s && !token.link && !token.esc) return; if (token.s && !token.link) { if (!indices.length || last?.link || last?.esc) { indices.push([start + i]); } indices.at(-1)[1] = start + i + 1; } last = token; }); if (indices.some(chunkIndices => chunkIndices.length !== 2)) { mw.notify('Corrupt chunks found'); debugger; } if (!indices.length) return; let attribs = { class: 'smartdiff-link' }, obj; if (typeof mwtOrUrl === 'string') { attribs.class += ' external'; attribs.href = mwtOrUrl; attribs.rel = 'nofollow'; } else { let title = mwtOrUrl.toText(); if (title) { if (Object.hasOwn(this.titles, title)) { obj = this.titles[title]; if (obj.classes) { attribs.class += ' ' + obj.classes.join(' '); } } else { obj = { links: [] }; this.titles[title] = obj; } if (obj.url) { attribs.href = obj.url; } else { let params = obj.red && { action: 'edit', redlink: 1 } || noRedirect && obj.redirect && { redirect: 'no' }; attribs.href = mw.util.getUrl( obj.canonical || title, params ); } let fragment = mwtOrUrl.getFragment(); if (fragment) { attribs.href += mw.util.getUrl('#' + fragment); } attribs.title = obj.canonical || title; } else { attribs.class += ' mw-selflink-fragment'; attribs.href = mwtOrUrl.getUrl(); } } let links = indices.reverse().map(chunkIndices => ( this.linkChunk(tokens, ...chunkIndices, attribs) )); if (obj && !obj.processed) { obj.links.push(...links); if (noRedirect) { links.forEach(link => { this.noRedirLinks.add(link); }); } } this.divHasLink = true; } linkChunk(tokens, start, end, attribs) { let newStart = start, newEnd = end; let mid = tokens.slice(start, end); let midTags = mid.filter(({ s }) => !s); for (let i = 0; ; i += 2) { if (tokens[newStart - 1]?.openingTag && midTags[i]?.closingTag && tokens[newStart - 1].openingTag.tagName === midTags[i].closingTag.tagName ) { midTags.unshift(tokens[newStart - 1]); newStart--; } else { break; } } for (let i = midTags.length - 1; ; i--) { if (tokens[newEnd]?.closingTag && midTags[i]?.openingTag && tokens[newEnd].closingTag.tagName === midTags[i].openingTag.tagName ) { midTags.push(tokens[newEnd]); newEnd++; } else { break; } } if (start - newStart) { console.log(`Moved up ${start - newStart} times`); } if (start - newStart > 1) { mw.notify(`Moved up ${start - newStart} times`); } if (newEnd - end) { console.log(`Moved down ${newEnd - end} times`); } if (newEnd - end > 1) { mw.notify(`Moved down ${newEnd - end} times`); } let link = $('<a>').attr(attribs)[0]; let pre = [{ openingTag: link, link }]; let post = [{ closingTag: link, link }]; if (midTags[0]?.closingTag) { pre.unshift({ ...midTags[0] }); pre.push({ openingTag: midTags[0].closingTag }); } if (midTags.at(-1)?.openingTag) { post.unshift({ closingTag: midTags.at(-1).openingTag }); post.push({ ...midTags.at(-1) }); } tokens.splice(newEnd, 0, ...post); tokens.splice(newStart, 0, ...pre); mid.forEach(token => { if (token.s) { token.link = link; } }); return link; } decodeWikitext(text, decodePercents) { let s = text; if (decodePercents) { try { s = decodeURIComponent(s); } catch {} } return $($.parseHTML(s)).text(); } async getSubpage(s, fallbackNs) { if (await this.canHaveSubpages()) { return mw.Title.newFromText( this.getProp() + s.replace(/\/+$/, '') ); } return mw.Title.newFromText(s, fallbackNs); } async getParentPage(s, fallbackNs) { if (await this.canHaveSubpages()) { let chunks = s.split('/'); let levelCount = chunks.findIndex(v => v !== '..'); let sup = this.getProp().split('/').slice(0, -levelCount).join('/'); if (sup) { let sub = chunks.slice(levelCount).join('/').replace(/\/+$/, ''); return mw.Title.newFromText(sub ? `${sup}/${sub}` : sup); } } return mw.Title.newFromText(s, fallbackNs); } async canHaveSubpages(ns = this.getProp('ns')) { SmartDiff.subNs = SmartDiff.subNs || mw.config.get('wgVisualEditorConfig')?.namespacesWithSubpages || Object.values((await new mw.Api().get({ action: 'query', meta: 'siteinfo', siprop: 'namespaces', formatversion: 2 })).query.namespaces).filter(n => n.subpages).map(n => n.id); return SmartDiff.subNs.includes(ns); } getProp(n = 'pn') { if (this[this.side]) { this.sidePropUsed = !this.isSamePage; return this[this.side][n]; } if (Object.hasOwn(this, n)) { return this[n]; } this.pn = mw.config.get('wgPageName'); this.ns = mw.config.get('wgNamespaceNumber'); return this[n]; } async queryTitles() { let unprocessed = Object.entries(this.titles) .filter(([, v]) => !v.processed).slice(0, 500).map(([k]) => k); while (unprocessed.length) { let curTitles = unprocessed.slice(0, 50); curTitles.forEach(title => { this.titles[title].processed = true; }); let { query } = await new mw.Api().post({ action: 'query', titles: curTitles, iwurl: 1, prop: 'info', inprop: 'linkclasses', inlinkcontext: this.getProp(), formatversion: 2 }, { headers: { 'Promise-Non-Write-API-Action': 1 } }); query.pages?.forEach(p => { let obj = (this.titles[p.title] ??= {}); let classes = p.linkclasses || []; if (p.missing && !p.known) { classes.push('new'); obj.red = true; } else if (p.redirect) { obj.redirect = true; } if (classes.length) { obj.classes = classes; } }); query.interwiki?.forEach(iw => { this.titles[iw.title] = { classes: ['extiw'], url: iw.url }; }); query.normalized?.forEach(({ from, to }) => { this.titles[from] = { ...this.titles[to], canonical: to }; }); curTitles.forEach(title => { let obj = this.titles[title]; if (obj.classes) { $(obj.links).addClass(obj.classes); } if (obj.redirect) { $(obj.links).attr('href', (_, link) => { return mw.util.getUrl( obj.canonical || title, this.noRedirLinks.has(link) && { redirect: 'no' } ) + link.hash; }); } else { let url = obj.url || obj.red && mw.util.getUrl( obj.canonical || title, { action: 'edit', redlink: 1 } ) || obj.canonical && mw.util.getUrl(obj.canonical); if (url) { $(obj.links).attr('href', function () { return url + this.hash; }); } } if (obj.canonical) { $(obj.links).attr('title', obj.canonical); } obj.links = []; }); unprocessed = unprocessed.slice(50); } } static sds = new WeakMap(); static templates = window.smartdiffTemplates; static magicWords = [ '!', '=', 'BASEPAGENAME', 'BASEPAGENAME:', 'BASEPAGENAMEE', 'BASEPAGENAMEE:', 'canonicalurl:', 'CURRENTDAY', 'CURRENTDAY2', 'CURRENTDAYNAME', 'CURRENTDOW', 'CURRENTHOUR', 'CURRENTMONTH', 'CURRENTMONTH1', 'CURRENTMONTHABBREV', 'CURRENTMONTHNAME', 'CURRENTMONTHNAMEGEN', 'CURRENTTIME', 'CURRENTTIMESTAMP', 'CURRENTVERSION', 'CURRENTWEEK', 'CURRENTYEAR', 'DEFAULTCATEGORYSORT:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DISPLAYTITLE:', 'filepath:', 'formatnum:', 'FULLPAGENAME', 'FULLPAGENAME:', 'FULLPAGENAMEE', 'FULLPAGENAMEE:', 'fullurl:', 'gender:', 'lc:', 'lcfirst:', 'LOCALDAY', 'LOCALDAY2', 'LOCALDAYNAME', 'LOCALDOW', 'LOCALHOUR', 'LOCALMONTH', 'LOCALMONTH1', 'LOCALMONTHABBREV', 'LOCALMONTHNAME', 'LOCALMONTHNAMEGEN', 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCALWEEK', 'LOCALYEAR','NAMESPACE', 'NAMESPACE:', 'NAMESPACEE', 'NAMESPACEE:', 'NAMESPACENUMBER', 'NAMESPACENUMBER:', 'ns:', 'NUMBEROFACTIVEUSERS', 'NUMBEROFARTICLES', 'NUMBEROFEDITS', 'NUMBEROFFILES', 'NUMBEROFPAGES', 'NUMBEROFUSERS', 'padleft:', 'PAGENAME', 'PAGENAMEE', 'PAGESINCAT:', 'PAGESINCATEGORY:', 'plural:', 'REVISIONDAY', 'REVISIONDAY:', 'REVISIONDAY2', 'REVISIONDAY2:', 'REVISIONID', 'REVISIONID:', 'REVISIONMONTH', 'REVISIONMONTH:', 'REVISIONMONTH1', 'REVISIONMONTH1:', 'REVISIONSIZE', 'REVISIONTIMESTAMP', 'REVISIONTIMESTAMP:', 'REVISIONUSER', 'REVISIONUSER:', 'REVISIONYEAR', 'REVISIONYEAR:', 'ROOTPAGENAME', 'ROOTPAGENAME:', 'ROOTPAGENAMEE', 'ROOTPAGENAMEE:', 'SHORTDESC:', 'SUBJECTPAGENAME', 'SUBJECTPAGENAME:', 'SUBJECTPAGENAMEE', 'SUBJECTPAGENAMEE:', 'SUBJECTSPACE', 'SUBJECTSPACE:', 'SUBJECTSPACEE', 'SUBJECTSPACEE:', 'SUBPAGENAME', 'SUBPAGENAME:', 'SUBPAGENAMEE', 'SUBPAGENAMEE:', 'TALKPAGENAME', 'TALKPAGENAME:', 'TALKPAGENAMEE', 'TALKPAGENAMEE:', 'TALKSPACE', 'TALKSPACE:', 'TALKSPACEE', 'TALKSPACEE:', 'uc:', 'ucfirst:', 'urlencode:' ]; } if (Array.isArray(window.smartdiffMagicWords)) { SmartDiff.magicWords.push(...window.smartdiffMagicWords); } mw.hook('wikipage.diff').add((window.sdcb = ($diff => { window.sd = new SmartDiff($diff); }))); mw.hook('wikipage.diff.wikitextBodyUpdate').add((window.sdcbu = ($rows => { let $diff = $rows.closest('.diff'); let sd = SmartDiff.sds.get($diff[0]); if (sd) { sd.init($rows.filter(function () { return this.checkVisibility(); })); } else { window.sd = new SmartDiff($diff); } }))); }); tql7sipe6apio5h2g7d9mimc7kznkr2 768683 768682 2026-10-17T05:48:40Z Nardog 40946 768683 javascript text/javascript mw.hook('wikipage.diff').remove(window.sdcb); mw.hook('wikipage.diff.wikitextBodyUpdate').remove(window.sdcbu); $('.smartdiff-link').contents().unwrap().end().remove(); $(':is(.diff-addedline, .diff-addedline, .diff-context) > div, .mw-diff-inline-added, .mw-diff-inline-deleted, .mw-diff-inline-changed').contents().each(function () { if (this.previousSibling && this.previousSibling.tagName === this.tagName) { this.previousSibling.textContent += this.textContent; this.remove(); } }); window.smartdiffTemplates = [ { names: ['T', 'Tl'], namespace: 10, forceNs: true, end: 1 }, { names: ['Tlx'], namespace: 10, end: 1 }, { names: ['U'], prefix: 'Special:Contributions/', end: 1 }, { names: ['Re', 'Reply to', 'Ping'], prefix: 'Special:Contributions/' }, { names: ['About'], start: 3, skipEven: true }, { names: ['For'], start: 2 }, { names: ['Other uses', 'Otheruses'], end: 1 }, { names: ['Section link', 'Slink'], end: 1 }, { names: ['Redirect'], skipEven: true, noRedirectEnd: 1 }, { names: ['Shortcut'], noRedirectStart: 1 }, { names: ['Tracked', 'Phab'], prefix: 'phab:', end: 1 }, { names: [ 'Distinguish', 'Main', 'Main article', 'Further', 'See also', 'Seealso' ] }, { names: ['Ll'], end: 1 } ]; mw.loader.using([ 'mediawiki.util', 'mediawiki.Title', 'mediawiki.api' ], () => { mw.loader.addStyleTag(`body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external) { color: #36b; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):visited { color: #636; } body:is(.skin-vector-legacy, .skin-monobook) .smartdiff-link:is(.extiw, .external):active { color: #b63; }`); class SmartDiff { constructor($diff) { this.now = performance.now(); this.$diff = $diff; this.isView = mw.config.get('wgNamespaceNumber') !== -1 && mw.config.get('wgAction') === 'view' && $diff.nextAll().is('.diff-hr'); [ ['old', '#mw-diff-otitle1 a, #differences-prevlink'], ['new', '#mw-diff-ntitle1 a, #differences-nextlink'] ].forEach(([side, selector]) => { let link = this.$diff[0].querySelector(selector); let pn = link && mw.util.getParamValue('title', link.search); if (pn) { this[side] = { pn, ns: mw.Title.newFromText(pn).getNamespaceId() }; } }); this.isSamePage = this.old?.pn === this.new?.pn; this.titles = {}; this.noRedirLinks = new WeakSet(); SmartDiff.sds.set($diff[0], this); this.init(); } async init($rows = this.$diff) { this.side = 'old'; for (let div of $rows.find( '.diff-deletedline > div, .mw-diff-inline-deleted' )) { await this.processLine(div); } this.side = 'new'; for (let div of $rows.find( '.diff-addedline > div, .mw-diff-inline-added, .mw-diff-inline-context' )) { await this.processLine(div); } for (let div of $rows.find( '.mw-diff-inline-changed, .mw-diff-inline-moved' )) { await this.processLine(div, true); } let $contexts = $rows.find('.diff-context > div'), clones = []; for (let [i, div] of $contexts.get().entries()) { if (i % 2) { this.side = 'new'; if (this.sidePropUsed) { await this.processLine(div); } else if (this.divHasLink) { div.replaceChildren(...$contexts.eq(i - 1).contents().clone()); clones.push(div); } } else { this.side = 'old'; this.sidePropUsed = false; await this.processLine(div); } } $(clones).find('.smartdiff-link[title]').each((_, link) => { this.titles[link.title]?.links.push(link); }); this.queryTitles(); if (this.hasError) { mw.notify('SmartDiff error', { type: 'warn' }); } console.log(performance.now() - this.now); } async processLine(div, isInlineChange) { this.divHasLink = false; let tokens; if (isInlineChange) { tokens = this.tokenize( div, 'del, .mw-diff-movedpara-left, .mw-diff-movedpara-right' ); this.side = 'new'; await this.exec(tokens); this.escapeTags(tokens, 'ins'); this.unescapeTags(tokens, 'del'); this.side = 'old'; await this.exec(tokens, true); this.unescapeTags(tokens); } else { tokens = this.tokenize(div); await this.exec(tokens); } if (!this.divHasLink) return; try { let newDiv = this.unescape(tokens); this.verify(div, newDiv); div.replaceChildren(...newDiv.childNodes); } catch (e) { debugger; if (typeof e === 'string') { this.hasError = true; console.warn(`SmartDiff error: ${e}`); } else { throw e; } } } tokenize(el, escSelector) { return [...el.childNodes].flatMap(node => { if (node.nodeType === 3) { return node.textContent.split('').map(s => ({ s })); } if (node.nodeType !== 1) { return []; } if (escSelector && node.matches(escSelector)) { return [ { openingTag: node }, { esc: this.tokenize(node, escSelector), tag: node }, { closingTag: node } ]; } return [ { openingTag: node }, ...this.tokenize(node, escSelector), { closingTag: node } ]; }); } escapeTags(tokens, selector) { let openTags = [], data = []; tokens.forEach((token, i) => { if (token.openingTag?.matches(selector)) { openTags.push([token.openingTag, i + 1]); } else if (token.closingTag && openTags.length && token.closingTag.tagName === openTags.at(-1)[0].tagName ) { data.push([...openTags.pop(), i]); } }); data.reverse().forEach(([tag, start, end]) => { let token = { tag }; token.esc = tokens.splice(start, end - start, token); }); } unescapeTags(tokens, selector) { tokens.splice(0, Infinity, ...tokens.flatMap(token => ( token.esc && (!selector || token.tag.matches(selector)) ? token.esc : [token] ))); } unescape(tokens) { let els = [$('<div>')[0]], lastText = ''; tokens.forEach(token => { if (token.openingTag) { if (lastText) { els.at(-1).append(lastText); lastText = ''; } let el = token.openingTag; if (!token.link) { el = el.cloneNode(); } els.at(-1).append(el); els.push(el); } else if (token.closingTag) { let el = els.pop(); if (!els.length) { throw `too many closing tags.\n\n${el.innerHTML}`; } if (el.tagName !== token.closingTag.tagName) { throw `expected </${ token.closingTag.tagName }>, got </${el.tagName}>.\n\n${els[0].innerHTML}`; } if (lastText) { el.append(lastText); lastText = ''; } } else { lastText += token.s; } }); if (lastText) { els.at(-1).append(lastText); } if (els.length !== 1) { throw `too many opening tags.\n\n${els[0].innerHTML}`; } return els[0]; } verify(div, newDiv) { let origHtml = div.innerHTML; let $comp = $(newDiv).clone(); $comp.find('.smartdiff-link').contents().unwrap(); let comp = $comp.html().replace(/<\/(ins|del)><\1(?: [^>]+)?>/g, ''); if (comp !== origHtml) { throw `changed substance.\n\nOriginal:\n${origHtml}\n\nCleaned:\n${comp}\n\nFull:\n${newDiv.innerHTML}`; } let emptyCells = newDiv.querySelectorAll(':is(ins, del):empty'); if (emptyCells.length) { console.log('Empty cells found:', ...emptyCells); mw.notify('Empty cells found'); } } async exec(tokens, isSecond) { let s = tokens.map(token => token.s || '').join(''); let modes = isSecond ? ['url', 'link', 'template', 'gallery'] : ['url', 'link', 'template', 'heading', 'gallery']; for (let mode of modes) { await this.search(s, tokens, mode); } } async search(s, tokens, mode, data) { for (let match of s.matchAll(SmartDiff[mode + 'Re'])) { await this[mode + 'Callback']( tokens, ...match.indices.slice(1).map((indices, i) => indices && { s: match[i + 1], indices, tokens, tokenIndices: SmartDiff.tokenIndices }), data ); } } static tokenIndices() { let count = 0, start; for (let [i, token] of this.tokens.entries()) { if (token.s) { if (count === this.indices[0]) { start = i; } if (count === this.indices[1] - 1) { return [start, i + 1]; } count++; } } } static linkRe = /\[\[\s*(?:<tvar(?: [^>]*)?>\s*)?((?:[^<>\[\]{|}])+?)(?:\s*<\/tvar>)?\s*(?:\||\]\])/dg; async linkCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t; if (s.startsWith('/')) { t = await this.getSubpage(s); } else if (s.startsWith('#') && (!this.isView || !this.isSamePage)) { t = mw.Title.newFromText(this.getProp() + s); } else if (s.startsWith('../')) { t = await this.getParentPage(s); } else { t = mw.Title.newFromText(s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } static templateRe = /((?<!{){{\s*(?:(?:#invoke|(?:safe)?subst|msg(?:nw)?|raw|int):\s*)?(?:<tvar(?: [^>]*)?>\s*)?)([^<>\[\]{|}]+?)((?:\s*<\/tvar>)?\s*(\|.*)?(?:}}|$))/dg; async templateCallback(tokens, pre, mid, post, args) { let s = this.decodeWikitext(mid.s, true); let t; if (pre.s.includes('invoke')) { t = mw.Title.makeTitle(828, s); } else if (s.startsWith('#')) { return; } else if (pre.s.includes('int')) { t = mw.Title.makeTitle(8, s); } else if (s.startsWith('/')) { t = await this.getSubpage(s, 10); } else if (s.startsWith('../')) { t = await this.getParentPage(s, 10); } else { if (!pre.s.includes('msg') && !pre.s.includes('raw')) { let match = s.match(/^[^:]+(?::(?=.)|$)/); if (match && SmartDiff.magicWords.includes(match[0])) return; } t = mw.Title.newFromText(s, 10); } if (t) { this.link(tokens, ...mid.tokenIndices(), t); } if (!args) return; let [postStart, postEnd] = post.tokenIndices(); let newPost = tokens.slice(postStart, postEnd); await this.search(post.s, newPost, 'template'); if (!t || !Array.isArray(SmartDiff.templates)) return; let name = t.getMainText(); for (let data of SmartDiff.templates) { if (Array.isArray(data?.names) && Array.prototype.includes.call(data.names, name) ) { await this.search( post.s, newPost, 'templateArgs', { ...data, i: 1 } ); } } tokens.splice(postStart, postEnd - postStart, ...newPost); } static templateArgsRe = /\|\s*(?:([^=|]*?)\s*=)?\s*(?:<tvar(?: [^>]*)?>\s*)?(.*?)(?:\s*<\/tvar>)?\s*(?=\||{{!}}|}}|$)/dg; templateArgsCallback(tokens, name, mid, data) { let n = name ? Number(name.s) || name.s : data.i++; if (typeof n !== 'number' || ( n < data.start || n > data.end || (n % 2 ? data.skipOdd : data.skipEven) )) { return; } let s = this.decodeWikitext(mid.s); if (data.prefix) { s = data.prefix + s; } if (data.suffix) { s += data.suffix; } let t = data.forceNs ? mw.Title.makeTitle(data.namespace, s) : mw.Title.newFromText(s, data.namespace); if (!t) return; this.link( tokens, ...mid.tokenIndices(), t, n >= data.noRedirectStart || n <= data.noRedirectEnd ); } static urlRe = /(\[(?=.+\]))?((?:\bhttps?:)?\/\/[^\s"<>\[\]{|}]*)([^\s"<>\[\]{|}])/dg; urlCallback(tokens, pre, mid, last) { let omitLast; if (!pre) { if (mid.s.startsWith('//')) return; if (last.s === ';') { let match = mid.s.match(/&#?[\da-z]+$/i); if (match) { let source = match[0] + last.s; omitLast = this.decodeWikitext(source) === source; } else { omitLast = true; } } else { let trails = '!,.:?'; if (!mid.s.includes('(')) { trails += ')'; } omitLast = trails.includes(last.s); } } let s = mid.s; if (!omitLast) { s += last.s; } let [midStart, midEnd] = mid.tokenIndices(); this.link( tokens, midStart, omitLast ? midEnd : last.tokenIndices()[1], this.decodeWikitext(s) ); } static headingRe = /^(={1,6})\s*(.+?)\s*(\1)\s*(?=<!--|$)/dg; headingCallback(tokens, pre, mid, post) { if (/{{|<\/?ref(?:\s[^>]*)?>|\[(?:https?:)?\/\/[^\s\[\]]+\]/i.test(mid.s)) return; let s = this.decodeWikitext(mid.s).replace( /'''(.+?)'''|\[\[:?(?:[^|\]]+\|)?([^\]]+)\]\]|<\/?(?:abbr|b|bdi|bdo|big|cite|code|data|del|dfn|em|font|i|ins|kbd|mark|nowiki|q|rb|rp|rt|rtc|ruby|s|samp|small|span|strike|strong|sub|sup|templatestyles|time|translate|tt|u|var)(?:\s[^>]*)?>|<!--.*?-->|\[(?:https?:)?\/\/[^\s\[\]]+\s([^\]]+)\]/gi, '$1$2$3' ).replace(/''(.+?)''/g, '$1'); let t = mw.Title.newFromText( `${!this.isView || !this.isSamePage ? this.getProp() : ''}#${s}` ); if (!t) return; let midIndices = mid.tokenIndices(); if (tokens.slice(...midIndices).some(({ link }) => link)) { this.link(tokens, ...post.tokenIndices(), t); this.link(tokens, ...pre.tokenIndices(), t); } else { this.link(tokens, ...midIndices, t); } } // https://commons.wikimedia.org/wiki/Special:MediaStatistics static galleryRe = /^\s*((?:[^<>\[\]{|}])+\.(?:apng|djv|djvu|flac|gif|jpe|jpeg|jpg|jps|kar|m4a|m4b|m4p|m4r|m4v|mid|midi|mp2|mp3|mp4|mpa|mpe|mpeg|mpg|mpga|oga|ogg|ogm|ogv|ogx|opus|pdf|png|spx|stl|svg|tif|tiff|wav|webm|webp|xcf))\s*(?:\||$)/dgi; galleryCallback(tokens, mid) { let s = this.decodeWikitext(mid.s, true); let t = mw.Title.newFromText(s, 6); if (t && t.getNamespaceId() !== 6) { t = mw.Title.makeTitle(6, s); } if (!t) return; this.link(tokens, ...mid.tokenIndices(), t); } link(tokens, start, end, mwtOrUrl, noRedirect) { let indices = [], last; tokens.slice(start, end).forEach((token, i) => { if (!token.s && !token.link && !token.esc) return; if (token.s && !token.link) { if (!indices.length || last?.link || last?.esc) { indices.push([start + i]); } indices.at(-1)[1] = start + i + 1; } last = token; }); if (indices.some(chunkIndices => chunkIndices.length !== 2)) { mw.notify('Corrupt chunks found'); debugger; } if (!indices.length) return; let attribs = { class: 'smartdiff-link' }, obj; if (typeof mwtOrUrl === 'string') { attribs.class += ' external'; attribs.href = mwtOrUrl; attribs.rel = 'nofollow'; } else { let title = mwtOrUrl.toText(); if (title) { if (Object.hasOwn(this.titles, title)) { obj = this.titles[title]; if (obj.classes) { attribs.class += ' ' + obj.classes.join(' '); } } else { obj = { links: [] }; this.titles[title] = obj; } if (obj.url) { attribs.href = obj.url; } else { let params = obj.red && { action: 'edit', redlink: 1 } || noRedirect && obj.redirect && { redirect: 'no' }; attribs.href = mw.util.getUrl( obj.canonical || title, params ); } let fragment = mwtOrUrl.getFragment(); if (fragment) { attribs.href += mw.util.getUrl('#' + fragment); } attribs.title = obj.canonical || title; } else { attribs.class += ' mw-selflink-fragment'; attribs.href = mwtOrUrl.getUrl(); } } let links = indices.reverse().map(chunkIndices => ( this.linkChunk(tokens, ...chunkIndices, attribs) )); if (obj && !obj.processed) { obj.links.push(...links); if (noRedirect) { links.forEach(link => { this.noRedirLinks.add(link); }); } } this.divHasLink = true; } linkChunk(tokens, start, end, attribs) { let newStart = start, newEnd = end; let mid = tokens.slice(start, end); let midTags = mid.filter(({ s }) => !s); for (let i = 0; ; i += 2) { if (tokens[newStart - 1]?.openingTag && midTags[i]?.closingTag && tokens[newStart - 1].openingTag.tagName === midTags[i].closingTag.tagName ) { midTags.unshift(tokens[newStart - 1]); newStart--; } else { break; } } for (let i = midTags.length - 1; ; i--) { if (tokens[newEnd]?.closingTag && midTags[i]?.openingTag && tokens[newEnd].closingTag.tagName === midTags[i].openingTag.tagName ) { midTags.push(tokens[newEnd]); newEnd++; } else { break; } } if (start - newStart) { console.log(`Moved up ${start - newStart} times`); } if (start - newStart > 1) { mw.notify(`Moved up ${start - newStart} times`); } if (newEnd - end) { console.log(`Moved down ${newEnd - end} times`); } if (newEnd - end > 1) { mw.notify(`Moved down ${newEnd - end} times`); } let link = $('<a>').attr(attribs)[0]; let pre = [{ openingTag: link, link }]; let post = [{ closingTag: link, link }]; if (midTags[0]?.closingTag) { pre.unshift({ ...midTags[0] }); pre.push({ openingTag: midTags[0].closingTag }); } if (midTags.at(-1)?.openingTag) { post.unshift({ closingTag: midTags.at(-1).openingTag }); post.push({ ...midTags.at(-1) }); } tokens.splice(newEnd, 0, ...post); tokens.splice(newStart, 0, ...pre); mid.forEach(token => { if (token.s) { token.link = link; } }); return link; } decodeWikitext(text, decodePercents) { let s = text; if (decodePercents) { try { s = decodeURIComponent(s); } catch {} } return $($.parseHTML(s)).text(); } async getSubpage(s, fallbackNs) { if (await this.canHaveSubpages()) { return mw.Title.newFromText( this.getProp() + s.replace(/\/+$/, '') ); } return mw.Title.newFromText(s, fallbackNs); } async getParentPage(s, fallbackNs) { if (await this.canHaveSubpages()) { let chunks = s.split('/'); let levelCount = chunks.findIndex(v => v !== '..'); let sup = this.getProp().split('/').slice(0, -levelCount).join('/'); if (sup) { let sub = chunks.slice(levelCount).join('/').replace(/\/+$/, ''); return mw.Title.newFromText(sub ? `${sup}/${sub}` : sup); } } return mw.Title.newFromText(s, fallbackNs); } async canHaveSubpages(ns = this.getProp('ns')) { SmartDiff.subNs = SmartDiff.subNs || mw.config.get('wgVisualEditorConfig')?.namespacesWithSubpages || Object.values((await new mw.Api().get({ action: 'query', meta: 'siteinfo', siprop: 'namespaces', formatversion: 2 })).query.namespaces).filter(n => n.subpages).map(n => n.id); return SmartDiff.subNs.includes(ns); } getProp(n = 'pn') { if (this[this.side]) { this.sidePropUsed = !this.isSamePage; return this[this.side][n]; } if (Object.hasOwn(this, n)) { return this[n]; } this.pn = mw.config.get('wgPageName'); this.ns = mw.config.get('wgNamespaceNumber'); return this[n]; } async queryTitles() { let unprocessed = Object.entries(this.titles) .filter(([, v]) => !v.processed).slice(0, 500).map(([k]) => k); while (unprocessed.length) { let curTitles = unprocessed.slice(0, 50); curTitles.forEach(title => { this.titles[title].processed = true; }); let { query } = await new mw.Api().post({ action: 'query', titles: curTitles, iwurl: 1, prop: 'info', inprop: 'linkclasses', inlinkcontext: this.getProp(), formatversion: 2 }, { headers: { 'Promise-Non-Write-API-Action': 1 } }); query.pages?.forEach(p => { let obj = (this.titles[p.title] ??= {}); let classes = p.linkclasses || []; if (p.missing && !p.known) { classes.push('new'); obj.red = true; } else if (p.redirect) { obj.redirect = true; } if (classes.length) { obj.classes = classes; } }); query.interwiki?.forEach(iw => { this.titles[iw.title] = { classes: ['extiw'], url: iw.url }; }); query.normalized?.forEach(({ from, to }) => { this.titles[from] = { ...this.titles[to], canonical: to }; }); curTitles.forEach(title => { let obj = this.titles[title]; if (obj.classes) { $(obj.links).addClass(obj.classes); } if (obj.redirect) { $(obj.links).attr('href', (_, link) => { return mw.util.getUrl( obj.canonical || title, this.noRedirLinks.has(link) && { redirect: 'no' } ) + link.hash; }); } else { let url = obj.url || obj.red && mw.util.getUrl( obj.canonical || title, { action: 'edit', redlink: 1 } ) || obj.canonical && mw.util.getUrl(obj.canonical); if (url) { $(obj.links).attr('href', function () { return url + this.hash; }); } } if (obj.canonical) { $(obj.links).attr('title', obj.canonical); } obj.links = []; }); unprocessed = unprocessed.slice(50); } } static sds = new WeakMap(); static templates = window.smartdiffTemplates; static magicWords = [ '!', '=', 'BASEPAGENAME', 'BASEPAGENAME:', 'BASEPAGENAMEE', 'BASEPAGENAMEE:', 'canonicalurl:', 'CURRENTDAY', 'CURRENTDAY2', 'CURRENTDAYNAME', 'CURRENTDOW', 'CURRENTHOUR', 'CURRENTMONTH', 'CURRENTMONTH1', 'CURRENTMONTHABBREV', 'CURRENTMONTHNAME', 'CURRENTMONTHNAMEGEN', 'CURRENTTIME', 'CURRENTTIMESTAMP', 'CURRENTVERSION', 'CURRENTWEEK', 'CURRENTYEAR', 'DEFAULTCATEGORYSORT:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DISPLAYTITLE:', 'filepath:', 'formatnum:', 'FULLPAGENAME', 'FULLPAGENAME:', 'FULLPAGENAMEE', 'FULLPAGENAMEE:', 'fullurl:', 'gender:', 'lc:', 'lcfirst:', 'LOCALDAY', 'LOCALDAY2', 'LOCALDAYNAME', 'LOCALDOW', 'LOCALHOUR', 'LOCALMONTH', 'LOCALMONTH1', 'LOCALMONTHABBREV', 'LOCALMONTHNAME', 'LOCALMONTHNAMEGEN', 'LOCALTIME', 'LOCALTIMESTAMP', 'LOCALWEEK', 'LOCALYEAR','NAMESPACE', 'NAMESPACE:', 'NAMESPACEE', 'NAMESPACEE:', 'NAMESPACENUMBER', 'NAMESPACENUMBER:', 'ns:', 'NUMBEROFACTIVEUSERS', 'NUMBEROFARTICLES', 'NUMBEROFEDITS', 'NUMBEROFFILES', 'NUMBEROFPAGES', 'NUMBEROFUSERS', 'padleft:', 'PAGENAME', 'PAGENAMEE', 'PAGESINCAT:', 'PAGESINCATEGORY:', 'plural:', 'REVISIONDAY', 'REVISIONDAY:', 'REVISIONDAY2', 'REVISIONDAY2:', 'REVISIONID', 'REVISIONID:', 'REVISIONMONTH', 'REVISIONMONTH:', 'REVISIONMONTH1', 'REVISIONMONTH1:', 'REVISIONSIZE', 'REVISIONTIMESTAMP', 'REVISIONTIMESTAMP:', 'REVISIONUSER', 'REVISIONUSER:', 'REVISIONYEAR', 'REVISIONYEAR:', 'ROOTPAGENAME', 'ROOTPAGENAME:', 'ROOTPAGENAMEE', 'ROOTPAGENAMEE:', 'SHORTDESC:', 'SUBJECTPAGENAME', 'SUBJECTPAGENAME:', 'SUBJECTPAGENAMEE', 'SUBJECTPAGENAMEE:', 'SUBJECTSPACE', 'SUBJECTSPACE:', 'SUBJECTSPACEE', 'SUBJECTSPACEE:', 'SUBPAGENAME', 'SUBPAGENAME:', 'SUBPAGENAMEE', 'SUBPAGENAMEE:', 'TALKPAGENAME', 'TALKPAGENAME:', 'TALKPAGENAMEE', 'TALKPAGENAMEE:', 'TALKSPACE', 'TALKSPACE:', 'TALKSPACEE', 'TALKSPACEE:', 'uc:', 'ucfirst:', 'urlencode:' ]; } if (Array.isArray(window.smartdiffMagicWords)) { SmartDiff.magicWords.push(...window.smartdiffMagicWords); } mw.hook('wikipage.diff').add((window.sdcb = ($diff => { window.sd = new SmartDiff($diff); }))); mw.hook('wikipage.diff.wikitextBodyUpdate').add((window.sdcbu = ($rows => { let $diff = $rows.closest('.diff'); let sd = SmartDiff.sds.get($diff[0]); if (sd) { sd.init($rows.filter(function () { return this.checkVisibility(); })); } else { window.sd = new SmartDiff($diff); } }))); }); r5l3rt7xh4b2vf2qwvoj2z7bda145dh The Reflective Tour 0 179062 768622 768540 2026-10-16T17:12:39Z Jaheim Ember 76112 768622 wikitext text/x-wiki {{Short description|2005–06 concert tour by Backstreet Girls}} {{Use mdy dates|date=October 2020}} {{Infobox concert |image = |image_size = |border = |location = {{hlist|Asia|Europe|North America}} |image_caption = |album = ''[[Reflective (Backstreet Girls album)|Reflective]]'' |start_date = {{start date|2005|02|27}} |end_date = {{end date|2006|02|12}} |attendance = | gross = | last_tour = [[Backstreet Times a Charm Tour]] <br>(2004) | this_tour = '''The Reflective Tour''' <br>(2005–06) | next_tour = [[The 7/24 Tour]] <br>(2006–07) |number_of_shows = 63 |concert_tour_name = The Reflective Tour | artist = [[Backstreet Girls (girl group)|Backstreet Girls]] |number_of_legs = 5 }} ''' The Reflective Tour''' was the fourth concert tour by American comedy girl group [[Backstreet Girls]]. Visiting Europe, North America and Asia (one date in [[Abu Dhabi|Adu Dhabi]]), the tour supported their debut studio album, ''[[Reflective (Backstreet Girls album)|Reflective]]'' (2005). Backstreet Girls was not backed by a band or backing singers, instead, they opted for studio recorded versions of songs from their album and an acoustic set for covers. The setlist consisted mostly of songs from ''Reflective'', with several adapted from their debut extended play, ''[[Better Tomorrow (EP)|Better Tomorrow]]'' (2003), along with several medley covers. The shows garnered acclaim from critical reviews, many praising the group's vocal performance, the show's overall themes and the song transitions. ==Background== ==Extensions== ===Reflective: The Summer Tour=== ===European Reflective Tour=== ==Personnel== ===Backstreet Girls=== *[[Jenny McCarthy]] – Vocals *[[Cindy Crawford]] – Vocals *[[Pamela Anderson]] – Vocals *[[Jenna Jameson]] – Vocals *[[Carmen Electra]] – Vocals ===Band=== *[[John McCurry]] – Guitar *Alan St. Jon – Keyboards, Backing Vocals *Roger Chouinard Jr. – Drums *[[Kane Roberts]] – Guitar, Backing Vocals *[[Stephen Perkins]] – Percussion *[[Hugh McDonald]] – Bass, Backing Vocals ===Dancers=== *The Bombshell Babes ==Opening acts== ==Set lists== ==Shows== == Canceled shows == ==Notes== {{Notelist}} ==References== {{Reflist|30em}} ==External links== *[http://backstreetgirls.com/ Backstreet Girls Official Website] {{Backstreet Girls (girl group)}} {{DEFAULTSORT:Reflective Tour, The}} [[Category:2005 concert tours]] [[Category:2006 concert tours]] [[Category:Backstreet Girls (girl group) concert tours]] kdosx3xu5b6cwc7ht87sru0hx6eubwi The Braxtons (album) 0 179264 768620 768470 2026-10-16T17:11:23Z Jaheim Ember 76112 768620 wikitext text/x-wiki {{Infobox album | name = The Braxtons | type = studio | artist = [[The Braxtons]] | cover = | alt = | released = July 30, 1998 | recorded = 1997–1998 | venue = | studio = | genre = [[Contemporary R&B|R&B]] | length = | label = [[Island Def Jam Recordings|Island Def Jam]] | producer = [[L.A. Reid|Antonio "L.A." Reid]], [[Babyface (musician)|Kenneth "Babyface" Edmonds]], [[Earthtone III]] (exec.), Keith Andes, [[Bryce Wilson]], David Whild, [[Carl Mo]], Donny Mathis, [[Questlove|Ahmir "Questlove" Thompson]], [[James Poyser]] | prev_title = [[So Many Ways]] | prev_year = 1996 | next_title = [[Beggin' After Light]] | next_year = 2000 | misc = {{Singles | name = The Braxtons | type = studio | single1 = [[Do You Know (What It Takes) (song)|Do You Know (What It Takes)]] | single1date = June 18, 1998 | single2 = [[Show Me Love (The Braxtons song)|Show Me Love]] | single2date = September 11, 1998 }} }} '''''The Braxtons''''' is the third studio album by American [[contemporary R&B|R&B]] vocal group [[The Braxtons]], released on July 30, 1998, via [[Island Def Jam Recordings]]. == Track listing == == Personnel == == Charts == == Certifications == == References == {{reflist}} {{The Braxtons}} {{Authority control}} [[Category:1998 albums]] [[Category:The Braxtons albums]] [[Category:Island Def Jam Recordings albums]] [[Category:Contemporary R&B albums by American artists]] {{1990s-R&B-album-stub}} kaneujx0fw7bqr5ma6oqz1n7fezhduf Beggin' After Light 0 179265 768618 768477 2026-10-16T17:10:12Z Jaheim Ember 76112 768618 wikitext text/x-wiki {{Use mdy dates|date=May 2025}} {{Infobox album | name = Beggin' After Light | type = studio | artist = [[The Braxtons]] | cover = | alt = | released = November 8, 2000 | recorded = 1999&ndash;2000 | venue = | studio = | genre = [[Contemporary R&B|R&B]], [[new jack swing]] | length = | label = [[Arista Records|Arista]] | producer = [[L.A. & Babyface]]<br>[[Keri Lewis]]<br>[[Clive Davis]] <small>(exe. producer)</small> | prev_title = [[The Braxtons (album)|The Braxtons]] | prev_year = 1998 | next_title = [[Santa Hook Me Up]] | next_year = 2001 | misc = {{Singles | name = Beggin' After Light | type = Studio album | single1 = [[If You Don't Want to Love Me]] | single1date = June 20, 2000 | single2 = [[How Many Days]] | single2date = September 30, 2000 | single3 = [[I Can't Wait Another Minute (song)|I Can't Wait Another Minute]] | single3date = December 21, 2000 | single4 = [[Understanding (The Braxtons song)|Understanding]] | single4date = March 17, 2001 | single5 = [[Quality Time (The Braxtons song)|Quality Time]] | single5date = May 25, 2001 | single6 = [[Unconditional Love (The Braxtons song)|Unconditional Love]] | single6date = August 1, 2001 }} }} '''''Beggin' After Light''''' is the fourth studio [[album]] by American [[R&B]] vocal group [[The Braxtons]], released November 8, 2000, on [[Arista Records]]. == Track listing == ==Personnel== ==Charts== ===Weekly charts=== ===Year-end charts=== ===Singles=== ==Certifications== ==References== {{Reflist}} ==External links== {{The Braxtons}} {{Authority control}} {{DEFAULTSORT:Beggin' After Light}} [[Category:2000 albums]] [[Category:The Braxtons albums]] [[Category:Arista Records albums]] 3u061qohr8y648kfg4unvbup0men6j0 768621 768618 2026-10-16T17:11:46Z Jaheim Ember 76112 768621 wikitext text/x-wiki {{Use mdy dates|date=May 2025}} {{Infobox album | name = Beggin' After Light | type = studio | artist = [[The Braxtons]] | cover = | alt = | released = November 8, 2000 | recorded = 1999&ndash;2000 | venue = | studio = | genre = [[Contemporary R&B|R&B]], [[new jack swing]] | length = | label = [[Arista Records|Arista]] | producer = [[L.A. & Babyface]]<br>[[Keri Lewis]]<br>[[Clive Davis]] <small>(exec. producer)</small> | prev_title = [[The Braxtons (album)|The Braxtons]] | prev_year = 1998 | next_title = [[Santa Hook Me Up]] | next_year = 2001 | misc = {{Singles | name = Beggin' After Light | type = Studio album | single1 = [[If You Don't Want to Love Me]] | single1date = June 20, 2000 | single2 = [[How Many Days]] | single2date = September 30, 2000 | single3 = [[I Can't Wait Another Minute (song)|I Can't Wait Another Minute]] | single3date = December 21, 2000 | single4 = [[Understanding (The Braxtons song)|Understanding]] | single4date = March 17, 2001 | single5 = [[Quality Time (The Braxtons song)|Quality Time]] | single5date = May 25, 2001 | single6 = [[Unconditional Love (The Braxtons song)|Unconditional Love]] | single6date = August 1, 2001 }} }} '''''Beggin' After Light''''' is the fourth studio [[album]] by American [[R&B]] vocal group [[The Braxtons]], released November 8, 2000, on [[Arista Records]]. == Track listing == ==Personnel== ==Charts== ===Weekly charts=== ===Year-end charts=== ===Singles=== ==Certifications== ==References== {{Reflist}} ==External links== {{The Braxtons}} {{Authority control}} {{DEFAULTSORT:Beggin' After Light}} [[Category:2000 albums]] [[Category:The Braxtons albums]] [[Category:Arista Records albums]] b5s26c7i4a8sas2f4qjhbl84eeiybj0 Fellas Edition, Man's World 0 179267 768619 768489 2026-10-16T17:10:27Z Jaheim Ember 76112 768619 wikitext text/x-wiki {{Use mdy dates|date=May 2025}} {{Infobox album | name = Fellas Edition, Man's World | type = studio | artist = [[The Braxtons]] | cover = | released = {{start date|2002|10|28}} | recorded = 2001&ndash;2002 | venue = | studio = | genre = [[Contemporary R&B|R&B]], [[hip-hop soul]] | length = | label = [[LaFace Records|LaFace]] | producer = [[Keri Lewis]] | prev_title = [[Santa Hook Me Up]] | prev_year = 2001 | next_title = [[For the Time]] | next_year = 2004 | misc = {{Singles }} }} '''''Fellas Edition, Man's World''''' is the sixth studio [[album]] by American [[contemporary R&B|R&B]] vocal group [[The Braxtons]]. It was released October 28, 2002 on [[LaFace Records]]. ==Track listing== ==Personnel== ==Charts== ===Singles=== ==References== {{Reflist}} ==External links== {{The Braxtons}} {{Authority control}} [[Category:2002 albums]] [[Category:The Braxtons albums]] [[Category:LaFace Records albums]] {{2000s-R&B-album-stub}} jmhme3ouftv9ce4vhurixr7q8jtvbop Bob 0 179280 768625 2026-10-16T17:15:11Z ~2026-55574-24 76246 Testing anonymous page creation with an AI assistant 768625 wikitext text/x-wiki Test page created by Bob. glzfkjot0ku62auzo5d1cftrmh7hgoz 768659 768625 2026-10-16T23:39:27Z AiBob2026 76251 Test edit from dot browser 768659 wikitext text/x-wiki dot browser jcsfnvzzzroi69hybxt5bhq4x889spm User:გიო ოქრო/common.js 2 179281 768630 2026-10-16T18:54:26Z გიო ოქრო 41075 Created page with "/** * Gadget-refToolbar-ka.js * მარტივი სქოლიოების (ციტირების) ინსტრუმენტი ქართული ვიკიპედიისთვის. * ამატებს ღილაკს „ციტირება“ რედაქტირების პანელზე; ფანჯარაში ირჩევ შაბლონის ტიპს, * ავსებ ველებს..." 768630 javascript text/javascript /** * Gadget-refToolbar-ka.js * მარტივი სქოლიოების (ციტირების) ინსტრუმენტი ქართული ვიკიპედიისთვის. * ამატებს ღილაკს „ციტირება“ რედაქტირების პანელზე; ფანჯარაში ირჩევ შაბლონის ტიპს, * ავსებ ველებს და კოდი ჩაისმება კურსორის ადგილას როგორც <ref>...</ref>. * * ინსტალაცია: ჩააგდე MediaWiki:Gadget-refToolbar-ka.js-ში * (ან პირადად: Special:MyPage/common.js -> mw.loader.load(...) / პირდაპირ კოდის ჩასმა). */ ( function () { 'use strict'; console.log( '[refToolbar-ka] სკრიპტი ჩაიტვირთა' ); /* ================= კონფიგურაცია ================= * template – შაბლონის სახელი ქართულ ვიკიში (შეცვალე რეალურზე, თუ განსხვავდება!) * fields – [პარამეტრი, ეტიკეტი, სავალდებულო?, ტიპი] ტიპი: 'date' | 'today' | undefined */ var TYPES = { web: { label: 'ვებგვერდი', template: 'Cite web', fields: [ [ 'url', 'ბმული (URL)', true ], [ 'title', 'სათაური', true ], [ 'website', 'საიტის სახელი' ], [ 'author', 'ავტორი' ], [ 'date', 'თარიღი', false, 'date' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ], [ 'language', 'ენა (კოდი, მაგ. en, ru)' ] ] }, news: { label: 'სიახლე / სტატია პრესაში', template: 'Cite news', fields: [ [ 'url', 'ბმული (URL)' ], [ 'title', 'სათაური', true ], [ 'author', 'ავტორი' ], [ 'work', 'გამოცემა' ], [ 'date', 'თარიღი', false, 'date' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ], [ 'language', 'ენა (კოდი)' ] ] }, book: { label: 'წიგნი', template: 'Cite book', fields: [ [ 'title', 'სათაური', true ], [ 'author', 'ავტორი' ], [ 'publisher', 'გამომცემლობა' ], [ 'location', 'გამოცემის ადგილი' ], [ 'year', 'წელი' ], [ 'isbn', 'ISBN' ], [ 'pages', 'გვერდები' ], [ 'url', 'ბმული (URL)' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ] ] }, journal: { label: 'სამეცნიერო ჟურნალი', template: 'Cite journal', fields: [ [ 'title', 'სტატიის სათაური', true ], [ 'author', 'ავტორი' ], [ 'journal', 'ჟურნალი' ], [ 'year', 'წელი' ], [ 'volume', 'ტომი' ], [ 'issue', 'ნომერი' ], [ 'pages', 'გვერდები' ], [ 'doi', 'DOI' ], [ 'url', 'ბმული (URL)' ], [ 'access-date', 'წვდომის თარიღი', false, 'today' ] ] } }; /* ================= დამხმარე ფუნქციები ================= */ function today() { var d = new Date(); var p = function ( n ) { return ( n < 10 ? '0' : '' ) + n; }; return d.getFullYear() + '-' + p( d.getMonth() + 1 ) + '-' + p( d.getDate() ); } function esc( s ) { return String( s ).replace( /&/g, '&amp;' ).replace( /</g, '&lt;' ).replace( /"/g, '&quot;' ); } function $textarea() { return $( '#wpTextbox1' ); } function insert( text ) { $textarea().textSelection( 'encapsulateSelection', { peri: text, replace: true } ); } function buildRef( typeKey, values, refName ) { var t = TYPES[ typeKey ]; var parts = []; t.fields.forEach( function ( f ) { var v = ( values[ f[ 0 ] ] || '' ).trim(); if ( v ) { // "|" შიგნით ბმულებში/ტექსტში შაბლონს არ დაამტვრევს parts.push( '|' + f[ 0 ] + '=' + v.replace( /\|/g, '{{!}}' ) ); } } ); var tpl = '{{' + t.template + ' ' + parts.join( ' ' ) + '}}'; var open = refName ? '<ref name="' + esc( refName ) + '">' : '<ref>'; return open + tpl + '</ref>'; } /* ================= დიალოგი ================= */ function openDialog() { if ( $( '#rtka-overlay' ).length ) { return; } var $overlay = $( '<div id="rtka-overlay">' ).css( { position: 'fixed', inset: 0, background: 'rgba(0,0,0,.45)', zIndex: 1000, display: 'flex', alignItems: 'center', justifyContent: 'center' } ); var $box = $( '<div>' ).css( { background: 'var(--background-color-base, #fff)', color: 'var(--color-base, #202122)', border: '1px solid #a2a9b1', borderRadius: '4px', padding: '16px', width: '460px', maxWidth: '94vw', maxHeight: '90vh', overflowY: 'auto', boxShadow: '0 4px 20px rgba(0,0,0,.3)' } ).appendTo( $overlay ); $( '<h3>' ).text( 'სქოლიოს დამატება' ).css( { margin: '0 0 10px' } ).appendTo( $box ); var currentType = Object.keys( TYPES )[ 0 ]; var $tabs = $( '<div>' ).css( { marginBottom: '10px' } ).appendTo( $box ); var tabButtons = {}; Object.keys( TYPES ).forEach( function ( k ) { tabButtons[ k ] = $( '<button type="button">' ).text( TYPES[ k ].label ) .css( { marginRight: '4px', marginBottom: '4px' } ) .on( 'click', function () { currentType = k; renderFields(); } ) .appendTo( $tabs ); } ); var $fields = $( '<div>' ).appendTo( $box ); var $refName = $( '<input type="text">' ).css( { width: '100%' } ); $( '<label>' ).text( 'ref-ის სახელი (არასავალდებულო, განმეორებითი გამოყენებისთვის)' ) .css( { display: 'block', marginTop: '10px', fontSize: '90%' } ) .append( $refName ).appendTo( $box ); var inputs = {}; function renderFields() { var t = TYPES[ currentType ]; Object.keys( tabButtons ).forEach( function ( k ) { tabButtons[ k ].css( 'font-weight', k === currentType ? 'bold' : 'normal' ); } ); $fields.empty(); inputs = {}; t.fields.forEach( function ( f ) { var $inp = $( '<input type="text">' ).css( { width: '100%' } ); if ( f[ 3 ] === 'today' ) { $inp.val( today() ); } if ( f[ 3 ] === 'date' ) { $inp.attr( 'placeholder', 'წწწწ-თთ-დდ' ); } inputs[ f[ 0 ] ] = $inp; $( '<label>' ) .text( f[ 1 ] + ( f[ 2 ] ? ' *' : '' ) ) .css( { display: 'block', marginTop: '6px', fontSize: '90%' } ) .append( $inp ).appendTo( $fields ); } ); var first = Object.keys( inputs )[ 0 ]; if ( first ) { inputs[ first ].trigger( 'focus' ); } } renderFields(); var $btns = $( '<div>' ).css( { marginTop: '14px', textAlign: 'right' } ).appendTo( $box ); function close() { $overlay.remove(); } $( '<button type="button">' ).text( 'გაუქმება' ).css( { marginRight: '8px' } ) .on( 'click', close ).appendTo( $btns ); $( '<button type="button">' ).text( 'ჩასმა' ).css( { fontWeight: 'bold' } ).on( 'click', function () { var key = currentType; var values = {}; var missing = false; TYPES[ key ].fields.forEach( function ( f ) { values[ f[ 0 ] ] = inputs[ f[ 0 ] ].val(); if ( f[ 2 ] && !values[ f[ 0 ] ].trim() ) { missing = true; inputs[ f[ 0 ] ].css( 'outline', '2px solid #d33' ); } } ); if ( missing ) { mw.notify( 'შეავსე სავალდებულო ველები (*)', { type: 'warn' } ); return; } insert( buildRef( key, values, $refName.val().trim() ) ); close(); } ).appendTo( $btns ); $overlay.on( 'mousedown', function ( e ) { if ( e.target === $overlay[ 0 ] ) { close(); } } ); $overlay.on( 'keydown', function ( e ) { if ( e.key === 'Escape' ) { close(); } } ); $( document.body ).append( $overlay ); } /* განმეორებითი ref (<ref name="..." />) */ function insertNamedRef() { var name = window.prompt( 'ref-ის სახელი, რომლის გამეორებაც გინდა:' ); if ( name && name.trim() ) { insert( '<ref name="' + esc( name.trim() ) + '" />' ); } } /* ================= პანელში ჩამატება ================= */ var toolbarAdded = false; function addTools() { $textarea().wikiEditor( 'addToToolbar', { section: 'main', group: 'insert', tools: { refToolbarKa: { label: 'ციტირება', type: 'button', icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 20 20'%3E%3Cpath fill='%2336c' d='M4 2h9l4 4v12H4z'/%3E%3Cpath fill='%23fff' d='M6 9h8v1H6zm0 3h8v1H6zm0 3h5v1H6z'/%3E%3C/svg%3E", action: { type: 'callback', execute: openDialog } }, refToolbarKaReuse: { label: 'ref-ის გამეორება', type: 'button', icon: "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='22' height='22' viewBox='0 0 20 20'%3E%3Ccircle cx='10' cy='10' r='8' fill='%2336c'/%3E%3Cpath fill='%23fff' d='M5 8h10v1.5H5zm0 3h10v1.5H5z'/%3E%3C/svg%3E", action: { type: 'callback', execute: insertNamedRef } } } } ); } /* ყოველთვის ხილული ღილაკების ზოლი – არ არის დამოკიდებული WikiEditor-ზე */ function addBar() { if ( $( '#rtka-bar' ).length ) { return; } var $bar = $( '<div id="rtka-bar">' ).css( { margin: '4px 0' } ); $( '<button type="button">' ).text( 'ციტირება' ).on( 'click', openDialog ).appendTo( $bar ); $( '<button type="button">' ).text( 'ref-ის გამეორება' ).css( { marginLeft: '6px' } ) .on( 'click', insertNamedRef ).appendTo( $bar ); $textarea().before( $bar ); console.log( '[refToolbar-ka] ზოლი დაემატა' ); } function tryWikiEditor() { if ( toolbarAdded ) { return; } if ( !$.fn.wikiEditor ) { console.log( '[refToolbar-ka] $.fn.wikiEditor არ არის – ვრჩები ზოლზე' ); return; } try { addTools(); // ზოლს ვშლით მხოლოდ თუ ღილაკი რეალურად გამოჩნდა პანელში setTimeout( function () { if ( $( '.tool[rel="refToolbarKa"]' ).length ) { toolbarAdded = true; $( '#rtka-bar' ).remove(); console.log( '[refToolbar-ka] ღილაკები დაემატა WikiEditor-ში' ); } else { console.log( '[refToolbar-ka] WikiEditor-ში ღილაკი ვერ გამოჩნდა – ვრჩები ზოლზე' ); } }, 500 ); } catch ( e ) { console.error( '[refToolbar-ka] WikiEditor-ში დამატება ვერ მოხერხდა:', e ); } } function init() { if ( !$textarea().length ) { console.log( '[refToolbar-ka] #wpTextbox1 ვერ მოიძებნა' ); return; } addBar(); // ბმული ხელსაწყოების მენიუში var link = mw.util.addPortletLink( 'p-tb', '#', 'ციტირება (სქოლიო)', 't-refka' ); if ( link ) { $( link ).on( 'click', function ( e ) { e.preventDefault(); openDialog(); } ); } mw.hook( 'wikiEditor.toolbarReady' ).add( tryWikiEditor ); setTimeout( tryWikiEditor, 2000 ); } mw.loader.using( [ 'mediawiki.util', 'jquery.textSelection' ] ).then( function () { $( init ); } ); }() ); t5rj30jwis5mg14kr6htq83mwbm8voz 768631 768630 2026-10-16T18:59:53Z გიო ოქრო 41075 768631 javascript text/javascript /** * Gadget-refToolbar-ka.js * სქოლიოების (ციტირების) ინსტრუმენტი ქართული ვიკიპედიისთვის. * - ღილაკი „ციტირება“: ფანჯარა, სადაც ირჩევ შაბლონის ტიპს და ავსებ ველებს * - ავტომატური შევსება: ჩასვი ბმული / DOI / ISBN / PMID და ველები თვითონ შეივსება (Citoid) * - ღილაკი „ref-ის გამეორება“: <ref name="..." /> * * დაყენება: Special:MyPage/common.js */ ( function () { 'use strict'; console.log( '[refToolbar-ka] სკრიპტი ჩაიტვირთა' ); /* ================= კონფიგურაცია ================= */ // ხატულები (SVG data-URI, ერთმაგი ბრჭყალებისა და ფრჩხილების გარეშე). // სურვილისამებრ ჩაანაცვლე Commons-ის ბმულით, მაგ.: // '//commons.wikimedia.org/wiki/Special:FilePath/FILE_NAME.svg?width=22' var ICONS = { cite: 'data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2222%22%20height=%2222%22%20viewBox=%220%200%2020%2020%22%3E%3Cpath%20fill=%22%2336c%22%20d=%22M4%202h9l4%204v12H4z%22/%3E%3Cpath%20fill=%22%23fff%22%20d=%22M6%209h8v1H6zm0%203h8v1H6zm0%203h5v1H6z%22/%3E%3C/svg%3E', reuse: 'data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2222%22%20height=%2222%22%20viewBox=%220%200%2020%2020%22%3E%3Ccircle%20cx=%2210%22%20cy=%2210%22%20r=%228%22%20fill=%22%2336c%22/%3E%3Cpath%20fill=%22%23fff%22%20d=%22M5%208h10v1.5H5zm0%203h10v1.5H5z%22/%3E%3C/svg%3E' }; // Citoid-ის მისამართები; ვცდით თანმიმდევრობით (ჯერ მიმდინარე ვიკი, შემდეგ en.wikipedia) var CITOID = [ '/api/rest_v1/data/citation/mediawiki/', 'https://en.wikipedia.org/api/rest_v1/data/citation/mediawiki/' ]; /* * TYPES: p – პარამეტრის სახელი შაბლონში (ეს შეგიძლია ქართულ ვიკიზე მოარგო), * l – ეტიკეტი, req – სავალდებულოა?, src – საიდან ივსება Citoid-ით (იხ. SRC), * kind – 'today' (დღევანდელი თარიღი) | 'date' (placeholder) * template – შაბლონის სახელი ქართულ ვიკიზე (შეცვალე რეალურზე!) */ var TYPES = { web: { label: 'ვებგვერდი', template: 'Cite web', fields: [ { p: 'url', l: 'ბმული (URL)', req: true, src: 'url' }, { p: 'title', l: 'სათაური', req: true, src: 'title' }, { p: 'website', l: 'საიტის სახელი', src: 'site' }, { p: 'author', l: 'ავტორი', src: 'author' }, { p: 'date', l: 'თარიღი', src: 'date', kind: 'date' }, { p: 'access-date', l: 'წვდომის თარიღი', kind: 'today' }, { p: 'language', l: 'ენა (კოდი, მაგ. en, ru)', src: 'language' } ] }, news: { label: 'სიახლე / პრესა', template: 'Cite news', fields: [ { p: 'url', l: 'ბმული (URL)', src: 'url' }, { p: 'title', l: 'სათაური', req: true, src: 'title' }, { p: 'author', l: 'ავტორი', src: 'author' }, { p: 'work', l: 'გამოცემა', src: 'pub' }, { p: 'date', l: 'თარიღი', src: 'date', kind: 'date' }, { p: 'access-date', l: 'წვდომის თარიღი', kind: 'today' }, { p: 'language', l: 'ენა (კოდი)', src: 'language' } ] }, book: { label: 'წიგნი', template: 'Cite book', fields: [ { p: 'title', l: 'სათაური', req: true, src: 'title' }, { p: 'author', l: 'ავტორი', src: 'author' }, { p: 'publisher', l: 'გამომცემლობა', src: 'publisher' }, { p: 'location', l: 'გამოცემის ადგილი', src: 'place' }, { p: 'year', l: 'წელი', src: 'year' }, { p: 'isbn', l: 'ISBN', src: 'isbn' }, { p: 'pages', l: 'გვერდები', src: 'pages' }, { p: 'url', l: 'ბმული (URL)', src: 'url' }, { p: 'access-date', l: 'წვდომის თარიღი', kind: 'today' } ] }, journal: { label: 'სამეცნიერო ჟურნალი', template: 'Cite journal', fields: [ { p: 'title', l: 'სტატიის სათაური', req: true, src: 'title' }, { p: 'author', l: 'ავტორი', src: 'author' }, { p: 'journal', l: 'ჟურნალი', src: 'journal' }, { p: 'year', l: 'წელი', src: 'year' }, { p: 'volume', l: 'ტომი', src: 'volume' }, { p: 'issue', l: 'ნომერი', src: 'issue' }, { p: 'pages', l: 'გვერდები', src: 'pages' }, { p: 'doi', l: 'DOI', src: 'doi' }, { p: 'url', l: 'ბმული (URL)', src: 'url' }, { p: 'access-date', l: 'წვდომის თარიღი', kind: 'today' } ] } }; // Citoid-ის itemType -> ჩვენი ტიპი var TYPE_MAP = { webpage: 'web', blogPost: 'web', forumPost: 'web', encyclopediaArticle: 'web', newspaperArticle: 'news', magazineArticle: 'news', book: 'book', bookSection: 'book', journalArticle: 'journal', conferencePaper: 'journal' }; /* ================= Citoid-ის მონაცემების ამოღება ================= */ function joinArr( v ) { return $.isArray( v ) ? v.join( ', ' ) : ( v || '' ); } function authorsOf( i ) { if ( !i.author || !i.author.length ) { return ''; } return i.author.map( function ( a ) { if ( $.isArray( a ) ) { var first = a[ 0 ] || ''; var last = a[ 1 ] || ''; return last && first ? last + ', ' + first : ( last || first ); } return String( a ); } ).join( '; ' ); } var SRC = { url: function ( i ) { return i.url; }, title: function ( i ) { return i.title; }, site: function ( i ) { return i.websiteTitle || i.publicationTitle; }, pub: function ( i ) { return i.publicationTitle || i.websiteTitle; }, journal: function ( i ) { return i.publicationTitle; }, author: authorsOf, date: function ( i ) { return i.date; }, year: function ( i ) { var m = /\d{4}/.exec( i.date || '' ); return m ? m[ 0 ] : ''; }, publisher: function ( i ) { return i.publisher; }, place: function ( i ) { return i.place; }, isbn: function ( i ) { return joinArr( i.ISBN ); }, pages: function ( i ) { return i.pages; }, volume: function ( i ) { return i.volume; }, issue: function ( i ) { return i.issue; }, doi: function ( i ) { return i.DOI; }, language: function ( i ) { return ( i.language || '' ).split( '-' )[ 0 ]; } }; function lookup( query ) { var d = $.Deferred(); var n = 0; function next() { if ( n >= CITOID.length ) { d.reject(); return; } var url = CITOID[ n++ ] + encodeURIComponent( query ); $.ajax( { url: url, dataType: 'json' } ).then( function ( data ) { var item = $.isArray( data ) ? data[ 0 ] : data; if ( item && ( item.title || item.url ) ) { d.resolve( item ); } else { next(); } }, function ( xhr ) { console.log( '[refToolbar-ka] Citoid ვერ მიპასუხა (' + url + '): ' + ( xhr && xhr.status ) ); next(); } ); } next(); return d.promise(); } /* ================= დამხმარე ფუნქციები ================= */ function today() { var d = new Date(); var p = function ( n ) { return ( n < 10 ? '0' : '' ) + n; }; return d.getFullYear() + '-' + p( d.getMonth() + 1 ) + '-' + p( d.getDate() ); } function esc( s ) { return String( s ).replace( /&/g, '&amp;' ).replace( /</g, '&lt;' ).replace( /"/g, '&quot;' ); } function $textarea() { return $( '#wpTextbox1' ); } function insert( text ) { $textarea().textSelection( 'encapsulateSelection', { peri: text, replace: true } ); } function buildRef( typeKey, values, refName ) { var t = TYPES[ typeKey ]; var parts = []; t.fields.forEach( function ( f ) { var v = ( values[ f.p ] || '' ).trim(); if ( v ) { parts.push( '|' + f.p + '=' + v.replace( /\|/g, '{{!}}' ) ); } } ); var tpl = '{{' + t.template + ' ' + parts.join( ' ' ) + '}}'; var open = refName ? '<ref name="' + esc( refName ) + '">' : '<ref>'; return open + tpl + '</ref>'; } /* ================= დიალოგი ================= */ function openDialog() { if ( $( '#rtka-overlay' ).length ) { return; } var currentType = 'web'; var lastItem = null; var inputs = {}; var $overlay = $( '<div id="rtka-overlay">' ).css( { position: 'fixed', top: 0, right: 0, bottom: 0, left: 0, background: 'rgba(0,0,0,.45)', zIndex: 1000, display: 'flex', alignItems: 'center', justifyContent: 'center' } ); var $box = $( '<div>' ).css( { background: 'var(--background-color-base, #fff)', color: 'var(--color-base, #202122)', border: '1px solid #a2a9b1', borderRadius: '4px', padding: '16px', width: '480px', maxWidth: '94vw', maxHeight: '90vh', overflowY: 'auto', boxShadow: '0 4px 20px rgba(0,0,0,.3)' } ).appendTo( $overlay ); $( '<h3>' ).text( 'სქოლიოს დამატება' ).css( { margin: '0 0 10px' } ).appendTo( $box ); /* ავტომატური შევსება */ var $lookupRow = $( '<div>' ).css( { display: 'flex', gap: '6px', marginBottom: '4px' } ).appendTo( $box ); var $q = $( '<input type="text">' ).attr( 'placeholder', 'ჩასვი ბმული, DOI, ISBN ან PMID' ) .css( { flex: 1 } ).appendTo( $lookupRow ); var $lookupBtn = $( '<button type="button">' ).text( 'შევსება' ).appendTo( $lookupRow ); var $status = $( '<div>' ).css( { fontSize: '85%', minHeight: '1.2em', marginBottom: '8px', opacity: 0.8 } ) .appendTo( $box ); /* ტიპის ღილაკები */ var $tabs = $( '<div>' ).css( { marginBottom: '8px' } ).appendTo( $box ); var tabButtons = {}; Object.keys( TYPES ).forEach( function ( k ) { tabButtons[ k ] = $( '<button type="button">' ).text( TYPES[ k ].label ) .css( { marginRight: '4px', marginBottom: '4px' } ) .on( 'click', function () { currentType = k; renderFields(); } ) .appendTo( $tabs ); } ); var $fields = $( '<div>' ).appendTo( $box ); var $refName = $( '<input type="text">' ).css( { width: '100%' } ); $( '<label>' ).text( 'ref-ის სახელი (არასავალდებულო, განმეორებითი გამოყენებისთვის)' ) .css( { display: 'block', marginTop: '10px', fontSize: '90%' } ) .append( $refName ).appendTo( $box ); function applyItem() { if ( !lastItem ) { return; } TYPES[ currentType ].fields.forEach( function ( f ) { if ( !f.src || !SRC[ f.src ] ) { return; } var v = SRC[ f.src ]( lastItem ); if ( v ) { inputs[ f.p ].val( String( v ).trim() ); } } ); } function renderFields() { var t = TYPES[ currentType ]; Object.keys( tabButtons ).forEach( function ( k ) { tabButtons[ k ].css( 'font-weight', k === currentType ? 'bold' : 'normal' ); } ); $fields.empty(); inputs = {}; t.fields.forEach( function ( f ) { var $inp = $( '<input type="text">' ).css( { width: '100%' } ); if ( f.kind === 'today' ) { $inp.val( today() ); } if ( f.kind === 'date' ) { $inp.attr( 'placeholder', 'წწწწ-თთ-დდ' ); } inputs[ f.p ] = $inp; $( '<label>' ) .text( f.l + ( f.req ? ' *' : '' ) ) .css( { display: 'block', marginTop: '6px', fontSize: '90%' } ) .append( $inp ).appendTo( $fields ); } ); applyItem(); } function doLookup() { var q = $.trim( $q.val() ); if ( !q ) { return; } $status.text( 'ვეძებ…' ); $lookupBtn.prop( 'disabled', true ); lookup( q ).then( function ( item ) { lastItem = item; currentType = TYPE_MAP[ item.itemType ] || 'web'; renderFields(); $status.text( 'შევსებულია – გადაამოწმე ველები.' ); }, function () { $status.text( 'ავტომატურად ვერ მოიძებნა. შეავსე ხელით.' ); if ( /^https?:\/\//i.test( q ) ) { lastItem = { url: q }; applyItem(); } } ).always( function () { $lookupBtn.prop( 'disabled', false ); } ); } $lookupBtn.on( 'click', doLookup ); $q.on( 'keydown', function ( e ) { if ( e.key === 'Enter' ) { e.preventDefault(); doLookup(); } } ); renderFields(); var $btns = $( '<div>' ).css( { marginTop: '14px', textAlign: 'right' } ).appendTo( $box ); function close() { $overlay.remove(); } $( '<button type="button">' ).text( 'გაუქმება' ).css( { marginRight: '8px' } ) .on( 'click', close ).appendTo( $btns ); $( '<button type="button">' ).text( 'ჩასმა' ).css( { fontWeight: 'bold' } ).on( 'click', function () { var values = {}; var missing = false; TYPES[ currentType ].fields.forEach( function ( f ) { values[ f.p ] = inputs[ f.p ].val(); if ( f.req && !values[ f.p ].trim() ) { missing = true; inputs[ f.p ].css( 'outline', '2px solid #d33' ); } } ); if ( missing ) { mw.notify( 'შეავსე სავალდებულო ველები (*)', { type: 'warn' } ); return; } insert( buildRef( currentType, values, $refName.val().trim() ) ); close(); } ).appendTo( $btns ); $overlay.on( 'mousedown', function ( e ) { if ( e.target === $overlay[ 0 ] ) { close(); } } ); $overlay.on( 'keydown', function ( e ) { if ( e.key === 'Escape' ) { close(); } } ); $( document.body ).append( $overlay ); $q.trigger( 'focus' ); } /* განმეორებითი ref (<ref name="..." />) */ function insertNamedRef() { var name = window.prompt( 'ref-ის სახელი, რომლის გამეორებაც გინდა:' ); if ( name && name.trim() ) { insert( '<ref name="' + esc( name.trim() ) + '" />' ); } } /* ================= პანელში ჩამატება ================= */ var toolbarAdded = false; function addTools() { $textarea().wikiEditor( 'addToToolbar', { section: 'main', group: 'insert', tools: { refToolbarKa: { label: 'ციტირება', type: 'button', icon: ICONS.cite, action: { type: 'callback', execute: openDialog } }, refToolbarKaReuse: { label: 'ref-ის გამეორება', type: 'button', icon: ICONS.reuse, action: { type: 'callback', execute: insertNamedRef } } } } ); } /* ყოველთვის ხილული ღილაკების ზოლი – არ არის დამოკიდებული WikiEditor-ზე */ function addBar() { if ( $( '#rtka-bar' ).length ) { return; } var $bar = $( '<div id="rtka-bar">' ).css( { margin: '4px 0' } ); $( '<button type="button">' ).text( 'ციტირება' ).on( 'click', openDialog ).appendTo( $bar ); $( '<button type="button">' ).text( 'ref-ის გამეორება' ).css( { marginLeft: '6px' } ) .on( 'click', insertNamedRef ).appendTo( $bar ); $textarea().before( $bar ); } function tryWikiEditor() { if ( toolbarAdded || !$.fn.wikiEditor ) { return; } try { addTools(); // ზოლს ვშლით მხოლოდ თუ ღილაკი რეალურად გამოჩნდა პანელში setTimeout( function () { if ( $( '.tool[rel="refToolbarKa"]' ).length ) { toolbarAdded = true; $( '#rtka-bar' ).remove(); } }, 500 ); } catch ( e ) { console.error( '[refToolbar-ka] WikiEditor-ში დამატება ვერ მოხერხდა:', e ); } } function init() { if ( !$textarea().length ) { return; } addBar(); var link = mw.util.addPortletLink( 'p-tb', '#', 'ციტირება (სქოლიო)', 't-refka' ); if ( link ) { $( link ).on( 'click', function ( e ) { e.preventDefault(); openDialog(); } ); } mw.hook( 'wikiEditor.toolbarReady' ).add( tryWikiEditor ); setTimeout( tryWikiEditor, 2000 ); } mw.loader.using( [ 'mediawiki.util', 'jquery.textSelection' ] ).then( function () { $( init ); } ); }() ); ddo5gvxa9x4f7z1qwcf46lxrh46oo0a 768632 768631 2026-10-16T19:13:34Z გიო ოქრო 41075 768632 javascript text/javascript /** * Gadget-refToolbar-ka.js * სქოლიოების (ციტირების) ინსტრუმენტი ქართული ვიკიპედიისთვის. * - ერთი ღილაკი „ციტირება“ რედაქტირების პანელზე * - შაბლონს ირჩევ შენ (Cite web / news / book / journal) და ზუსტად იმას ავსებს * - ავტომატური შევსება ბმულით / DOI-თი / ISBN-ით / PMID-ით (Citoid) * - რამდენიმე ავტორი/რედაქტორი, დამატებითი ველები (CS1 შაბლონების სრული ნაკრები) * * დაყენება: Special:MyPage/common.js */ ( function () { 'use strict'; console.log( '[refToolbar-ka] სკრიპტი ჩაიტვირთა' ); function trim( s ) { return String( s === undefined || s === null ? '' : s ).trim(); } /* ================= კონფიგურაცია ================= */ // ხატულა (SVG data-URI: ერთმაგი ბრჭყალებისა და ფრჩხილების გარეშე) var ICON = 'data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%2222%22%20height=%2222%22%20viewBox=%220%200%2020%2020%22%3E%3Cpath%20fill=%22%2336c%22%20d=%22M4%202h9l4%204v12H4z%22/%3E%3Cpath%20fill=%22%23fff%22%20d=%22M6%209h8v1H6zm0%203h8v1H6zm0%203h5v1H6z%22/%3E%3C/svg%3E'; // Citoid-ის მისამართები; ვცდით თანმიმდევრობით var CITOID = [ '/api/rest_v1/data/citation/mediawiki/', 'https://en.wikipedia.org/api/rest_v1/data/citation/mediawiki/' ]; var DATE_PH = 'წწწწ-თთ-დდ'; /* სახელების სიები (ავტორები, რედაქტორები): * last/first – პარამეტრის პრეფიქსი (ნომრით: last1, first1...), * single – თუ მხოლოდ ერთი სახელია (ორგანიზაცია): author1, editor1... */ var NAMES = { authors: { key: 'authors', label: 'ავტორები', last: 'last', first: 'first', single: 'author', add: 'ავტორის დამატება' }, editors: { key: 'editors', label: 'რედაქტორები', last: 'editor-last', first: 'editor-first', single: 'editor', add: 'რედაქტორის დამატება' } }; /* ველები: p – პარამეტრი, l – ეტიკეტი, req – სავალდებულო, src – Citoid-ის წყარო (იხ. SRC), * full – მთელ სიგანეზე, ph – placeholder, kind: 'today' | select-ისთვის type:'select' + options */ function f( p, l, o ) { return $.extend( { p: p, l: l }, o || {} ); } var A = { names: 'authors' }; var E = { names: 'editors' }; function archive() { return [ f( 'archive-url', 'არქივის ბმული', { full: true } ), f( 'archive-date', 'არქივის თარიღი', { ph: DATE_PH } ), f( 'url-status', 'ბმულის სტატუსი', { type: 'select', options: [ 'live', 'dead', 'unfit', 'usurped' ] } ) ]; } function urlAccess() { return f( 'url-access', 'წვდომა ბმულზე', { type: 'select', options: [ 'registration', 'subscription', 'limited' ] } ); } var TYPES = { web: { label: 'Cite web', template: 'Cite web', main: [ f( 'url', 'ბმული (URL)', { req: true, src: 'url', full: true } ), f( 'title', 'სათაური', { req: true, src: 'title', full: true } ), A, f( 'date', 'თარიღი', { src: 'date', ph: DATE_PH } ), f( 'website', 'ვებგვერდი', { src: 'site' } ), f( 'publisher', 'გამომცემელი', { src: 'publisher' } ), f( 'access-date', 'წვდომის თარიღი', { kind: 'today' } ), f( 'language', 'ენა (კოდი, მაგ. en)', { src: 'language' } ) ], extra: [ f( 'agency', 'სააგენტო' ), f( 'location', 'ადგილი', { src: 'place' } ), f( 'trans-title', 'სათაურის თარგმანი' ), f( 'format', 'ფორმატი (მაგ. PDF)' ), f( 'type', 'ტიპი' ), f( 'orig-date', 'ორიგინალის თარიღი' ), f( 'page', 'გვერდი' ), f( 'pages', 'გვერდები', { src: 'pages' } ), f( 'at', 'ადგილი ტექსტში (at)' ), f( 'via', 'პლატფორმა (via)' ), f( 'id', 'იდენტიფიკატორი (id)' ), f( 'quote', 'ციტატა', { full: true } ), E ].concat( archive(), [ urlAccess() ] ) }, news: { label: 'Cite news', template: 'Cite news', main: [ f( 'url', 'ბმული (URL)', { src: 'url', full: true } ), f( 'title', 'სათაური', { req: true, src: 'title', full: true } ), A, f( 'newspaper', 'გაზეთი / გამოცემა', { src: 'pub' } ), f( 'date', 'თარიღი', { src: 'date', ph: DATE_PH } ), f( 'access-date', 'წვდომის თარიღი', { kind: 'today' } ), f( 'language', 'ენა (კოდი, მაგ. en)', { src: 'language' } ) ], extra: [ f( 'agency', 'სააგენტო' ), f( 'publisher', 'გამომცემელი', { src: 'publisher' } ), f( 'location', 'ადგილი', { src: 'place' } ), f( 'volume', 'ტომი', { src: 'volume' } ), f( 'issue', 'ნომერი', { src: 'issue' } ), f( 'edition', 'გამოცემა', { src: 'edition' } ), f( 'page', 'გვერდი' ), f( 'pages', 'გვერდები', { src: 'pages' } ), f( 'at', 'ადგილი ტექსტში (at)' ), f( 'trans-title', 'სათაურის თარგმანი' ), f( 'format', 'ფორმატი (მაგ. PDF)' ), f( 'issn', 'ISSN', { src: 'issn' } ), f( 'orig-date', 'ორიგინალის თარიღი' ), f( 'via', 'პლატფორმა (via)' ), f( 'id', 'იდენტიფიკატორი (id)' ), f( 'quote', 'ციტატა', { full: true } ), E ].concat( archive(), [ urlAccess() ] ) }, book: { label: 'Cite book', template: 'Cite book', main: [ f( 'title', 'სათაური', { req: true, src: 'title', full: true } ), A, f( 'publisher', 'გამომცემლობა', { src: 'publisher' } ), f( 'location', 'გამოცემის ადგილი', { src: 'place' } ), f( 'year', 'წელი', { src: 'year' } ), f( 'isbn', 'ISBN', { src: 'isbn' } ), f( 'page', 'გვერდი' ), f( 'pages', 'გვერდები', { src: 'pages' } ), f( 'url', 'ბმული (URL)', { src: 'url', full: true } ), f( 'access-date', 'წვდომის თარიღი', { kind: 'today' } ) ], extra: [ f( 'date', 'თარიღი (თუ სრული თარიღია; წელთან ერთად არ გამოიყენო)', { full: true, ph: DATE_PH } ), f( 'orig-date', 'ორიგინალის თარიღი' ), f( 'edition', 'გამოცემა', { src: 'edition' } ), f( 'volume', 'ტომი', { src: 'volume' } ), f( 'series', 'სერია', { src: 'series' } ), f( 'language', 'ენა (კოდი)', { src: 'language' } ), f( 'chapter', 'თავი' ), f( 'chapter-url', 'თავის ბმული' ), f( 'trans-title', 'სათაურის თარგმანი' ), f( 'oclc', 'OCLC', { src: 'oclc' } ), f( 'doi', 'DOI', { src: 'doi' } ), f( 'at', 'ადგილი ტექსტში (at)' ), f( 'format', 'ფორმატი (მაგ. PDF)' ), f( 'via', 'პლატფორმა (via)' ), f( 'id', 'იდენტიფიკატორი (id)' ), f( 'quote', 'ციტატა', { full: true } ), E ].concat( archive(), [ urlAccess() ] ) }, journal: { label: 'Cite journal', template: 'Cite journal', main: [ f( 'title', 'სტატიის სათაური', { req: true, src: 'title', full: true } ), A, f( 'journal', 'ჟურნალი', { src: 'journal' } ), f( 'year', 'წელი', { src: 'year' } ), f( 'volume', 'ტომი', { src: 'volume' } ), f( 'issue', 'ნომერი', { src: 'issue' } ), f( 'page', 'გვერდი' ), f( 'pages', 'გვერდები', { src: 'pages' } ), f( 'doi', 'DOI', { src: 'doi' } ), f( 'access-date', 'წვდომის თარიღი', { kind: 'today' } ), f( 'url', 'ბმული (URL)', { src: 'url', full: true } ) ], extra: [ f( 'date', 'თარიღი (თუ სრული თარიღია; წელთან ერთად არ გამოიყენო)', { full: true, ph: DATE_PH } ), f( 'pmid', 'PMID', { src: 'pmid' } ), f( 'pmc', 'PMC', { src: 'pmc' } ), f( 'jstor', 'JSTOR' ), f( 'issn', 'ISSN', { src: 'issn' } ), f( 'bibcode', 'Bibcode' ), f( 'arxiv', 'arXiv' ), f( 's2cid', 'S2CID' ), f( 'doi-access', 'DOI-ის წვდომა', { type: 'select', options: [ 'free' ] } ), f( 'publisher', 'გამომცემელი', { src: 'publisher' } ), f( 'location', 'ადგილი', { src: 'place' } ), f( 'language', 'ენა (კოდი)', { src: 'language' } ), f( 'series', 'სერია', { src: 'series' } ), f( 'edition', 'გამოცემა', { src: 'edition' } ), f( 'trans-title', 'სათაურის თარგმანი' ), f( 'at', 'ადგილი ტექსტში (at)' ), f( 'format', 'ფორმატი (მაგ. PDF)' ), f( 'type', 'ტიპი' ), f( 'via', 'პლატფორმა (via)' ), f( 'id', 'იდენტიფიკატორი (id)' ), f( 'quote', 'ციტატა', { full: true } ), E ].concat( archive(), [ urlAccess() ] ) } }; /* ================= Citoid-ის მონაცემების ამოღება ================= */ function pick( i ) { for ( var n = 1; n < arguments.length; n++ ) { if ( i[ arguments[ n ] ] ) { return i[ arguments[ n ] ]; } } return ''; } // მასივიდან ვიღებთ ერთ მნიშვნელობას (ISBN-ისთვის უპირატესობა 13-ციფრიანს) function firstOf( v, prefer13 ) { if ( !Array.isArray( v ) ) { return v || ''; } if ( prefer13 ) { for ( var n = 0; n < v.length; n++ ) { if ( String( v[ n ] ).replace( /\D/g, '' ).length === 13 ) { return v[ n ]; } } } return v[ 0 ] || ''; } // Citoid: [[სახელი, გვარი], ...] -> [{last, first}] function namesOf( list ) { if ( !list || !list.length ) { return []; } return list.map( function ( a ) { if ( Array.isArray( a ) ) { var first = a[ 0 ] || ''; var last = a[ 1 ] || ''; return last ? { last: last, first: first } : { last: first, first: '' }; } return { last: String( a ), first: '' }; } ); } var SRC = { url: function ( i ) { return i.url; }, title: function ( i ) { return i.title; }, site: function ( i ) { return i.websiteTitle || i.publicationTitle; }, pub: function ( i ) { return i.publicationTitle || i.websiteTitle; }, journal: function ( i ) { return i.publicationTitle; }, date: function ( i ) { return i.date; }, year: function ( i ) { var m = /\d{4}/.exec( i.date || '' ); return m ? m[ 0 ] : ''; }, publisher: function ( i ) { return i.publisher; }, place: function ( i ) { return i.place; }, isbn: function ( i ) { return firstOf( pick( i, 'ISBN', 'isbn' ), true ); }, issn: function ( i ) { return firstOf( pick( i, 'ISSN', 'issn' ) ); }, oclc: function ( i ) { return firstOf( pick( i, 'oclc', 'OCLC' ) ); }, pages: function ( i ) { return i.pages; }, volume: function ( i ) { return i.volume; }, issue: function ( i ) { return i.issue; }, edition: function ( i ) { return i.edition; }, series: function ( i ) { return i.series; }, doi: function ( i ) { return pick( i, 'DOI', 'doi' ); }, pmid: function ( i ) { return i.PMID; }, pmc: function ( i ) { return i.PMCID; }, language: function ( i ) { return ( i.language || '' ).split( '-' )[ 0 ]; } }; function lookup( query ) { var d = $.Deferred(); var n = 0; function next() { if ( n >= CITOID.length ) { d.reject(); return; } var url = CITOID[ n++ ] + encodeURIComponent( query ); $.ajax( { url: url, dataType: 'json' } ).then( function ( data ) { var item = Array.isArray( data ) ? data[ 0 ] : data; if ( item && ( item.title || item.url ) ) { d.resolve( item ); } else { next(); } }, function ( xhr ) { console.log( '[refToolbar-ka] Citoid ვერ მიპასუხა (' + url + '): ' + ( xhr && xhr.status ) ); next(); } ); } next(); return d.promise(); } /* ================= მდგომარეობა და გენერაცია ================= */ var state; function newState() { return { type: 'web', vals: {}, names: {}, refName: '', moreOpen: false, item: null }; } function today() { var d = new Date(); var p = function ( n ) { return ( n < 10 ? '0' : '' ) + n; }; return d.getFullYear() + '-' + p( d.getMonth() + 1 ) + '-' + p( d.getDate() ); } function esc( s ) { return String( s ).replace( /&/g, '&amp;' ).replace( /</g, '&lt;' ).replace( /"/g, '&quot;' ); } function clean( s ) { return String( s ).replace( /\|/g, '{{!}}' ); } function allFields( t ) { return t.main.concat( t.extra ); } // ვავსებთ მხოლოდ მიმდინარე ტიპის ველებს; onlyEmpty=true – არსებულს არ ვცვლით function applyItem( item, onlyEmpty ) { allFields( TYPES[ state.type ] ).forEach( function ( fd ) { if ( fd.src && SRC[ fd.src ] ) { var v = SRC[ fd.src ]( item ); if ( v && !( onlyEmpty && trim( state.vals[ fd.p ] ) ) ) { state.vals[ fd.p ] = String( v ).trim(); } } } ); var a = namesOf( item.author ); if ( a.length && !( onlyEmpty && hasNames( 'authors' ) ) ) { state.names.authors = a; } var e = namesOf( item.editor ); if ( e.length && !( onlyEmpty && hasNames( 'editors' ) ) ) { state.names.editors = e; } } function hasNames( key ) { return ( state.names[ key ] || [] ).some( function ( r ) { return trim( r.last ) || trim( r.first ); } ); } function buildRef() { var t = TYPES[ state.type ]; var parts = []; allFields( t ).forEach( function ( fd ) { if ( fd.names ) { var def = NAMES[ fd.names ]; var n = 0; ( state.names[ fd.names ] || [] ).forEach( function ( r ) { var last = trim( r.last || '' ); var first = trim( r.first || '' ); if ( !last && !first ) { return; } n++; if ( last && first ) { parts.push( '|' + def.last + n + '=' + clean( last ) ); parts.push( '|' + def.first + n + '=' + clean( first ) ); } else { parts.push( '|' + def.single + n + '=' + clean( last || first ) ); } } ); return; } var v = trim( state.vals[ fd.p ] || '' ); if ( fd.p === 'year' && v && trim( state.vals.date ).indexOf( v ) !== -1 ) { return; } if ( v ) { parts.push( '|' + fd.p + '=' + clean( v ) ); } } ); var tpl = '{{' + t.template + ' ' + parts.join( ' ' ) + '}}'; var name = trim( state.refName || '' ); return ( name ? '<ref name="' + esc( name ) + '">' : '<ref>' ) + tpl + '</ref>'; } function insert( text ) { $( '#wpTextbox1' ).textSelection( 'encapsulateSelection', { peri: text, replace: true } ); } /* ================= სტილი ================= */ var CSS = [ '.rtka-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.4);z-index:1000;display:flex;align-items:center;justify-content:center;padding:12px}', '.rtka-dialog{background:var(--background-color-base,#fff);color:var(--color-base,#202122);border:1px solid var(--border-color-base,#a2a9b1);border-radius:2px;box-shadow:0 8px 24px rgba(0,0,0,.25);width:580px;max-width:100%;max-height:92vh;display:flex;flex-direction:column;font-size:14px}', '.rtka-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-color-subtle,#c8ccd1)}', '.rtka-head h3{margin:0;padding:0;border:0;font-size:1.15em;font-weight:bold}', '.rtka-x{background:none;border:0;font-size:22px;line-height:1;cursor:pointer;color:var(--color-subtle,#54595d);padding:0 4px}', '.rtka-body{padding:14px 16px;overflow-y:auto}', '.rtka-lookup{display:flex;gap:8px}', '.rtka-status{font-size:12px;color:var(--color-subtle,#54595d);min-height:16px;margin:4px 0 12px}', '.rtka-types{display:flex;border:1px solid var(--border-color-base,#a2a9b1);border-radius:2px;overflow:hidden;margin-bottom:14px}', '.rtka-types button{flex:1;border:0;border-right:1px solid var(--border-color-subtle,#c8ccd1);background:var(--background-color-interactive-subtle,#f8f9fa);color:var(--color-base,#202122);padding:7px 4px;cursor:pointer;font-size:13px}', '.rtka-types button:last-child{border-right:0}', '.rtka-types button.on{background:var(--background-color-progressive-subtle,#f1f4fd);color:var(--color-progressive,#36c);font-weight:bold}', '.rtka-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}', '.rtka-grid .full{grid-column:1 / -1}', '.rtka-field label{display:block;font-size:12px;color:var(--color-subtle,#54595d);margin-bottom:3px}', '.rtka-dialog input[type=text],.rtka-dialog select{width:100%;box-sizing:border-box;padding:5px 8px;border:1px solid var(--border-color-base,#a2a9b1);border-radius:2px;background:var(--background-color-base,#fff);color:inherit;font-size:14px;font-family:inherit}', '.rtka-dialog input[type=text]:focus,.rtka-dialog select:focus{outline:0;border-color:var(--color-progressive,#36c);box-shadow:inset 0 0 0 1px var(--color-progressive,#36c)}', '.rtka-field.err input{border-color:var(--color-error,#d33);box-shadow:inset 0 0 0 1px var(--color-error,#d33)}', '.rtka-namerow{display:grid;grid-template-columns:1fr 1fr 24px;gap:6px;margin-bottom:5px;align-items:center}', '.rtka-rm{background:none;border:0;cursor:pointer;color:var(--color-subtle,#54595d);font-size:18px;line-height:1;padding:0}', '.rtka-link{background:none;border:0;cursor:pointer;color:var(--color-progressive,#36c);font-size:13px;padding:2px 0}', '.rtka-more{margin-top:16px;border-top:1px solid var(--border-color-subtle,#c8ccd1);padding-top:10px}', '.rtka-more summary{cursor:pointer;color:var(--color-progressive,#36c);font-size:13px;margin-bottom:10px}', '.rtka-foot{display:flex;justify-content:flex-end;gap:8px;padding:10px 16px;border-top:1px solid var(--border-color-subtle,#c8ccd1)}', '.rtka-btn{padding:6px 14px;border:1px solid var(--border-color-base,#a2a9b1);border-radius:2px;background:var(--background-color-interactive-subtle,#f8f9fa);color:var(--color-base,#202122);cursor:pointer;font-size:14px}', '.rtka-btn:disabled{opacity:.6;cursor:default}', '.rtka-btn.primary{background:var(--color-progressive,#36c);border-color:var(--color-progressive,#36c);color:#fff;font-weight:bold}', '@media (max-width:520px){.rtka-grid{grid-template-columns:1fr}}', // ხატულის სარეზერვო წესი WikiEditor-ის ღილაკისთვის '.tool[rel="refToolbarKa"] a{background-image:url("' + ICON + '")!important;background-repeat:no-repeat!important;background-position:center!important;background-size:20px 20px!important}' ].join( '\n' ); /* ================= დიალოგი ================= */ function nameList( def ) { if ( !state.names[ def.key ] || !state.names[ def.key ].length ) { state.names[ def.key ] = [ { last: '', first: '' } ]; } var arr = state.names[ def.key ]; var $wrap = $( '<div class="rtka-field full">' ).append( $( '<label>' ).text( def.label ) ); var $rows = $( '<div>' ).appendTo( $wrap ); function draw() { $rows.empty(); arr.forEach( function ( row, idx ) { var $r = $( '<div class="rtka-namerow">' ).appendTo( $rows ); $( '<input type="text">' ).attr( 'placeholder', 'გვარი (ან ორგანიზაცია)' ).val( row.last ) .on( 'input', function () { row.last = this.value; } ).appendTo( $r ); $( '<input type="text">' ).attr( 'placeholder', 'სახელი' ).val( row.first ) .on( 'input', function () { row.first = this.value; } ).appendTo( $r ); var $rm = $( '<button type="button" class="rtka-rm" title="წაშლა">' ).text( '×' ) .on( 'click', function () { arr.splice( idx, 1 ); if ( !arr.length ) { arr.push( { last: '', first: '' } ); } draw(); } ).appendTo( $r ); if ( arr.length === 1 ) { $rm.css( 'visibility', 'hidden' ); } } ); } draw(); $( '<button type="button" class="rtka-link">' ).text( '+ ' + def.add ).on( 'click', function () { arr.push( { last: '', first: '' } ); draw(); $rows.find( '.rtka-namerow' ).last().find( 'input' ).first().trigger( 'focus' ); } ).appendTo( $wrap ); return $wrap; } function openDialog() { if ( $( '.rtka-overlay' ).length ) { return; } state = newState(); var fieldEls = {}; var $overlay = $( '<div class="rtka-overlay">' ); var $dlg = $( '<div class="rtka-dialog" role="dialog" aria-modal="true">' ).appendTo( $overlay ); function close() { $overlay.remove(); } var $head = $( '<div class="rtka-head">' ).appendTo( $dlg ); $( '<h3>' ).text( 'ციტირება' ).appendTo( $head ); $( '<button type="button" class="rtka-x" title="დახურვა">' ).text( '×' ).on( 'click', close ).appendTo( $head ); var $body = $( '<div class="rtka-body">' ).appendTo( $dlg ); /* ავტომატური შევსება */ var $lookupRow = $( '<div class="rtka-lookup">' ).appendTo( $body ); var $q = $( '<input type="text">' ).attr( 'placeholder', 'ჩასვი ბმული, DOI, ISBN ან PMID' ).appendTo( $lookupRow ); var $lookupBtn = $( '<button type="button" class="rtka-btn">' ).text( 'შევსება' ).appendTo( $lookupRow ); var $status = $( '<div class="rtka-status">' ).appendTo( $body ); /* შაბლონის არჩევა */ var $types = $( '<div class="rtka-types">' ).appendTo( $body ); var typeBtns = {}; Object.keys( TYPES ).forEach( function ( k ) { typeBtns[ k ] = $( '<button type="button">' ).text( TYPES[ k ].label ) .on( 'click', function () { state.type = k; if ( state.item ) { applyItem( state.item, true ); } renderForm(); } ).appendTo( $types ); } ); var $form = $( '<div>' ).appendTo( $body ); function addField( $grid, fd ) { if ( fd.names ) { $grid.append( nameList( NAMES[ fd.names ] ) ); return; } var $w = $( '<div class="rtka-field">' ).toggleClass( 'full', !!fd.full ).appendTo( $grid ); $( '<label>' ).text( fd.l + ( fd.req ? ' *' : '' ) ).appendTo( $w ); var $inp; if ( fd.type === 'select' ) { $inp = $( '<select>' ).append( $( '<option>' ).val( '' ).text( '—' ) ); fd.options.forEach( function ( o ) { $inp.append( $( '<option>' ).val( o ).text( o ) ); } ); } else { $inp = $( '<input type="text">' ); if ( fd.ph ) { $inp.attr( 'placeholder', fd.ph ); } } if ( state.vals[ fd.p ] === undefined && fd.kind === 'today' ) { state.vals[ fd.p ] = today(); } $inp.val( state.vals[ fd.p ] || '' ).on( 'input change', function () { state.vals[ fd.p ] = this.value; $w.removeClass( 'err' ); } ).appendTo( $w ); fieldEls[ fd.p ] = $w; } function renderForm() { var t = TYPES[ state.type ]; Object.keys( typeBtns ).forEach( function ( k ) { typeBtns[ k ].toggleClass( 'on', k === state.type ); } ); $form.empty(); fieldEls = {}; var $main = $( '<div class="rtka-grid">' ).appendTo( $form ); t.main.forEach( function ( fd ) { addField( $main, fd ); } ); var $more = $( '<details class="rtka-more">' ).prop( 'open', state.moreOpen ).appendTo( $form ); $more.on( 'toggle', function () { state.moreOpen = $more.prop( 'open' ); } ); $( '<summary>' ).text( 'დამატებითი ველები' ).appendTo( $more ); var $extra = $( '<div class="rtka-grid">' ).appendTo( $more ); var $rn = $( '<div class="rtka-field full">' ).appendTo( $extra ); $( '<label>' ).text( 'ref-ის სახელი (არასავალდებულო)' ).appendTo( $rn ); $( '<input type="text">' ).val( state.refName ).on( 'input', function () { state.refName = this.value; } ).appendTo( $rn ); t.extra.forEach( function ( fd ) { addField( $extra, fd ); } ); } function doLookup() { var q = trim( $q.val() ); if ( !q ) { return; } $status.text( 'ვეძებ…' ); $lookupBtn.prop( 'disabled', true ); lookup( q ).then( function ( item ) { state.item = item; applyItem( item ); renderForm(); $status.text( 'შევსებულია (' + TYPES[ state.type ].label + '). გადაამოწმე ველები.' ); }, function () { $status.text( 'ავტომატურად ვერ მოიძებნა. შეავსე ხელით.' ); if ( /^https?:\/\//i.test( q ) ) { state.vals.url = q; renderForm(); } } ).always( function () { $lookupBtn.prop( 'disabled', false ); } ); } $lookupBtn.on( 'click', doLookup ); $q.on( 'keydown', function ( e ) { if ( e.key === 'Enter' ) { e.preventDefault(); doLookup(); } } ); renderForm(); /* ქვედა ღილაკები */ var $foot = $( '<div class="rtka-foot">' ).appendTo( $dlg ); $( '<button type="button" class="rtka-btn">' ).text( 'გაუქმება' ).on( 'click', close ).appendTo( $foot ); $( '<button type="button" class="rtka-btn primary">' ).text( 'ჩასმა' ).on( 'click', function () { var missing = false; allFields( TYPES[ state.type ] ).forEach( function ( fd ) { if ( fd.req && !trim( state.vals[ fd.p ] || '' ) ) { missing = true; if ( fieldEls[ fd.p ] ) { fieldEls[ fd.p ].addClass( 'err' ); } } } ); if ( missing ) { mw.notify( 'შეავსე სავალდებულო ველები (*)', { type: 'warn' } ); return; } insert( buildRef() ); close(); } ).appendTo( $foot ); $overlay.on( 'mousedown', function ( e ) { if ( e.target === $overlay[ 0 ] ) { close(); } } ); $overlay.on( 'keydown', function ( e ) { if ( e.key === 'Escape' ) { close(); } } ); $( document.body ).append( $overlay ); $q.trigger( 'focus' ); } /* ================= პანელში ჩამატება ================= */ var toolbarAdded = false; function toolInDom() { return $( '.tool[rel="refToolbarKa"]' ).length > 0; } function tryWikiEditor() { if ( toolbarAdded || !$.fn.wikiEditor ) { return; } try { $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', { section: 'main', group: 'insert', tools: { refToolbarKa: { label: 'ციტირება', type: 'button', icon: ICON, action: { type: 'callback', execute: openDialog } } } } ); toolbarAdded = true; } catch ( e ) { console.error( '[refToolbar-ka] WikiEditor-ში დამატება ვერ მოხერხდა:', e ); } } // სარეზერვო ღილაკი, მხოლოდ თუ პანელში ვერ ჩაჯდა function addBar() { if ( $( '#rtka-bar' ).length ) { return; } var $bar = $( '<div id="rtka-bar">' ).css( { margin: '4px 0' } ); $( '<button type="button" class="rtka-btn">' ).text( 'ციტირება' ).on( 'click', openDialog ).appendTo( $bar ); $( '#wpTextbox1' ).before( $bar ); console.log( '[refToolbar-ka] ჩაირთო სარეზერვო ღილაკი' ); } function init() { if ( !$( '#wpTextbox1' ).length ) { return; } mw.util.addCSS( CSS ); mw.hook( 'wikiEditor.toolbarReady' ).add( tryWikiEditor ); setTimeout( tryWikiEditor, 1500 ); setTimeout( function () { if ( !toolInDom() ) { addBar(); } }, 3000 ); } mw.loader.using( [ 'mediawiki.util', 'jquery.textSelection' ] ).then( function () { $( init ); } ); }() ); 8hi4egrkpprj5f5l6788in3yn01xftd Category:Pop Train Lady of Pop Awards 14 179282 768633 2026-10-16T20:08:23Z Island Hines 76160 Created page with " [[Category:Pop Train Music Awards]]" 768633 wikitext text/x-wiki [[Category:Pop Train Music Awards]] g0c3wogqfoqvnheuyb3msm9dy2qiu2p Pop Train Lady of Pop Awards 0 179283 768634 2026-10-16T20:16:26Z Island Hines 76160 Created page with "{{short description|American award show}} {{Infobox award | name = Pop Train Lady of Pop Awards | current_awards = 2005 Pop Train Lady of Pop Awards | image = | imagesize = | caption = | network = [[WGN America]] (1995–2005)<br />[[Broadcast syndication|First Run Syndication]] (1995–2005) | awarded_for = Outstanding achievements of female artists in the music entertainment industry | presenter = [[Pop Train Music Awards]] | country = [[United States]] | year = {{s..." 768634 wikitext text/x-wiki {{short description|American award show}} {{Infobox award | name = Pop Train Lady of Pop Awards | current_awards = 2005 Pop Train Lady of Pop Awards | image = | imagesize = | caption = | network = [[WGN America]] (1995–2005)<br />[[Broadcast syndication|First Run Syndication]] (1995–2005) | awarded_for = Outstanding achievements of female artists in the music entertainment industry | presenter = [[Pop Train Music Awards]] | country = [[United States]] | year = {{start date and age|1995|08|06}} | lastawarded = {{start date and age|2005|08|06}} }} The '''Pop Train Lady of Pop Awards''' were an American award show that was established in 1995 by the [[Pop Train Music Awards]] to honor the achievements of female recording artists. ==Ceremonies== ==See also== *[[Pop Train Music Awards]] ==References== {{Reflist|40em}} {{Pop Train (TV show)}} {{Musicawards}} [[Category:American music awards]] [[Category:American television awards]] [[Category:Awards established in 1995]] [[Category:Lifetime achievement awards]] [[Category:White-American events]] [[Category:Awards honoring African Americans]] [[Category:1995 establishments in the United States]] [[Category:Pop Train Music Awards]] ci8dr8bctjibco0hswahcmub0b355yz 1996 Pop Train Lady of Pop Awards 0 179284 768636 2026-10-16T20:40:49Z Island Hines 76160 Created page with "{{Short description|American awards show}} {{Infobox award | name = Pop Train Lady of Pop Awards | host = [[Reba McEntire]], [[Mick Hucknall]], [[Pamela Anderson]] | most_awards = [[Mariah Carey]] (2) | date = {{start date|1996|09|9}} | location = [[Santa Monica Civic Auditorium]], [[Santa Monica, California]] | country = [[United States]] | year = [[1995 Pop Train Lady of Pop Awards|1995]] | website = {{URL|..." 768636 wikitext text/x-wiki {{Short description|American awards show}} {{Infobox award | name = Pop Train Lady of Pop Awards | host = [[Reba McEntire]], [[Mick Hucknall]], [[Pamela Anderson]] | most_awards = [[Mariah Carey]] (2) | date = {{start date|1996|09|9}} | location = [[Santa Monica Civic Auditorium]], [[Santa Monica, California]] | country = [[United States]] | year = [[1995 Pop Train Lady of Pop Awards|1995]] | website = {{URL|http://poptrain.com}} | network = [[WGN America]] | previous = [[1995 Pop Train Lady of Pop Awards|1995]] | main = 1996 | next = [[1997 Pop Train Lady of Pop Awards|1997]] }} The '''1996 [[Pop Train Lady of Pop Awards]]''' were held on September 9, 1996 at the [[Santa Monica Civic Auditorium]] in [[Santa Monica, California]]. Produced by Dick Clark Productions, the program was hosted by [[Reba McEntire]], [[Mick Hucknall]], and [[Pamela Anderson]]. ==Special awards== ==Winners and nominees== ==Performances== ==Presenters== ==References== {{Reflist}} [[Category:Pop Train Lady of Pop Awards]] [[Category:1996 in American music|Pop]] [[Category:1996 awards in the United States|Pop]] bi4xlpijgivinc2ziwj76dicmfohuo0 Be a Man (Randy Savage album) 0 179285 768661 2026-10-17T00:52:21Z Ember Hines 76216 Created page with "{{use mdy dates|date=February 2023}} {{use American English|date=February 2023}} {{Infobox album | name = Be a Man | type = album | artist = [[Randy Savage]] | cover = File:RSavage_BeAMan.jpg | border = yes | alt = | released = October 7, 2003 | recorded = 2003 | venue = | studio = | genre = [[Hip hop music|Hip hop]] | length = 45:53 | label = Big3 Records | producer = Da Raskulls | prev_title = | prev_year =..." 768661 wikitext text/x-wiki {{use mdy dates|date=February 2023}} {{use American English|date=February 2023}} {{Infobox album | name = Be a Man | type = album | artist = [[Randy Savage]] | cover = File:RSavage_BeAMan.jpg | border = yes | alt = | released = October 7, 2003 | recorded = 2003 | venue = | studio = | genre = [[Hip hop music|Hip hop]] | length = 45:53 | label = Big3 Records | producer = Da Raskulls | prev_title = | prev_year = | next_title = | next_year = }} '''''Be a Man''''' is the only studio album by American professional wrestler [[Randy Savage|"Macho Man" Randy Savage]]. It was released on October 7, 2003 by Big3 Records. The song "Perfect Friend" was written as a tribute to [[Curt Hennig|"Mr. Perfect" Curt Hennig]], while the title track is a [[diss song]] aimed at [[Hulk Hogan]]. ==Recording and release== Savage was offered the opportunity to record ''Be a Man'' after meeting Bill Edwards, the chairman of [[St. Petersburg, Florida]]-based Big3 Records. The label's in-house production team, Da Raskulls, wrote and produced the album; Savage is credited as co-composer of "Be a Man" and his brother, [[Lanny Poffo]], wrote the lyrics of "Perfect Friend." ==Track listing== All tracks are produced by Big K, Brian O, Ted Howard, and Jerome Jefferson, with co-production by Guy Walker on "Feel the Madness" and Osinachi Nwaneri on "Gonna Be Trouble". ==References== {{Reflist}} {{Authority control}} [[Category:2003 debut albums]] [[Category:Randy Savage albums]] h1wznxw9wazc5tl28obzbnljhd4be54 Template:Infobox television/styles.css 10 179286 768663 2026-10-17T00:55:07Z Ember Hines 76216 Created page with "/* {{pp-template}} */ .ib-tv { border-collapse: separate; border-spacing: 0 3px; padding: 3px 5px; } .ib-tv .infobox-above { background-color: #CCCCFF; color: inherit; font-size: 125%; padding: 0.25em 1em; } .ib-tv .infobox-header { background-color: #CCCCFF; color: inherit; padding: 0.25em 1em; } /* always light mode for images because of transparency */ .ib-tv img { background-color: var(--background-color-interactive-subtle,#f8f9fa); } .ib-tv .logo-nob..." 768663 sanitized-css text/css /* {{pp-template}} */ .ib-tv { border-collapse: separate; border-spacing: 0 3px; padding: 3px 5px; } .ib-tv .infobox-above { background-color: #CCCCFF; color: inherit; font-size: 125%; padding: 0.25em 1em; } .ib-tv .infobox-header { background-color: #CCCCFF; color: inherit; padding: 0.25em 1em; } /* always light mode for images because of transparency */ .ib-tv img { background-color: var(--background-color-interactive-subtle,#f8f9fa); } .ib-tv .logo-nobg img { background-color: inherit; } .ib-tv-aka { font-style: italic; } .ib-tv-network-release td, .ib-tv-network-release th { border-top: 1px solid #a2a9b1; } 3pw4pdic5ia8kv2766kjxes464jl3bh Template:If preview 10 179287 768664 2026-10-17T00:55:40Z Ember Hines 76216 Created page with "<onlyinclude>{{safesubst:<noinclude/>#invoke:If preview|pmain}}</onlyinclude><!-- -->{{documentation}}" 768664 wikitext text/x-wiki <onlyinclude>{{safesubst:<noinclude/>#invoke:If preview|pmain}}</onlyinclude><!-- -->{{documentation}} opaiwzyia6qakzm3qgsorsehmbeeac0 Template:If preview/doc 10 179288 768665 2026-10-17T00:56:08Z Ember Hines 76216 Created page with "{{Documentation subpage}} {{High-use}} {{Lua|Module:If preview}} This is a template that helps other templates determine if they are being previewed or not, and do or display different things accordingly. == Usage == <code><nowiki>{{If preview|value if being previewed|value if not being previewed}}</nowiki></code> <code><nowiki>{{If preview|1=value if being previewed|2=value if not being previewed}}</nowiki></code> The first parameter is returned if the page is being..." 768665 wikitext text/x-wiki {{Documentation subpage}} {{High-use}} {{Lua|Module:If preview}} This is a template that helps other templates determine if they are being previewed or not, and do or display different things accordingly. == Usage == <code><nowiki>{{If preview|value if being previewed|value if not being previewed}}</nowiki></code> <code><nowiki>{{If preview|1=value if being previewed|2=value if not being previewed}}</nowiki></code> The first parameter is returned if the page is being previewed, otherwise the second parameter will be returned. Either parameter may be empty. ==Examples== Preview this page to see the effect of previewing on the 'Example' column. {|class=wikitable !Code !Example !Value when previewed !Value when saved |- |<code><nowiki>{{If preview|Yes|No}}</nowiki></code><br/><code><nowiki>{{If preview|1=Yes|2=No}}</nowiki></code> |{{If preview|Yes|No}}<br/>{{If preview|1=Yes|2=No}} |Yes |No |- |<code><nowiki>{{If preview|Red}}</nowiki></code><br/><code><nowiki>{{If preview|1=Red}}</nowiki></code> |{{If preview|Red}}<br/>{{If preview|1=Red}} |Red | |- |<code><nowiki>{{If preview||Blue}}</nowiki></code><br/><code><nowiki>{{If preview|2=Blue}}</nowiki></code> |{{If preview||Blue}}<br/>{{If preview|2=Blue}} | |Blue |} == TemplateData == {{TemplateData header}} <templatedata> { "params": { "1": { "label": "1", "description": "value if being previewed", "type": "content" }, "2": { "label": "2", "description": "value if not being previewed", "type": "content" } }, "description": "This is a template that helps other templates determine if they are being previewed or not, and do or display different things accordingly.\n\nThe first parameter is returned if the page is being previewed, otherwise the second parameter will be returned. Either parameter may be empty.", "format": "inline" } </templatedata> ==See also== * {{Tl|Preview warning}} <includeonly>{{Sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:If-then-else templates]] }}</includeonly><noinclude> </noinclude> as30me2fhmqoky5pod2g3tx0aff9qdy Module:Infobox television 828 179289 768667 2026-10-17T00:59:42Z Ember Hines 76216 Created page with "require("strict") --- @module local p = {} local maintenance_categories = { alt_name = "[[Category:Pages using infobox television with incorrectly formatted values|%s]]", dates_incorrectly_formatted = "[[Category:Pages using infobox television with nonstandard dates]]", dates_missing = "[[Category:Pages using infobox television with missing dates]]", flag_icon = "[[Category:Pages using infobox television with flag icon]]", image_values_without_an_image = "[[Catego..." 768667 Scribunto text/plain require("strict") --- @module local p = {} local maintenance_categories = { alt_name = "[[Category:Pages using infobox television with incorrectly formatted values|%s]]", dates_incorrectly_formatted = "[[Category:Pages using infobox television with nonstandard dates]]", dates_missing = "[[Category:Pages using infobox television with missing dates]]", flag_icon = "[[Category:Pages using infobox television with flag icon]]", image_values_without_an_image = "[[Category:Pages using infobox television with image-related values without an image]]", incorrectly_formatted = "[[Category:Pages using infobox television with incorrectly formatted values|%s]]", manual_display_title = "[[Category:Pages using infobox television with unnecessary manual displaytitle]]", manual_display_title_temp_tracking = "[[Category:Pages using infobox television with manual displaytitle]]", non_matching_title = "[[Category:Pages using infobox television with non-matching title]]", unnecessary_title_parameter = "[[Category:Pages using infobox television with unnecessary name parameter]]", unlinked_values = "[[Category:Pages using infobox television with unlinked values|%s]]", temp = "[[Category:Temp infobox television tracking category|%s]]", } local number_of_network_sets = 7 --- Returns a table consisting of the title's title parts. --- --- The return table's properties: --- - title - The title. --- - disambiguation - the disambiguation text without parentheses. --- --- Note: could potentially be moved to an outside module for other template and module uses. --- --- @param text string --- @return table<string, string | nil> local function get_title_parts(text) local title, disambiguation = string.match(text, "^(.+) (%b())$") if not title or type(title) ~= "string" then title = text end ---@type table<string, string | nil> local title_parts = {title = --[[---@not number | nil]] title, disambiguation = nil} if not disambiguation or type(disambiguation) ~= "string" then return title_parts end -- Remove outside parentheses from names which use parentheses as part of the name such as "episode (Randall and Hopkirk (Deceased))". disambiguation = string.sub(--[[---@not number | nil]] disambiguation, 2, -2) title_parts.disambiguation = --[[---@not number]] disambiguation return title_parts end --- Returns a maintenance category if the italic_title value is not "no". --- --- Infobox parameters checked: --- - |italic_title= --- --- @param args table --- @return string local function is_italic_title_valid_value(args) if args.italic_title and args.italic_title ~= "no" then return string.format(maintenance_categories.incorrectly_formatted, "italic_title") end return "" end --- Returns a maintenance category if external links are found. --- External links in <ref> tags or {{efn}} templates are ignored. --- --- All infobox parameters checked. --- --- @param args table --- @return string local function has_external_links(args) for key, value in pairs(args) do if type(value) == "string" then -- Ensure it's a string before searching -- Match both [URL Label] and [URL] (without label) for link in value:gmatch("%[https?://[%w%p]-/?%s-[^%]]-%]") do -- Escape special characters in the link for pattern matching local escaped_link = link:gsub("([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") -- Check if the link is inside a valid <ref> or {{efn|...}} block local inside_ref = value:match("<ref>.-" .. escaped_link .. ".*</ref>") local inside_efn = value:match("{{efn|.-" .. escaped_link .. ".*}}") if not (inside_ref or inside_efn) then return string.format(maintenance_categories.incorrectly_formatted, key) end end end end return "" end --- Returns a maintenance category if the start_date value is set to a future date. --- --- Infobox parameters checked: --- - |first_aired[1-number_of_network_sets]= --- - |released[1-number_of_network_sets]= --- --- @param args table --- @return string local function is_start_date_in_the_future(start_date) -- Extract the date from the start_date. local date_pattern = ".*<span[^>]*>(.-)</span>" local extracted_date = start_date:match(date_pattern) -- Parse the date components local year, month, day = extracted_date:match("(%d+)-(%d+)-(%d+)") -- Create a table with the parsed date components local date_table = { year = tonumber(year) or 0, month = tonumber(month) or 0, day = tonumber(day) or 0, hour = 0, -- Assuming 00:00:00 for simplicity min = 0, sec = 0 } -- Convert the date table to a Unix timestamp local start_date_timestamp = os.time(date_table) -- Get the current date components. local current_date = os.date("*t") -- Set the time components to zero. current_date.hour = 0 current_date.min = 0 current_date.sec = 0 -- Convert the date components into a timestamp. local current_timestamp = os.time(current_date) --local extracted_date_timestamp = os.time(extracted_date) -- The infobox does not allow for future dates. if current_timestamp < start_date_timestamp then return maintenance_categories.dates_incorrectly_formatted end return "" end --TODO doc local function does_date_have_extraneous_text(text) if not text or text == "" then return "" end -- Pattern to match the complete valid date format local full_pattern = "([^%s<]+)%s*[%d,]+%s*<span style=\"display:none\">&#160;%(<span class=\"([^\"]+)\">(%d%d%d%d%-%d%d%-%d%d)</span>%)</span>" -- First check if the entire text is a valid date format local before_date, date_class, date = text:match("^" .. full_pattern .. "$") -- If the entire text matches the pattern, it's valid if before_date then return "" end -- If not, check if there's a valid date format embedded within larger text before_date, date_class, date = text:match(full_pattern) -- If we found a valid date format within the text, but it's not the entire text, -- then there's extraneous text before or after if before_date then return maintenance_categories.dates_incorrectly_formatted end -- If no valid date format was found at all return "" end --- Returns a maintenance category if the dates are not formatted correctly with --- {{Start date}} and {{End date}} templates. --- --- Infobox parameters checked: --- - |first_aired[1-number_of_network_sets]= --- - |released[1-number_of_network_sets]= --- - |last_aired[1-number_of_network_sets]= --- --- Note: all_tests is meant only for /testcases testing. --- --- @param all_tests string Testing conditional value. --- @param released string The start date value. --- @param first_aired string The start date value. --- @param last_aired string The end date value. --- @return string local function are_dates_formatted_correctly(all_tests, released, first_aired, last_aired) -- To keep /testcases clean, this is set so only what is test is shown. if all_tests == "no" then return "" end -- Config parameters local first_aired_future = "Upcoming" local last_aired_current = "present" local start_date_class = "itvstart" local end_date_class = "itvend" local film_date_class = "film%-date" local start_date = released or first_aired -- A start date should always be set. if not start_date then return maintenance_categories.dates_missing end -- Validate the start date is formmated using {{Start date}} and not any other template, including {{Film date}}, or uses the word "Upcoming". if start_date and (string.find(start_date, film_date_class) or not string.find(start_date, start_date_class) and start_date ~= first_aired_future) then return maintenance_categories.dates_incorrectly_formatted end -- An end date should always be set if the show or film wasn't released all at once. if first_aired and first_aired ~= first_aired_future and not last_aired then return maintenance_categories.dates_missing end -- Validate the end date is formmated using {{End date}} and not any other template, or uses the word "present". if last_aired and (not string.find(last_aired, end_date_class) and last_aired ~= last_aired_current) then return maintenance_categories.dates_incorrectly_formatted end -- Only one date should be used per field. if (start_date and select(2, string.gsub(start_date, start_date_class, "")) > 1) or (last_aired and select(2, string.gsub(last_aired, end_date_class, "")) > 1) then return maintenance_categories.dates_incorrectly_formatted end -- Check if start date is set to a future date. if start_date ~= first_aired_future then local category = is_start_date_in_the_future(start_date) if category ~= "" then return category end end -- Validate if start_date has extraneous text. if start_date ~= first_aired_future then local category = does_date_have_extraneous_text(start_date) if category ~= "" then return category end end -- Validate if last_aired has extraneous text. if last_aired ~= last_aired_current then local category = does_date_have_extraneous_text(last_aired) if category ~= "" then return category end end return "" end --- Returns a maintenance category if exclusive parameter sets are used. --- --- Infobox parameters checked: --- - |image_alt= and |alt= --- - |image_size= and |image_upright= --- - |based_on= and |inspired_by= --- - |screenplay= and |teleplay= --- - |presenter= and |host= --- - |narrator=, |narrated= and |announcer= --- - |theme_music_composer= and |music= --- - |open_theme= and |opentheme= --- - |end_theme= and |endtheme= --- - |released[1-number_of_network_sets]= and |first_aired[1-number_of_network_sets]= --- - |released[1-number_of_network_sets]= and |last_aired[1-number_of_network_sets]= --- - |network[1-number_of_network_sets]= and |channel[1-number_of_network_sets]= --- --- The function currently checks if the network and channel parameters both have values. --- --- @param args table --- @param args table --- @return string local function _are_exclusive_parameter_sets_used(args, parameters) for _, set in ipairs(parameters) do if (args[set[1]] and args[set[2]]) or (args[set[1]] and args[set[3]]) or (args[set[2]] and args[set[3]]) then return string.format(maintenance_categories.incorrectly_formatted, "-duplicate") end end return "" end --- Returns a maintenance category if exclusive parameter sets are used. --- Create a set parameters to check. --- Does not include release information related parameters which are sent from --- a different function due to their numbered variations. --- See _are_exclusive_parameter_sets_used() for more details. --- --- @param args table --- @return string local function are_exclusive_parameter_sets_used(args) local parameters = { {"image_alt", "alt"}, {"image_size", "image_upright"}, {"based_on", "inspired_by"}, {"screenplay", "teleplay"}, {"presenter", "host"}, {"narrator", "narrated", "announcer"}, {"theme_music_composer", "music"}, {"open_theme", "opentheme"}, {"end_theme", "endtheme"}, } return _are_exclusive_parameter_sets_used(args, parameters) end --- Returns a maintenance category if the values are unlinked. --- --- Infobox parameters checked: --- - |network[1-number_of_network_sets]= --- - |channel[1-number_of_network_sets]= --- --- The function currently checks if a value is unlinked. --- --- @param args table --- @return string local function are_values_unlinked(args) for key, value in pairs(args) do -- Check whether the values are linked. if value and not string.find(value, "%[%[.*%]%]") then return string.format(maintenance_categories.unlinked_values, key) end end return "" end --- Returns a maintenance category if the dates are not formatted correctly --- and using "Original", "Revival" or italics to denote a split in the date range. --- --- Infobox parameters checked: --- - |first_aired[1-number_of_network_sets]= --- - |released[1-number_of_network_sets]= --- - |last_aired[1-number_of_network_sets]= --- - |network[1-number_of_network_sets]= --- - |channel[1-number_of_network_sets]= --- --- @param args table --- @return string local function does_release_information_have_extraneous_text(args) for k, v in pairs(args) do if string.find(string.lower(v), "original") and not string.find(string.lower(v), "aboriginal") or string.find(string.lower(v), "revival") or string.find(v, "''") then return string.format(maintenance_categories.incorrectly_formatted, k) end end return "" end --- Returns a maintenance category if the release information: ---- Is not formatted correctly ---- Has extraneous text ---- Dates don't use correct mark up --- --- Infobox parameters checked: --- - |first_aired[1-number_of_network_sets]= --- - |released[1-number_of_network_sets]= --- - |last_aired[1-number_of_network_sets]= --- - |network[1-number_of_network_sets]= --- - |channel[1-number_of_network_sets]= --- --- @param args table --- @return string local function is_release_information_formatted_correctly(args) local release_information = {"first_aired", "released", "last_aired", "network", "channel"} local categories = {} for i = 1, number_of_network_sets do local num = "" if i > 1 then num = i end local numbered_args = {} for _, v in pairs(release_information) do numbered_args[v .. num] = args[v .. num] end -- If current table is empty, break current cycle, but continue checking next tables instead of exiting completely. -- This is incorrect user usage, but we want to make sure that the data still passes validation, as it may be visible to readers. if i == 1 or next(numbered_args) then table.insert(categories, does_release_information_have_extraneous_text(numbered_args)) table.insert(categories, are_values_unlinked({network = args["network" .. num], channel = args["channel" .. num]})) table.insert(categories, _are_exclusive_parameter_sets_used(args, {{"network" .. num, "channel" .. num}, {"released" .. num, "first_aired" .. num}, {"released" .. num, "last_aired" .. num}})) table.insert(categories, are_dates_formatted_correctly(args.all_tests, args["released" .. num], args["first_aired" .. num], args["last_aired" .. num])) end end return categories end --- Returns a maintenance category if a {{Italic title}} or {{DISPLAYTITLE}} template is used. --- Checks also for the following {{Italic title}} redirects: ---- Italic ---- Italics ---- Italictitle ---- Italics title --- --- Testing parameters: --- - |page_test= - a real Wikipedia page to read the content of the page. --- --- Infobox parameters checked: --- - |italic_title= --- --- @param args table --- @return string local function has_display_title(args) --TODO: when testing below is done uncomment code --if args.italic_title then -- return "" --end local article if args.page_test then article = mw.title.new(args.page_test) else article = mw.title.getCurrentTitle() end local page_text = article:getContent() if not page_text then return "" end if (string.find(page_text, "{{[Ii]talics?%s?title}}") or string.find(page_text, "{{[Ii]talics?}}")) and not string.match(page_text, "{{[Ii]talic title|all=yes}}")then return maintenance_categories.manual_display_title end local display_title = string.match(page_text, "{{DISPLAYTITLE:(.*)}}") local article_title = article.text --TODO: currently does not work --local display_title_no_namespace = string.gsub(display_title, article.nsText .. ":", "") --local display_title_no_italics = string.sub(display_title_no_namespace, 3, string.len(display_title_no_namespace) - 2) if display_title then -- if article_title == display_title or article_title == display_title_no_italics then if article_title == display_title or article_title == string.sub(display_title, 3, string.len(display_title) - 2) then return maintenance_categories.manual_display_title elseif string.find(display_title, "<sub>") or string.find(display_title, "<sup>") then -- TODO: This is valid. Will remove when done with cleanup. return "" else -- TODO: remove when done checking results. return maintenance_categories.manual_display_title_temp_tracking end end return "" end --- Returns a maintenance category if a flag icon is used. --- --- All the infobox values are checked. --- --- @param args table --- @return string local function has_flag_icon(args) for _, v in pairs(args) do if string.find(v, "flagicon") then return maintenance_categories.flag_icon end end return "" end --- Returns a maintenance category if num_episodes uses: --- - "as of" as text --- - A date template --- --- Infobox parameters checked: --- - |num_episodes= --- --- @param num_episodes string --- @return string local function does_num_episodes_have_extraneous_text(num_episodes) if not num_episodes then return "" end if string.find(string.lower(num_episodes), "as of") or string.find(num_episodes, "dtstart") or string.find(num_episodes, "episode%-counter") then return string.format(maintenance_categories.incorrectly_formatted, "num_episodes") end return "" end --- Returns a maintenance category if |based_on uses a generic word instead --- of the title of the original work: --- "book" --- "novel" --- --- Infobox parameters checked: --- - |based_on= --- --- @param num_episodes string --- @return string local function is_based_on_used_correctly(based_on) if not based_on then return "" end local generic_titles = { "book", "novel", } -- Remove content enclosed by double single quotes (''text'') local stripped_text = based_on:gsub("''[^']*''", "") -- Remove content enclosed by double quotes ("text") stripped_text = stripped_text:gsub('"[^"]*"', "") -- Remove content enclosed by double square brackets ([[text]]) stripped_text = stripped_text:gsub("%[%[.-%]%]", "") -- Convert to lowercase to ensure case-insensitive matching stripped_text = stripped_text:lower() for _, word in pairs(generic_titles) do if string.find(stripped_text, word) then return string.format(maintenance_categories.incorrectly_formatted, "based_on") end end return "" end --- Checks if a string is in the exceptions list. --- --- @param str string --- @return boolean local function is_in_credit_exceptions(str) local exceptions = { "Aulsondro \"Novelist\" Hamilton", -- Booker can be a last name. "Booker", "Jack Trevor Story", "Tanveer Bookwala", "Sanford Bookstaver", } for _, exception in ipairs(exceptions) do if string.find(str, exception) then return true end end return false end --- Returns a maintenance category if a credit information entered is from the following list: --- "assistant", associate", "co-", "executive", "line producer", "on-line", "prod%.", "supervising" --- "book", "manuscript", "novel", "script", "screenplay", "story", "teleplay" --- TODO: "lyric" and "dialogue" should be either supported or removed. --- These credits have their own unique parameters that should be used instead. --- --- Infobox parameters checked: --- - |director= --- - |editor= --- - |executive_producer= --- - |producer= --- - |screenplay= --- - |story= --- - |teleplay= --- - |writer= --- --- @param args table --- @return string local function is_credit_used_correctly(args) local credits_list = { "director", "editor", "executive_producer", "producer", "screenplay", "story", "teleplay", "writer", } local credits = {} for _, value in pairs(credits_list) do credits[value] = args[value] end local invalid_credits = { "assistant", "associate", "book", "co%-", "executive", "line producer", "manuscript", "novel", "on%-line", "prod%.", "supervising", "script", "screenplay", "story", "teleplay", "lyric", -- temp "dialogue", -- temp } local delink = require("Module:Delink")._delink for key, credit in pairs(credits) do for _, invalid_credit in pairs(invalid_credits) do local pattern = "%f[%a]" .. invalid_credit credit = delink{credit} if string.find(string.lower(credit), pattern) and not is_in_credit_exceptions(credit) then if invalid_credit == "lyric" or invalid_credit == "dialogue" then return string.format(maintenance_categories.temp, invalid_credit) else return string.format(maintenance_categories.incorrectly_formatted, key) end end end end return "" end --- Returns a maintenance category if the country information entered is from the following list: --- U.S.A, USA, U.S., US, UK, U.K. --- --- Infobox parameters checked: --- - |country= --- --- @param country string --- @return string local function is_country_name_valid(country) if not country then return "" end local args = {"U.S", "US", "UK", "U.K."} for _, v in pairs(args) do if string.find(country, v) then return string.format(maintenance_categories.incorrectly_formatted, "country") end end return "" end --- Returns a maintenance category if the values are linked or formatted. --- --- Infobox parameters checked: --- - |language= --- --- The function currently checks if the following values are present: --- - ] - links. --- --- @param args table --- @return string local function are_values_linked_or_formatted(args) local parameters = {language = args.language} for key, value in pairs(parameters) do for _, bad_value in pairs({"]"}) do if string.find(value, bad_value, 1, true) then return string.format(maintenance_categories.incorrectly_formatted, key) end end end return "" end -- Splits a string and returns a table. -- -- @param str string -- @return table local function split(str) local sep = "\n" local result = {} local regex = ("([^%s]+)"):format(sep) for each in str:gmatch(regex) do table.insert(result, each) end return result end -- Returns a string value clean from various list syntax. -- -- @param str string -- @return string local function clean_list_syntax(str) str = string.gsub(str, "\127[^\127]*UNIQ%-%-(%a+)%-%x+%-QINU[^\127]*\127", "") -- Remove all strip-markers. str = string.gsub(string.gsub(str, "%<%/? *div[^%>]*%>", ""), "%<%/? *span[^%>]*%>", "") -- Removes div and span tags. str = string.gsub(str, "%<%/? *ul[^%>]*%>", "") -- Remove list tags. str = string.gsub(str, "%<%/? *li[^%>]*%>", "\n") -- Remove list tags. Replace with new line. str = string.gsub(str, "</? *br */?>", "\n") -- Replace <br /> (and variants) with new line. str = string.gsub(str, "\n\n", "\n") -- Replace double new line with a single new line. str = string.gsub(str, "*", "") -- Remove asterisks. return str end --- Returns a maintenance category if: ---- When alt_name= is a list of values, and not all entries are in italics. ---- When alt_name= is a single value and is in italics. ----- This is because the template automatically handles the italics and when also manually added, ----- results in 4 apostrophes which produce a bold title instead. --- --- Infobox parameters checked: --- - |alt_name= --- --- @param alt_name string --- @return string local function is_alt_name_in_italics(alt_name) if not alt_name then return "" end local detect_singular = require("Module:Detect singular")._main local args = {alt_name, ["no_and"] = "1", ["no_comma"] = "1"} local is_singular = detect_singular(args) if is_singular > 1 then local alt_names = clean_list_syntax(alt_name) alt_names = split(alt_names) for _, name in ipairs(alt_names) do if not string.find(name, "''") then return string.format(maintenance_categories.alt_name, "alt_name") end end else if string.find(alt_name, "''") then return string.format(maintenance_categories.alt_name, "alt_name") end end return "" end --- Returns a maintenance category if the |image= value includes the "File:" --- or "Image:" prefix, or if it is a URL. --- --- Infobox parameters checked: --- - |image= --- --- @param image string --- @return string local function is_image_using_incorrect_syntax(image) if not image then return "" end local invalid_strings = { "file:", "image:", "http:", "https:", } image = string.lower(image) for _, invalid in ipairs(invalid_strings) do if string.find(image, invalid) then return string.format(maintenance_categories.incorrectly_formatted, "image") end end return "" end --- Returns a maintenance category if the |image_size= value includes "px". --- --- Infobox parameters checked: --- - |image_size= --- --- @param image_size string --- @return string local function is_image_size_using_px(image_size) if image_size and string.find(image_size, "px") then return string.format(maintenance_categories.incorrectly_formatted, "image_size") end return "" end --- Returns a maintenance category if there is no image file while image auxiliary values are present. --- --- Infobox parameters checked: --- - |image= --- - |image_size= --- - |image_upright= --- - |image_alt= --- - |alt= --- - |caption= --- --- @param args table --- @return string local function are_image_auxiliary_values_used_for_no_image(args) if args.image then return "" end if args.image_size or args.image_upright or args.image_alt or args.alt or args.caption then return maintenance_categories.image_values_without_an_image end return "" end --- Returns the display title text used in either the {{DISPLAYTITLE}} or {{Italic title}} templates. --- --- @param page_text string --- @param article_title string --- @return string | nil local function get_display_title_text(page_text, article_title) if not page_text then return nil end local title_modification = string.match(page_text, "{{DISPLAYTITLE:(.-)}}") if title_modification and type(title_modification) == "string" then local title_parts = get_title_parts(title_modification) return string.gsub(title_parts.title, "'", "") end title_modification = string.match(page_text, "{{[Ii]talic title|all=yes}}") if title_modification and type(title_modification) == "string" then return article_title end return nil end --- Returns the title used in the {{Lowercase title}} template and an optional maintenance category. --- --- @param page_text string --- @param args table --- @param article_title string --- @param title_parts table --- @param return_category boolean --- @return string | nil local function get_lowercase_template_status(page_text, args, article_title, title_parts, return_category) if not page_text then return nil end local lowercase_template = string.match(page_text, "{{[Ll]owercase title.-}}") if not lowercase_template then return nil end local lowercase_title if string.find(lowercase_template, "|force=") then lowercase_title = string.gsub(article_title,"^%u", string.lower) else lowercase_title = string.gsub(title_parts.title,"^%u", string.lower) end if return_category and args.name then if args.name == lowercase_title then return maintenance_categories.unnecessary_title_parameter else return maintenance_categories.non_matching_title end end return lowercase_title end --- Returns the title used in the {{Correct title}} template and an optional maintenance category. --- --- @param page_text string --- @param args table --- @param return_category boolean --- @return string | nil local function get_correct_title_value(page_text, args, return_category) if not page_text then return nil end local correct_title_template_pattern = "{{[Cc]orrect title|title=(.*)|reason=.-}}" local correct_title = string.match(page_text, correct_title_template_pattern) if not correct_title then correct_title_template_pattern = "{{[Cc]orrect title|(.*)|reason=.-}}" correct_title = string.match(page_text, correct_title_template_pattern) end if not correct_title and type(correct_title) ~= "string" then return nil end local correct_title_title_parts = get_title_parts(correct_title) if return_category and args.name then if args.name == correct_title or args.name == correct_title_title_parts.title then return maintenance_categories.unnecessary_title_parameter else return maintenance_categories.non_matching_title end end return correct_title end --- Returns a maintenance category if the infobox title is equal to the article title. --- --- Infobox parameters checked: --- - |name= --- --- The function currently checks if the infobox title is equal to the article title while ignoring styling such as: --- - Nowrap spans. --- - Line breaks. --- --- A return value can be one of three options: --- - The value of maintenance_categories.non_matching_title - when the args.title does not match the article title. --- - The value of maintenance_categories.unnecessary_title_parameter - when the args.title matches the article title. --- - An empty string - when args.name isn't used or the args.name uses an allowed modification --- (such as a nowrap template) while the rest of the args.name matches the article title. --- --- Testing parameters: --- - |page_test= - a real Wikipedia page to read the content of the page. --- - |page_title_test= - the title of the page being checked. --- --- @param frame table --- @param args table --- @return string local function is_infobox_title_equal_to_article_title(frame, args) if not args.name then return "" end local page_text if args.page_test then page_text = mw.title.new(args.page_test):getContent() else page_text = mw.title.getCurrentTitle():getContent() end -- Check if the article is using a {{Correct title}} template. local correct_title = get_correct_title_value(page_text, args, true) if correct_title then return correct_title end local article_title = args.page_title_test if not args.page_title_test then article_title = mw.title.getCurrentTitle().text end -- Remove disambiguation. local title_parts = get_title_parts(article_title) -- Check if the article is using a {{Lowercase title}} template. local lowercase_title = get_lowercase_template_status(page_text, args, article_title, title_parts, true) if lowercase_title then return lowercase_title end -- Remove nowrap span. if string.find(args.name, "nowrap") then local title = frame:expandTemplate{title = "Strip tags", args = {args.name}} if title == article_title or title == title_parts.title then return "" end return maintenance_categories.non_matching_title end -- Remove line breaks and additional spaces as a result. if string.find(args.name, "<br%s?/?>") then local title, _ = string.gsub(args.name, "<br%s?/?>", "") title, _ = string.gsub(title, " ", " ") if title == article_title or title == title_parts.title then return "" end return maintenance_categories.non_matching_title end if args.name == article_title or args.name == title_parts.title then return maintenance_categories.unnecessary_title_parameter end -- Article and infobox titles do not match. return maintenance_categories.non_matching_title end --- Returns the relevant maintenance categories based on the {{Infobox television}} values validated. --- --- @param frame table --- @return string function p.validate_values(frame) local getArgs = require("Module:Arguments").getArgs local args = getArgs(frame) local categories = {} table.insert(categories, is_infobox_title_equal_to_article_title(frame, args)) table.insert(categories, has_display_title(args)) table.insert(categories, are_image_auxiliary_values_used_for_no_image(args)) table.insert(categories, is_image_using_incorrect_syntax(args.image)) table.insert(categories, is_image_size_using_px(args.image_size)) --table.insert(categories, is_alt_name_in_italics(args.alt_name)) -- table.insert(categories, are_values_linked_or_formatted(args)) -- commenting out for now table.insert(categories, is_country_name_valid(args.country)) table.insert(categories, has_flag_icon(args)) table.insert(categories, is_credit_used_correctly(args)) table.insert(categories, is_based_on_used_correctly(args.based_on)) table.insert(categories, does_num_episodes_have_extraneous_text(args.num_episodes)) table.insert(categories, are_exclusive_parameter_sets_used(args)) local release_categories = is_release_information_formatted_correctly(args) for _, v in ipairs(release_categories) do table.insert(categories, v) end table.insert(categories, has_external_links(args)) table.insert(categories, is_italic_title_valid_value(args)) return table.concat(categories, "") end --- Returns the text used for the |above= field of the infobox. --- --- Infobox parameters checked: --- - |name= --- --- Testing parameters: --- - |page_test= - a real Wikipedia page to read the content of the page. --- - |page_title_test= - the title of the page being checked. --- --- @param frame table --- @return string function p.above_title(frame) local getArgs = require("Module:Arguments").getArgs local args = getArgs(frame) local page if args.page_test then page = mw.title.new(args.page_test) else page = mw.title.getCurrentTitle() end local page_text = page:getContent() local article_title = args.page_title_test if not args.page_title_test then article_title = page.text end local title_format = "''%s''" local correct_title = get_correct_title_value(page_text, args, false) if correct_title then return string.format(title_format, correct_title) end local title_parts = get_title_parts(article_title) local lowercase_title = get_lowercase_template_status(page_text, args, article_title, title_parts, false) if lowercase_title then return string.format(title_format, lowercase_title) end if args.italic_title then local title_modification = get_display_title_text(page_text, article_title) if title_modification then return string.format(title_format, title_modification) end end if args.name then return string.format(title_format, args.name) end return string.format(title_format, title_parts.title) end return p 8erq9qjdqeup5ft01gq3jjm0pogcj39 Template:Infobox television/Short description 10 179290 768668 2026-10-17T01:00:21Z Ember Hines 76216 Created page with "{{main other| {{#if:{{Has short description}} |<!--Do nothing--> |{{#if:{{#invoke:Is infobox in lead|main|[Ii]nfobox [Tt]e?l?e?[Vv]}} |{{trim|1={{short description|2=noreplace|{{if both|{{If empty|{{{released|}}}{{{first_aired|}}}}}|{{#invoke:String|match|{{If empty|{{{released|}}}{{{first_aired|}}}}}|[12]%d%d%d|match=1|nomatch=}}|{{#invoke:String|match|{{If empty|{{{released|}}}{{{first_aired|}}}}}|[12]%d%d%d|match=1|nomatch=}}}} {{#if:{{{country|}}}|{{Pluralize from te..." 768668 wikitext text/x-wiki {{main other| {{#if:{{Has short description}} |<!--Do nothing--> |{{#if:{{#invoke:Is infobox in lead|main|[Ii]nfobox [Tt]e?l?e?[Vv]}} |{{trim|1={{short description|2=noreplace|{{if both|{{If empty|{{{released|}}}{{{first_aired|}}}}}|{{#invoke:String|match|{{If empty|{{{released|}}}{{{first_aired|}}}}}|[12]%d%d%d|match=1|nomatch=}}|{{#invoke:String|match|{{If empty|{{{released|}}}{{{first_aired|}}}}}|[12]%d%d%d|match=1|nomatch=}}}} {{#if:{{{country|}}}|{{Pluralize from text|{{{country|}}}|singular={{Country2nationality|{{{country|}}}|nocat=true}}|plural={{if either|{{{released|}}}|{{{first_aired|}}}|m|M}}ulti-national}}}} TV series or program{{#switch: {{{country|}}} | UK | U.K. | United Kingdom | England | Scotland | Ireland | Northern Ireland | Wales | South Africa | New Zealand | India | Pakistan | Nigeria = me | }}<!-- close short description template-->}}<!--close trim template used to remove leading spaces-->}}<!-- close if (is infobox in lead) -->}}<!-- close if (has short description) -->}}<!-- close main other -->}}<noinclude><!-- Text above is essentially {{short description| <year> <country> TV series or program/me}} --> {{documentation}} </noinclude> obv1xc0rg2n36es8bkvupzhdcuisyzd Template:Infobox television/Short description/doc 10 179291 768669 2026-10-17T01:00:38Z Ember Hines 76216 Created page with "{{Documentation subpage}} This template is used for generating a short description for {{t|Infobox television}}. It uses that template's {{para|released}} or {{para|first_aired}}, and {{para|country}} parameters to generate the short description. The short description will generate as: <code><{{var|year}}> <{{var|country}}> TV series or program/me</code>. If a project has multiple entries for {{para|country}}, the short description will generate as: <code><{{var|year}}..." 768669 wikitext text/x-wiki {{Documentation subpage}} This template is used for generating a short description for {{t|Infobox television}}. It uses that template's {{para|released}} or {{para|first_aired}}, and {{para|country}} parameters to generate the short description. The short description will generate as: <code><{{var|year}}> <{{var|country}}> TV series or program/me</code>. If a project has multiple entries for {{para|country}}, the short description will generate as: <code><{{var|year}}> multi-national TV series or program/me</code>. {{Film- and television-related infobox templates}} <includeonly>{{Sandbox other|| <!-- Categories below this line --> [[Category:Templates that generate short descriptions]] }}</includeonly> bqcltnjb9mb3gnu8dnp6dcb3mnwvnf1 Template:Film- and television-related infobox templates 10 179292 768670 2026-10-17T01:01:07Z Ember Hines 76216 Created page with "{{Navbox | name = Film- and television-related infobox templates | title = Film- and television-related infobox templates | listclass = hlist | state = {{{state|autocollapse}}} | group1 = [[Wikipedia:List of infoboxes#Film|Film]] | list1 = * [[Template:Infobox film|Film]] ** [[Template:Infobox film/short description|/short description]] * [[Template:Infobox film or theatre festival|Film or theatre festival]] * Template:Infobox art movement|Art move..." 768670 wikitext text/x-wiki {{Navbox | name = Film- and television-related infobox templates | title = Film- and television-related infobox templates | listclass = hlist | state = {{{state|autocollapse}}} | group1 = [[Wikipedia:List of infoboxes#Film|Film]] | list1 = * [[Template:Infobox film|Film]] ** [[Template:Infobox film/short description|/short description]] * [[Template:Infobox film or theatre festival|Film or theatre festival]] * [[Template:Infobox art movement|Art movement]] * [[Template:Infobox cinema market|Cinema market]] * [[Template:Infobox movie quote|Movie quote]] | group2 = [[Wikipedia:List of infoboxes#Television|Television]] | list2 = * [[Template:Infobox television|Television]] ** [[Template:Infobox television/Short description|/Short description]] * [[Template:Infobox television season|Television season]] ** [[Template:Infobox reality competition season|Reality competition season]] * [[Template:Infobox television episode|Television episode]] ** [[Template:Infobox television crossover episode|crossover]] *** [[Template:Infobox television crossover episode/part|/part]] ** ''[[Template:Infobox Doctor Who episode|Doctor Who]]'' ** ''[[Template:Infobox Futurama episode|Futurama]]'' ** ''[[Template:Infobox Simpsons episode|Simpsons]]'' * [[Template:Infobox animanga/Video|Animanga]] | group3 = Misc video | list3 = * ''[[Template:Infobox Paris by Night|Paris by Night]]'' * [[Template:Infobox machinima|Machinima]] | group4 = Industry | list4 = * [[Template:Infobox award|Award]] * [[Template:Infobox awards list|Awards list]] * [[Template:Infobox film awards|Film awards]] ** [[Template:Infobox film awards/link|/link]] ** [[Template:Infobox film awards/style|/style]] * [[Template:Infobox broadcasting network|Broadcasting network]] * [[Template:Infobox television channel|Television channel]] * [[Template:Infobox television station|Television station]] * [[Template:Infobox programming block|Programming block]] * [[Template:Infobox presenter|Presenter]] | group5 = [[Wikipedia:List of infoboxes#Photography|Technical]] | list5 = * [[Template:Infobox camera|Camera]] * [[Template:Infobox movie camera|Movie camera]] * [[Template:Infobox camera mount|Camera mount]] * [[Template:Infobox photographic lens|Photographic lens]] * [[Template:Infobox lens design|Lens design]] * [[Template:Infobox photographic film|Photographic film]] | group6 = [[Wikipedia:List of infoboxes#Fictional elements|Fiction]] | list6 = * [[Template:Infobox fictional artifact|Artifact]] * [[Template:Infobox character|Character]] ** [[Template:Infobox Doctor Who doctor|Doctor Who doctor]] ** [[Template:Infobox G.I. Joe character|''G.I. Joe'']] ** [[Template:Infobox soap character|Soap opera]] * [[Template:Infobox fictional family|Family]] ** [[Template:Infobox fictional family/member|Family member]] * [[Template:Infobox fictional location|Location]] * [[Template:Infobox fictional organisation|Organisation]] * [[Template:Infobox fictional race|Race]] * [[Template:Infobox fictional vehicle|Vehicle]] | group7 = Template modules | list7 = * [[Template:Infobox name module|Name module]] * [[Template:Based on|Based on]] * [[Template:Infobox person|Person]] * [[Template:Listen|Listen]] | group8 = Related | list8 = * [[Template:Infobox advertising|Advertising]] * [[Template:Infobox media franchise|Media franchise]] * [[Template:Infobox audio drama|Audio drama]] * [[Template:Infobox podcast|Podcast]] * [[Template:Infobox radio station|Radio station]] * [[Template:Infobox radio show|Radio show]] }}<noinclude> {{Documentation}} </noinclude> f8ik4bsipy145ylrinaubi93ilbrurb Template:Film- and television-related infobox templates/doc 10 179293 768671 2026-10-17T01:01:30Z Ember Hines 76216 Created page with "{{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> == Usage == {{Collapsible option}} <includeonly>{{sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Documentation see also templates]] [[Category:Film infobox templates|Δ]]<!-- Delta for "Documentation" --> [[Category:Television infobox templates|Δ]] Category:Film na..." 768671 wikitext text/x-wiki {{Documentation subpage}} <!-- Please place categories where indicated at the bottom of this page and interwikis at Wikidata (see [[Wikipedia:Wikidata]]) --> == Usage == {{Collapsible option}} <includeonly>{{sandbox other|| <!-- Categories below this line, please; interwikis at Wikidata --> [[Category:Documentation see also templates]] [[Category:Film infobox templates|Δ]]<!-- Delta for "Documentation" --> [[Category:Television infobox templates|Δ]] [[Category:Film navigational boxes|Δ]] }}</includeonly> qk0sa0m2ih3hnw1wdndw2nq6g9ozc9q Module:Infobox television disambiguation check 828 179294 768672 2026-10-17T01:02:44Z Ember Hines 76216 Created page with "require("strict") local getArgs = require("Module:Arguments").getArgs local validateDisambiguation = require("Module:Television infoboxes disambiguation check") local p = {} ----------------------------------------------------------------------- -- Valid disambiguation types for infobox television ----------------------------------------------------------------------- local validDisambiguationTypeList = { "TV series", "TV programme", "TV program", "TV film", "fil..." 768672 Scribunto text/plain require("strict") local getArgs = require("Module:Arguments").getArgs local validateDisambiguation = require("Module:Television infoboxes disambiguation check") local p = {} ----------------------------------------------------------------------- -- Valid disambiguation types for infobox television ----------------------------------------------------------------------- local validDisambiguationTypeList = { "TV series", "TV programme", "TV program", "TV film", "film", "miniseries", "serial", "game show", "talk show", "web series" } ----------------------------------------------------------------------- -- Valid disambiguation patterns (AFTER removing type) ----------------------------------------------------------------------- local validDisambiguationPatternList = { -- YEAR + COUNTRY → "1999 American" validateDisambiguation.DisambiguationPattern{ pattern = "^(%d+)%s+(%D+)$", type = validateDisambiguation.VALIDATION_TYPE_YEAR_COUNTRY }, -- YEAR ONLY → "1999" validateDisambiguation.DisambiguationPattern{ pattern = "^%d+$", type = validateDisambiguation.VALIDATION_TYPE_YEAR }, -- COUNTRY ONLY → "American" validateDisambiguation.DisambiguationPattern{ pattern = "^%D+$", type = validateDisambiguation.VALIDATION_TYPE_COUNTRY } } ----------------------------------------------------------------------- -- Titles where parentheses are NOT disambiguation ----------------------------------------------------------------------- local exceptionList = { "The (206)", "Bigg Boss (Hindi TV series)", "Bigg Boss (Malayalam TV series)", "Bigg Boss (Tamil TV series)", "Bigg Boss (Telugu TV series)", "Cinderella (Apakah Cinta Hanyalah Mimpi?)", "Deal or No Deal Malaysia (English-language game show)", "Deal or No Deal Malaysia (Mandarin-language game show)", "Gympl s (r)učením omezeným", "How to Live with Your Parents (For the Rest of Your Life)", "How to Sell Drugs Online (Fast)", "I (Almost) Got Away With It", "I Do (But I Don't)", "Kevin (Probably) Saves the World", "Love (ft. Marriage and Divorce)", "M.R.S. (Most Requested Show)", "Monty Python: Almost the Truth (Lawyers Cut)", "Off Sides (Pigs vs. Freaks)", "Randall and Hopkirk (Deceased)", "Wednesday 9:30 (8:30 Central)", "Who the (Bleep)...", "Who the (Bleep) Did I Marry?" } ----------------------------------------------------------------------- -- Infoboxes that should NOT use this module ----------------------------------------------------------------------- local otherInfoboxList = { ["franchise"] = "[[Category:Television articles using incorrect infobox|FRANCHISE]]", ["radio"] = "[[Category:Television articles using incorrect infobox|R]]", ["season"] = "[[Category:Television articles using incorrect infobox|S]]", ["series %d*"] = "[[Category:Television articles using incorrect infobox|S]]", ["TV programming block"] = "[[Category:Television articles using incorrect infobox|P]]", ["film series"] = "[[Category:Television articles using incorrect infobox|FILM]]" } ----------------------------------------------------------------------- -- No invalid title styles for this module ----------------------------------------------------------------------- local invalidTitleStyleList = {} ----------------------------------------------------------------------- -- Internal main ----------------------------------------------------------------------- local function _main(args) local title = args[1] return validateDisambiguation.main( title, "infobox television", validDisambiguationTypeList, validDisambiguationPatternList, exceptionList, otherInfoboxList, invalidTitleStyleList ) end ----------------------------------------------------------------------- -- Public entry point ----------------------------------------------------------------------- function p.main(frame) local args = getArgs(frame) local category = _main(args) return category end ----------------------------------------------------------------------- -- Utility: remove a value from an array ----------------------------------------------------------------------- local function removeFromArray(t, delete) local j = 1 local n = #t for i = 1, n do if t[i] ~= delete then if i ~= j then t[j] = t[i] t[i] = nil end j = j + 1 else t[i] = nil end end return t end ----------------------------------------------------------------------- -- Export list of disambiguation types EXCEPT "TV series" -- Used by the season module to detect incorrect infobox usage ----------------------------------------------------------------------- function p.getDisambiguationTypeList() return removeFromArray(mw.clone(validDisambiguationTypeList), "TV series") end ----------------------------------------------------------------------- -- Test entry point (returns debug string) ----------------------------------------------------------------------- function p.test(frame) local args = getArgs(frame) local _, debugString = _main(args) return debugString end return p me9tt5mixcbfz5yfulfx7qqcakleagf Module:Infobox television disambiguation check/doc 828 179295 768673 2026-10-17T01:03:19Z Ember Hines 76216 Created page with "{{High-use}} {{Lua|Module:Arguments|Module:Television infoboxes disambiguation check}} '''Module:Infobox television disambiguation check''' is used to validate the disambiguation of a page using {{tl|Infobox television}}. == What it does == The module preforms two checks: # It checks by a series of validations if one of the accepted [[WP:NCTV]] disambiguation styles appears in the parenthesis. If it is incorrect, it places the page in :Category:Television articles w..." 768673 wikitext text/x-wiki {{High-use}} {{Lua|Module:Arguments|Module:Television infoboxes disambiguation check}} '''Module:Infobox television disambiguation check''' is used to validate the disambiguation of a page using {{tl|Infobox television}}. == What it does == The module preforms two checks: # It checks by a series of validations if one of the accepted [[WP:NCTV]] disambiguation styles appears in the parenthesis. If it is incorrect, it places the page in [[:Category:Television articles with incorrect naming style]]. Validations currently supported: ## Validates the format used is one of the accepted values. ## Validates the country adjective used is correct. ## Validates the year is using 4 digits. ## Validates that the style is ordered as <year> <country adjective> <format>. # It checks if a page is using "(film series)", "(franchise)", "(radio)", "(season #)", "(series #)" or "(TV programming block)" as disambiguation, but uses {{tl|Infobox television}} instead of {{tl|Infobox media franchise}}, {{tl|Infobox radio show}}, {{tl|Infobox television season}} or {{tl|Infobox programming block}}}. If so, it places the page in [[:Category:Television articles using incorrect infobox]]. == Usage == * {{Mlx|{{BASEPAGENAME}}|main}} == Parameter list == The following parameter can be used as a positional parameter. {| class="wikitable" |- ! scope="col" | Parameter ! scope="col" | Explanation ! scope="col" | Status |- ! scope="row" | <code>1</code> | The page's title. | required |} == False positives == If a title has disambiguation as part of its title, such as [[Snoopy Presents: To Mom (and Dad), With Love]], the module will detect it as an incorrect title. To manually tell the module to allow this title, add it to the <code>exceptionList</code>. == See also == * [[Module:Infobox television season disambiguation check]] == Tracking categories == * {{Category link with count|Category:Television articles with incorrect naming style}} * {{Category link with count|Category:Television articles using incorrect infobox}} <includeonly>{{Sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Television-related modules]] [[Category:Modules that add a tracking category]] [[Category:Infobox modules]] }}</includeonly><noinclude> [[Category:Module documentation pages]] </noinclude> mykc6l7ch55qd2qi03rikugbhyj8uhr Template:WWE 10 179296 768674 2026-10-17T01:04:34Z Ember Hines 76216 Created page with "{{Navbox |name=WWE |image= |title=[[WWE]] |state={{{state|autocollapse}}} |bodyclass=hlist |group1={{colored link||History of WWE|History}} |list1= *[[McMahon family]] *[[Capitol Wrestling Corporation]] *[[1980s professional wrestling boom|1980s boom]] *[[Black Saturday (professional wrestling)|Black Saturday]] *[[WrestleMania I]] *[[Ring boy scandal]] *[[United States v. McMahon|Steroids trial]] *[[The Kliq]] *[[Bone Street Krew]] *[[Monday Night War|Monday Night Wars]..." 768674 wikitext text/x-wiki {{Navbox |name=WWE |image= |title=[[WWE]] |state={{{state|autocollapse}}} |bodyclass=hlist |group1={{colored link||History of WWE|History}} |list1= *[[McMahon family]] *[[Capitol Wrestling Corporation]] *[[1980s professional wrestling boom|1980s boom]] *[[Black Saturday (professional wrestling)|Black Saturday]] *[[WrestleMania I]] *[[Ring boy scandal]] *[[United States v. McMahon|Steroids trial]] *[[The Kliq]] *[[Bone Street Krew]] *[[Monday Night War|Monday Night Wars]] *[[Montreal Screwjob]] *[[Attitude Era]] *[[The Invasion (professional wrestling)|The Invasion]] *[[WWF trademark dispute]] *[[Chris Benoit double-murder and suicide]] *[[PG Era]] *[[TNA Impact!'s move to Monday nights|New Monday Night Wars]] *[[Wednesday Night Wars]] *[[WWE ThunderDome|ThunderDome]] *[[Acquisition of WWE by Endeavor]] *[[Vince McMahon sex trafficking scandal]] |group2={{colored link||List of WWE television programming|Programming}} |list2={{navbox|subgroup |group1=Weekly in-ring shows |list1= *''[[WWE Raw|Monday Night Raw]]'' **[[History of WWE Raw|history]] **[[List of WWE Raw special episodes|special episodes]] *''[[WWE SmackDown|Friday Night SmackDown]]'' **[[History of WWE SmackDown|history]] **[[List of WWE SmackDown special episodes|special episodes]] *''[[WWE NXT|NXT]]'' **[[WWE NXT seasons 1–5|Seasons 1–5]] **[[List of WWE NXT special episodes|special episodes]] *''[[WWE Main Event|Main Event]]'' *''[[WWE Evolve|Evolve]]'' *''[[Lucha Libre AAA (TV program)|Lucha Libre AAA]]'' |group2=Recap shows |list2= *''[[This Week in WWE (TV show)|This Week in WWE]]'' *''[[WWE Wal3ooha|Wal3ooha]]'' |group3=TV specials |list3= *''[[Saturday Night's Main Event]]'' *''[[NXT: New Year's Evil|NXT New Year's Evil]]'' *''[[WWE Roadblock|NXT Roadblock]]'' *''[[Spring Breakin'|NXT Spring Breakin']]'' |group4=Seasonal shows |list4= *''[[Biography: WWE Legends]]'' *''[[WWE LFG|LFG]]'' *''[[WWE's Most Wanted Treasures|Most Wanted Treasures]]'' *''[[WWE Rivals|Rivals]]'' *''[[WWE Unreal|Unreal]]'' |group5=[[List of WWE pay-per-view and livestreaming supercards|Pay-per-view<br>and livestreaming supercards]] |list5= * [[Royal Rumble]] * [[WWE Vengeance|Vengeance Day]] * [[WWE Elimination Chamber|Elimination Chamber]] * [[NXT Stand & Deliver]] * [[WrestleMania]] * [[WWE Backlash|Backlash]] * [[WWE Battleground|Battleground]] * [[WWE Money in the Bank|Money in the Bank]] * [[Night of Champions]] * [[The Great American Bash]] * [[WWE Evolution|Evolution]] * [[SummerSlam]] * [[ECW Heat Wave|Heatwave]] * [[Clash in Paris]] * [[Wrestlepalooza]] * [[WWE No Mercy|No Mercy]] * [[WWE Crown Jewel|Crown Jewel]] * [[Halloween Havoc]] * [[Survivor Series]] * [[NXT Deadline]] |group6=Other |list6= *[[List of WWE broadcasters|Broadcasting rights]] }} |group3=Home bases |list3={{navbox|subgroup |group1=Current |list1= *[[WWE Performance Center]] |group2=Former |list2= * [[Ted Turner Campus|WTBS Studios]] *[[Amway Center]] *[[Full Sail University]] *[[Tropicana Field]] *[[Yuengling Center]] }} |group4={{colored link||List of WWE personnel|Personnel}} |list4= *[[WWE Hall of Fame|Hall of Fame]] *[[List of former WWE personnel|Former personnel]] **[[List of former WWE personnel (A–C)|A–C]] **[[List of former WWE personnel (D–H)|D–H]] **[[List of former WWE personnel (I–M)|I–M]] **[[List of former WWE personnel (N–R)|N–R]] **[[List of former WWE personnel (S–Z)|S–Z]] |group5=Notable rivalries<br> and matches |list5= *[[André the Giant–Hulk Hogan rivalry]] *[[Bret Hart vs. Tom Magee]] *[[Mankind vs. The Undertaker]] *[[The Streak (professional wrestling)|The Streak]] |group6=Affiliated properties |list6= *''[[WWE 2K]]'' *[[WWE Books]] *[[WWE Libraries|WWE Legacy Department]] *[[WWE Music Group]] ** [[WWE Music Group discography|Discography]] *[[WWE Podcast Network]] *[[WWE Radio]] *[[WWE Studios]] *[[WWE Vault]] *[[Tapout (clothing brand)|Tapout]] |group7=Defunct businesses |list7= *[[World Bodybuilding Federation]] *[[WWE Classics on Demand]] *[[WWE Home Video]] *''[[WWE Magazine]]'' *[[WWE Network]] ** [[WWE Network (Canadian TV channel)|Canada]] *[[WWE Niagara Falls]] *[[Clarion Hotel and Casino|Clarion Hotel and Casino ("WWF Casino")]] *[[WWF New York]] *XFL **[[XFL (2001)|2001]] **[[XFL (2020–2023)|2020]] |group8=Notable acquisitions |list8= *[[American Wrestling Association]] *[[Dragon Gate USA]] *[[Evolve (professional wrestling)|Evolve]] **[[WWE Evolve|WWE revival]] *[[Extreme Championship Wrestling]] **[[WWE ECW|WWE revival]] *[[Georgia Championship Wrestling]] *[[Global Wrestling Federation]] *[[International Championship Wrestling]] *[[Smoky Mountain Wrestling]] *[[World Championship Wrestling]] **[[History of World Championship Wrestling|history]] **''[[Who Killed WCW?]]'' *[[World Class Championship Wrestling]] *[[World Wrestling Council]] |group9=Investments |list9= *[[Avid Technology]] *[[Cloud9]] *[[DraftKings]] *[[Drone Racing League]] *[[FloSports]] *[[Marvel Experience]] *[[Phunware]] *[[Premier Lacrosse League]] *[[Tout (company)|Tout]] | group10 = Related companies | list10 = {{Navbox|subgroup |group1=Owners |list1= * [[TKO Group Holdings]] ** [[WME Group|Endeavor]] via [[Silver Lake (investment firm)|Silver Lake]] |group2=Sister companies |list2= * [[IMG (company)|IMG]] * On Location * [[Professional Bull Riders]] * [[Lucha Libre AAA Worldwide]] * [[Ultimate Fighting Championship]] * [[Zuffa Boxing]] }} |group11=Partnerships |list11= {{Navbox|subgroup |group1=Current partners |list1= *[[AAW Wrestling]] *[[Alpha-1 Wrestling]] *[[Beyond Wrestling]] *[[Game Changer Wrestling]] *[[Dream Star Fighting Marigold]] *[[Future Stars of Wrestling]] *[[Marvelous That's Women Pro Wrestling]] *[[New York Wrestling Connection]] *[[Pro Wrestling Noah]] *[[Total Nonstop Action Wrestling]] *[[Winnipeg Pro Wrestling]] *[[WWNLive]] **[[Full Impact Pro]] **[[Shine Wrestling]] |group2=WWE ID affiliates |list2= *[[Seth Rollins|Black and Brave Academy]] *[[List of professional wrestlers trained by Killer Kowalski|Elite Pro Wrestling Training Center]] *[[Nightmare Factory (professional wrestling)|Nightmare Factory]] *[[Reality of Wrestling]] |group3=Former partners |list3= *[[All Japan Pro Wrestling]] *[[Consejo Mundial de Lucha Libre]] *[[Deep South Wrestling]] *[[Insane Championship Wrestling]] *[[Rikishi (wrestler)|KnokX Pro]] *[[Michinoku Pro Wrestling]] *[[National Wrestling Alliance]] *[[New Japan Pro-Wrestling]] *[[Progress Wrestling]] *[[Super World of Sports]] *[[United States Wrestling Association]] *[[United Wrestling Network]] **[[UWN Championship Wrestling|Championship Wrestling]] **[[Gotham Wrestling]] **[[Memphis Wrestling (2021)|Memphis Wrestling]] *[[Universal Lucha Libre]] *[[Universal Wrestling Association]] *[[Universal Wrestling Federation (Japan)|Universal Wrestling Federation]] *[[WAR (wrestling promotion)|WAR]] *[[Westside Xtreme Wrestling]] *[[World Wrestling Alliance (Massachusetts)|World Wrestling Alliance]] |group4=[[List of WWE developmental territories and brands|Former developmental territories]] |list4= *[[Deep South Wrestling]] *[[Florida Championship Wrestling]] *[[Heartland Wrestling Association]] *[[International Wrestling Association (Puerto Rico)|IWA Puerto Rico]] *[[Memphis Championship Wrestling]] *[[Ohio Valley Wrestling]] *[[Power Pro Wrestling]] *[[Ultimate Pro Wrestling]] *[[World Wrestling Alliance (Massachusetts)|World Wrestling Alliance]] }} |group12=Championships |list12= *[[List of current champions in WWE|Current champions]] *[[List of former championships in WWE|Former championships]] *Types of championships **[[Tag team championships in WWE|Tag team]] **[[Women's championships in WWE|Women's]] **[[World championships in WWE|World]] |group13=Accomplishments |list13={{navbox|subgroup |list1= *[[WWE Diva Search|Diva Search]] *[[Money in the Bank ladder match|Money in the Bank]] *[[WWE Tough Enough|Tough Enough]] *Awards **[[Slammy Award|Slammys]] **[[NXT Year-End Award|NXT Year-End]] **[[WWE Year-End Award|WWE Year-End]] *[[Grand Slam (professional wrestling)|Grand Slam]] *[[Triple Crown (professional wrestling)|Triple Crown]] *Battle royals **[[André the Giant Memorial Battle Royal]] **[[Royal Rumble match|Royal Rumble]] **[[WrestleMania Women's Battle Royal]] |group2=[[WWE tournaments|Tournaments]] |list2= *[[WWF Brawl for All|Brawl for All]] *[[Cruiserweight Classic]] *[[Dusty Rhodes Tag Team Classic]] *[[King of the Ring tournament|King of the Ring]] *[[Mae Young Classic]] *[[WWE Mixed Match Challenge|Mixed Match Challenge]] *[[NXT Breakout Tournament]] *[[Queen of the Ring tournament|Queen of the Ring]] *[[Sam Muchnick Memorial Tournament]] }} |group14=[[WWE brand extension|Brand extension]] |list14= *[[Raw (WWE brand)|Raw]] *[[SmackDown (WWE brand)|SmackDown]] *[[NXT (WWE brand)|NXT]] *[[Evolve (WWE brand)|Evolve]] *[[NXT UK (WWE brand)|NXT UK]] *[[205 Live (WWE brand)|205 Live]] *[[ECW (WWE brand)|ECW]] *[[WWE Draft|Draft]] **[[2002 WWF Draft Lottery|2002]] **[[2004 WWE Draft Lottery|2004]] **[[2005 WWE Draft Lottery|2005]] **[[2006 WWE brand extension draft|2006]] **[[2007 WWE Draft|2007]] **[[2008 WWE Draft|2008]] **[[2009 WWE Draft|2009]] **[[2010 WWE Draft|2010]] **[[2011 WWE Draft|2011]] **[[2016 WWE Draft|2016]] **[[2017 WWE Superstar Shake-up|2017]] **[[2018 WWE Superstar Shake-up|2018]] **[[2019 WWE Superstar Shake-up|April 2019]] **[[2019 WWE Draft|October 2019]] **[[2020 WWE Draft|2020]] **[[2021 WWE Draft|2021]] **[[2023 WWE Draft|2023]] **[[2024 WWE Draft|2024]] |group15=International |list15= *[[WWE in Australia|Australia]] *[[WWE in Brazil|Brazil]] *[[WWE in Canada|Canada]] *[[WWE in India|India]] *[[WWE in Mexico|Mexico]] *[[WWE in New Zealand|New Zealand]] *[[WWE in Saudi Arabia|Saudi Arabia]] *[[WWE in the United Kingdom|UK]] |group16=Miscellaneous |list16= *[[Aftershock Festival]] *[[Arnold Sports Festival]] *[[List of WWE attendance records|Attendance records]] *[[Download Festival]] *[[Louder Than Life]] *[[Titan Towers]] *[[Women in WWE]] *[[WrestleMania Fan Axxess]] *[[WWE action figures]] **[[Wrestling Superstars|LJN Wrestling Superstars]] *[[WWE Recruit|WWE ID and WWE NIL]] **[[ID Championship Tournament]] **[[ID Showcase]] }}<noinclude> {{navbox documentation}} [[Category:WWE navigational boxes| ]] </noinclude> 891x60r28fsn3oaprzxxd4dkcy7lmxz Module:Television infoboxes disambiguation check 828 179297 768675 2026-10-17T01:06:31Z Ember Hines 76216 Created page with "require("strict") local libraryUtil = require("libraryUtil") ----------------------------------------------------------------------- -- DisambiguationPattern "class" ----------------------------------------------------------------------- local function DisambiguationPattern(o) local obj = o or { pattern = "", type = 0 } libraryUtil.makeCheckSelfFunction( "Television infoboxes disambiguation check", "DisambiguationPattern", obj, "Television infoboxes disambigu..." 768675 Scribunto text/plain require("strict") local libraryUtil = require("libraryUtil") ----------------------------------------------------------------------- -- DisambiguationPattern "class" ----------------------------------------------------------------------- local function DisambiguationPattern(o) local obj = o or { pattern = "", type = 0 } libraryUtil.makeCheckSelfFunction( "Television infoboxes disambiguation check", "DisambiguationPattern", obj, "Television infoboxes disambiguation check object" ) return obj end ----------------------------------------------------------------------- -- Constants ----------------------------------------------------------------------- local DAB_VALID = { [true] = "valid", [false] = "invalid" } local CATEGORY_INCORRECT = "[[Category:Television articles with incorrect naming style]]" local validationTypeList = { VALIDATION_TYPE_YEAR_COUNTRY = 1, VALIDATION_TYPE_YEAR = 2, VALIDATION_TYPE_COUNTRY = 3, VALIDATION_TYPE_YEAR_SEASON_NUMBER = 4, VALIDATION_TYPE_COUNTRY_SEASON_NUMBER = 5, VALIDATION_TYPE_SEASON_NUMBER = 6, VALIDATION_TYPE_YEAR_COUNTRY_SEASON_NUMBER = 8 } local debugMessageList = { DEBUG_EMPTY_TITLE = "Debug: Error: Empty title.", DEBUG_NO_DAB = "Debug: No disambiguation.", DEBUG_TITLE_ON_EXCEPTION = "Debug: Title on exception list.", DEBUG_VALID_FORMAT = "Debug: Using a valid format.", DEBUG_NOT_VALID_FORMAT = "Debug: Not a valid format.", DEBUG_YEAR_COUNTRY = "Debug: Using a valid format with an extended Year and Country - {}.", DEBUG_YEAR = "Debug: Using a valid format with an extended Year - {}.", DEBUG_COUNTRY = "Debug: Using a valid format with an extended Country - {}.", DEBUG_INCORRECT_STYLE = "Debug: Using a valid format but using an incorrect extended style.", DEBUG_INCORRECT_INFOBOX = "Debug: Using incorrect infobox - {}.", DEBUG_YEAR_SEASON_NUMBER = "Debug: Using a valid format with an extended Year and Season number - {}.", DEBUG_COUNTRY_SEASON_NUMBER = "Debug: Using a valid format with an extended Country and Season number - {}.", DEBUG_SEASON_NUMBER = "Debug: Using a valid format with a Season number - {}.", DEBUG_YEAR_COUNTRY_SEASON_NUMBER = "Debug: Using a valid format with an extended Year, Country and Season number - {}." } ----------------------------------------------------------------------- -- Validation helpers ----------------------------------------------------------------------- local function validateTwoParameters(a, b) return not not (a and b) end local function validateSeasonNumber(seasonNumber) if not seasonNumber then return false end return tonumber(seasonNumber:sub(1, 1)) ~= 0 end local function validateYear(year) return year and #year == 4 end local function validateCountryAdjective(adj) if not adj or adj == "" then return false end local data = mw.loadData("Module:Country adjective") return not not data.getCountryFromAdj[adj] end ----------------------------------------------------------------------- -- Pattern validation engine ----------------------------------------------------------------------- local function validatePatterns(disambiguation, patternList) local year, adjective, seasonNumber local isYearValid, isAdjectiveValid, isSeasonNumberValid for i = 1, #patternList do local p = patternList[i] if disambiguation:match(p.pattern) then -- YEAR + COUNTRY if p.type == validationTypeList.VALIDATION_TYPE_YEAR_COUNTRY then year, adjective = disambiguation:match(p.pattern) isYearValid = validateYear(year) isAdjectiveValid = validateCountryAdjective(adjective) local ok = validateTwoParameters(isYearValid, isAdjectiveValid) return ok, debugMessageList.DEBUG_YEAR_COUNTRY:gsub("{}", DAB_VALID[ok]) -- YEAR elseif p.type == validationTypeList.VALIDATION_TYPE_YEAR then year = disambiguation isYearValid = validateYear(year) return isYearValid, debugMessageList.DEBUG_YEAR:gsub("{}", DAB_VALID[isYearValid]) -- COUNTRY elseif p.type == validationTypeList.VALIDATION_TYPE_COUNTRY then adjective = disambiguation isAdjectiveValid = validateCountryAdjective(adjective) return isAdjectiveValid, debugMessageList.DEBUG_COUNTRY:gsub("{}", DAB_VALID[isAdjectiveValid]) -- YEAR + SEASON elseif p.type == validationTypeList.VALIDATION_TYPE_YEAR_SEASON_NUMBER then year, seasonNumber = disambiguation:match(p.pattern) isYearValid = validateYear(year) isSeasonNumberValid = validateSeasonNumber(seasonNumber) local ok = validateTwoParameters(isYearValid, isSeasonNumberValid) return ok, debugMessageList.DEBUG_YEAR_SEASON_NUMBER:gsub("{}", DAB_VALID[ok]) -- COUNTRY + SEASON elseif p.type == validationTypeList.VALIDATION_TYPE_COUNTRY_SEASON_NUMBER then adjective, seasonNumber = disambiguation:match(p.pattern) isAdjectiveValid = validateCountryAdjective(mw.text.trim(adjective)) isSeasonNumberValid = validateSeasonNumber(seasonNumber) local ok = validateTwoParameters(isAdjectiveValid, isSeasonNumberValid) return ok, debugMessageList.DEBUG_COUNTRY_SEASON_NUMBER:gsub("{}", DAB_VALID[ok]) -- SEASON ONLY elseif p.type == validationTypeList.VALIDATION_TYPE_SEASON_NUMBER then seasonNumber = disambiguation:match(p.pattern) isSeasonNumberValid = validateSeasonNumber(seasonNumber) return isSeasonNumberValid, debugMessageList.DEBUG_SEASON_NUMBER:gsub("{}", DAB_VALID[isSeasonNumberValid]) -- YEAR + COUNTRY + SEASON elseif p.type == validationTypeList.VALIDATION_TYPE_YEAR_COUNTRY_SEASON_NUMBER then year, adjective, seasonNumber = disambiguation:match(p.pattern) isYearValid = validateYear(year) isAdjectiveValid = validateCountryAdjective(mw.text.trim(adjective)) isSeasonNumberValid = validateSeasonNumber(seasonNumber) local ok = validateTwoParameters(isYearValid, isAdjectiveValid) ok = validateTwoParameters(ok, isSeasonNumberValid) return ok, debugMessageList.DEBUG_YEAR_COUNTRY_SEASON_NUMBER:gsub("{}", DAB_VALID[ok]) end end end return false, debugMessageList.DEBUG_INCORRECT_STYLE end ----------------------------------------------------------------------- -- Disambiguation type validation ----------------------------------------------------------------------- local function validateDisambiguationType(disambiguation, typeList) local extended = disambiguation local count = 0 for i = 1, #typeList do local t = typeList[i] extended, count = extended:gsub(t, "") extended = mw.text.trim(extended) if count ~= 0 then break end end return count ~= 0, extended end local function validateDisambiguation(invoker, disambiguation, typeList, patternList) if #typeList ~= 0 then local ok, extended = validateDisambiguationType(disambiguation, typeList) if not ok then return false, debugMessageList.DEBUG_NOT_VALID_FORMAT end if extended == "" then return true, debugMessageList.DEBUG_VALID_FORMAT end if invoker ~= "infobox television season" then disambiguation = extended end end return validatePatterns(disambiguation, patternList) end ----------------------------------------------------------------------- -- Incorrect infobox detection ----------------------------------------------------------------------- local function isPageUsingIncorrectInfobox(invoker, disambiguation, otherList) -- Only skip incorrect-infobox detection for SEASON pages. -- Season pages often have disambiguations like: -- "season 1", "series 2", "season 1 TV series" -- These should NOT trigger incorrect-infobox errors. if invoker == "infobox television season" then if disambiguation:match("^[Ss]eason%s+%d+") or disambiguation:match("^[Ss]eries%s+%d+") then return false end end -- Normal incorrect-infobox detection for k, v in pairs(otherList) do if disambiguation:match(k) then return true, v, debugMessageList.DEBUG_INCORRECT_INFOBOX:gsub("{}", k) end end return false end ----------------------------------------------------------------------- -- Exception list ----------------------------------------------------------------------- local function isOnExceptionList(title, list) for _, v in ipairs(list) do if v == title or title:match(v) then return true end end return false end ----------------------------------------------------------------------- -- Disambiguation extraction (supports new naming) ----------------------------------------------------------------------- -- Get the disambiguation text and support both: -- - Parenthetical only: "Big Brother (American TV series)" -- - Parenthetical + season: "Big Brother (American TV series) season 5" -- - Season only: "Lost season 1" local function getDisambiguation(title) local match = require("Module:String")._match -- Last parenthetical chunk, if any. local paren = match(title, "%s%((.-)%)", 1, -1, false, "") -- Trailing "season X" or "series X", if any (X can be wrong; validation will decide). local base, seasonPart = title:match("^(.-)%s+(season%s+.+)$") if not base then base, seasonPart = title:match("^(.-)%s+(series%s+.+)$") end if paren ~= "" and seasonPart then -- Example: "Big Brother (American TV series) season 5" -- Returns: "American TV series season 5" return paren .. " " .. seasonPart elseif paren ~= "" then -- Example: "Big Brother (American TV series)" -- Returns: "American TV series" return paren elseif seasonPart then -- Example: "Lost season 1" -- Returns: "season 1" return seasonPart else return "" end end ----------------------------------------------------------------------- -- Utility ----------------------------------------------------------------------- local function isEmpty(x) return not x or x == "" end ----------------------------------------------------------------------- -- Main entry point ----------------------------------------------------------------------- local function main(title, invoker, typeList, patternList, exceptionList, otherInfoboxList, invalidTitleStyleList) if isEmpty(title) then return "", debugMessageList.DEBUG_EMPTY_TITLE end if isOnExceptionList(title, exceptionList) then return "", debugMessageList.DEBUG_TITLE_ON_EXCEPTION end if invoker == "infobox television season" then for i = 1, #invalidTitleStyleList do if title:find(invalidTitleStyleList[i]) then return CATEGORY_INCORRECT, debugMessageList.DEBUG_NOT_VALID_FORMAT end end end local disambiguation = getDisambiguation(title) if isEmpty(disambiguation) then return "", debugMessageList.DEBUG_NO_DAB end local wrong, category, dbg = isPageUsingIncorrectInfobox(invoker, disambiguation, otherInfoboxList) if wrong then return category, dbg end local ok, dbg2 = validateDisambiguation(invoker, disambiguation, typeList, patternList) if not ok then return CATEGORY_INCORRECT, dbg2 end return "", dbg2 end ----------------------------------------------------------------------- -- Export ----------------------------------------------------------------------- return { main = main, DisambiguationPattern = DisambiguationPattern, VALIDATION_TYPE_YEAR_COUNTRY = validationTypeList.VALIDATION_TYPE_YEAR_COUNTRY, VALIDATION_TYPE_YEAR = validationTypeList.VALIDATION_TYPE_YEAR, VALIDATION_TYPE_COUNTRY = validationTypeList.VALIDATION_TYPE_COUNTRY, VALIDATION_TYPE_YEAR_SEASON_NUMBER = validationTypeList.VALIDATION_TYPE_YEAR_SEASON_NUMBER, VALIDATION_TYPE_COUNTRY_SEASON_NUMBER = validationTypeList.VALIDATION_TYPE_COUNTRY_SEASON_NUMBER, VALIDATION_TYPE_SEASON_NUMBER = validationTypeList.VALIDATION_TYPE_SEASON_NUMBER, VALIDATION_TYPE_YEAR_COUNTRY_SEASON_NUMBER = validationTypeList.VALIDATION_TYPE_YEAR_COUNTRY_SEASON_NUMBER } lhifofaqehtzpq91ro7zt072ek7wsmq Module:Television infoboxes disambiguation check/doc 828 179298 768676 2026-10-17T01:07:03Z Ember Hines 76216 Created page with "{{High-use}} {{Lua|WP:libraryUtil|Module:Arguments|Module:Country adjective|Module:String|noprotcat=yes}} '''Module:Television infoboxes disambiguation check''' handles the validation of disambiguation of pages using a television-related infobox. Currently [[Module:Infobox television disambiguation check]] and [[Module:Infobox television season disambiguation check]] are setup to work with it. == Usage == <syntaxhighlight lang="lua"> local validateDisambiguation = requ..." 768676 wikitext text/x-wiki {{High-use}} {{Lua|WP:libraryUtil|Module:Arguments|Module:Country adjective|Module:String|noprotcat=yes}} '''Module:Television infoboxes disambiguation check''' handles the validation of disambiguation of pages using a television-related infobox. Currently [[Module:Infobox television disambiguation check]] and [[Module:Infobox television season disambiguation check]] are setup to work with it. == Usage == <syntaxhighlight lang="lua"> local validateDisambiguation = require('Module:Television infoboxes disambiguation check') local trackingCategory, debugString = validateDisambiguation.main(title, validDisambiguationTypeList, validDisambiguationPatternList, exceptionList, otherInfoboxList)</syntaxhighlight> == Parameter list == {| class="wikitable" |- ! scope="col" | Parameter ! scope="col" | Explanation ! scope="col" | Status |- ! scope="row" | <code>title</code> | The page's title. | required |- ! scope="row" | <code>validDisambiguationTypeList</code> | An array of valid disambiguation types. | required |- ! scope="row" | <code>validDisambiguationPatternList</code> | An array of DisambiguationPattern. | required |- ! scope="row" | <code>exceptionList</code> | An array of page names that should not be validated; If there are none, pass an empty array. | required |- ! scope="row" | <code>otherInfoboxList</code> | An array of key/value pairs of the type the disambiguation to check for (key) and the tracking category to add it to (value). | required |} <includeonly>{{Sandbox other|| <!-- Categories below this line; interwikis at Wikidata --> [[Category:Television-related modules]] [[Category:Infobox modules]] [[Category:Modules that add a tracking category]] }}</includeonly> n3zqtk6snb8eqemzmiq298br5dwwwzq Module:TV infookvir 828 179299 768684 2026-10-17T10:04:01Z Flamingounicorn 69662 + 768684 Scribunto text/plain local p = {} local function killMarkers(s) if not s then return s end s = tostring(s) s = s:gsub('<[^>]+>', '') s = s:gsub('%[%[[^%|%]]-%]%]', function(x) local m = x:match('%[%[([^%|%]]+)%]%]') if m then return m end return x end) s = s:gsub('%[%[[^%|]+%|([^%]]+)%]%]', '%1') return s end local function trim(s) if not s then return s end s = tostring(s) s = s:gsub('^%s+', ''):gsub('%s+$', '') return s end local daniUMjesecu = {['01']=31,['02']=28,['03']=31,['04']=30,['05']=31,['06']=30,['07']=31,['08']=31,['09']=30,['10']=31,['11']=30,['12']=31} local function prijestupna(g) if not g then return false end local gg = tonumber(g) if not gg then return false end if gg % 400 == 0 then return true end if gg % 100 == 0 then return false end if gg % 4 == 0 then return true end return false end local function normalizeMonth(m) if not m then return nil end local ml = m:lower() ml = ml:gsub('č', 'c'):gsub('ć', 'c'):gsub('ž', 'z'):gsub('š', 's'):gsub('đ', 'd') ml = ml:gsub('äŤ', 'c'):gsub('ä‡', 'c'):gsub('ĺľ', 'z'):gsub('ĺˇ', 's'):gsub('ä‘', 'd') -- from original encodings if any if ml == 'sijecnja' or ml == 'siječnja' then return '01' end if ml == 'veljace' or ml == 'veljače' then return '02' end if ml == 'ozujka' or ml == 'ožujka' then return '03' end if ml == 'travnja' then return '04' end if ml == 'svibnja' then return '05' end if ml == 'lipnja' then return '06' end if ml == 'srpnja' then return '07' end if ml == 'kolovoza' then return '08' end if ml == 'rujna' then return '09' end if ml == 'listopada' or ml == 'listopad' then return '10' end if ml == 'studenoga' or ml == 'studenog' then return '11' end if ml == 'prosinca' or ml == 'prosinac' then return '12' end return nil end local function dohvatiISO(s) if not s or s == '' then return nil end local t = killMarkers(trim(s)) if not t then return nil end -- full date local dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if not dan then dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ]+)%s+(%d+)%.$') end if dan and mjesec and godina then local brg = tonumber(godina) if brg and brg >= 1000 and brg <= 9999 then local mbr = normalizeMonth(mjesec) if mbr then local maxd = daniUMjesecu[mbr] if mbr == '02' and prijestupna(brg) then maxd = 29 end local brd = tonumber(dan) if brd and brd >= 1 and brd <= maxd then return godina .. '-' .. mbr .. '-' .. string.format('%02d', brd) end end end end -- month year local mjesec2, godina2 = t:match('^([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if mjesec2 and godina2 then local brg2 = tonumber(godina2) if brg2 and brg2 >= 1000 and brg2 <= 9999 then local mbr2 = normalizeMonth(mjesec2) if mbr2 then return godina2 .. '-' .. mbr2 end end end -- year local godina3 = t:match('^(%d+)%.$') if godina3 then local brg3 = tonumber(godina3) if brg3 and brg3 >= 1000 and brg3 <= 9999 then return godina3 end end return nil end local function getCurrent() local y = tonumber(os.date('%Y')) or 0 local m = tonumber(os.date('%m')) or 0 local d = tonumber(os.date('%d')) or 0 return y, m, d end local function parseParts(iso) if not iso then return nil end local y, m, d = iso:match('^(%d+)-(%d+)-(%d+)$') if y and m and d then return tonumber(y), tonumber(m), tonumber(d), true end local y2, m2 = iso:match('^(%d+)-(%d+)$') if y2 and m2 then return tonumber(y2), tonumber(m2), nil, false end local y3 = iso:match('^(%d+)$') if y3 then return tonumber(y3), nil, nil, false end return nil end local function isFuture(iso) if not iso then return false end local cy, cm, cd = getCurrent() local py, pm, pd, phd = parseParts(iso) if not py then return false end if phd and pd and pm then if py > cy then return true end if py == cy and pm > cm then return true end if py == cy and pm == cm and pd > cd then return true end return false end if pm then if py > cy then return true end if py == cy and pm > cm then return true end return false end if py > cy then return true end return false end function p.prikazivanje(frame) local args = frame.args local prem = args[1] or args.premijera or '' local fin = args[2] or args.finale or '' prem = trim(prem) fin = trim(fin) local premIso = dohvatiISO(prem) if premIso and isFuture(premIso) then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Nadolazeći televizijski program') end return prem end if fin == '' then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return prem .. ' – <br> još traje' end local finIso = dohvatiISO(fin) if finIso == nil then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return prem .. ' – <br> još traje' end local py, pm, pd, phd = parseParts(premIso) local fy, fm, fd, fhd = parseParts(finIso) if not py or not fy then return prem .. ' – <br> ' .. fin end if pm == nil and fm == nil then if py == fy then return tostring(py) .. '.' else return tostring(py) .. '. – ' .. tostring(fy) .. '.' end end if phd and fhd and pm and fm then if py == fy and pm == fm and pd == fd then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return pDayMonth .. ' – <br> ' .. fin else return prem .. ' – <br> ' .. fin end elseif py == fy then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return pDayMonth .. ' – <br> ' .. fin else local cleaned = prem:gsub(' %d+%.$', '') return cleaned .. ' – <br> ' .. fin end else return prem .. ' – <br> ' .. fin end else return prem .. ' – <br> ' .. fin end end return p 49wodncpr517zu0qbmlbhqp62ywf4dp 768685 768684 2026-10-17T10:07:50Z Flamingounicorn 69662 768685 Scribunto text/plain local p = {} local function killMarkers(s) if not s then return s end s = tostring(s) s = s:gsub('<[^>]+>', '') s = s:gsub('%[%[[^%|%]]-%]%]', function(x) local m = x:match('%[%[([^%|%]]+)%]%]') if m then return m end return x end) s = s:gsub('%[%[[^%|]+%|([^%]]+)%]%]', '%1') return s end local function trim(s) if not s then return s end s = tostring(s) s = s:gsub('^%s+', ''):gsub('%s+$', '') return s end local daniUMjesecu = {['01']=31,['02']=28,['03']=31,['04']=30,['05']=31,['06']=30,['07']=31,['08']=31,['09']=30,['10']=31,['11']=30,['12']=31} local function prijestupna(g) if not g then return false end local gg = tonumber(g) if not gg then return false end if gg % 400 == 0 then return true end if gg % 100 == 0 then return false end if gg % 4 == 0 then return true end return false end local function normalizeMonth(m) if not m then return nil end local ml = m:lower() ml = ml:gsub('č', 'c'):gsub('ć', 'c'):gsub('ž', 'z'):gsub('š', 's'):gsub('đ', 'd') ml = ml:gsub('äŤ', 'c'):gsub('ä‡', 'c'):gsub('ĺľ', 'z'):gsub('ĺˇ', 's'):gsub('ä‘', 'd') -- from original encodings if any if ml == 'sijecnja' or ml == 'siječnja' then return '01' end if ml == 'veljace' or ml == 'veljače' then return '02' end if ml == 'ozujka' or ml == 'ožujka' then return '03' end if ml == 'travnja' then return '04' end if ml == 'svibnja' then return '05' end if ml == 'lipnja' then return '06' end if ml == 'srpnja' then return '07' end if ml == 'kolovoza' then return '08' end if ml == 'rujna' then return '09' end if ml == 'listopada' or ml == 'listopad' then return '10' end if ml == 'studenoga' or ml == 'studenog' then return '11' end if ml == 'prosinca' or ml == 'prosinac' then return '12' end return nil end local function dohvatiISO(s) if not s or s == '' then return nil end local t = killMarkers(trim(s)) if not t then return nil end -- full date local dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if not dan then dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ]+)%s+(%d+)%.$') end if dan and mjesec and godina then local brg = tonumber(godina) if brg and brg >= 1000 and brg <= 9999 then local mbr = normalizeMonth(mjesec) if mbr then local maxd = daniUMjesecu[mbr] if mbr == '02' and prijestupna(brg) then maxd = 29 end local brd = tonumber(dan) if brd and brd >= 1 and brd <= maxd then return godina .. '-' .. mbr .. '-' .. string.format('%02d', brd) end end end end -- month year local mjesec2, godina2 = t:match('^([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if mjesec2 and godina2 then local brg2 = tonumber(godina2) if brg2 and brg2 >= 1000 and brg2 <= 9999 then local mbr2 = normalizeMonth(mjesec2) if mbr2 then return godina2 .. '-' .. mbr2 end end end -- year local godina3 = t:match('^(%d+)%.$') if godina3 then local brg3 = tonumber(godina3) if brg3 and brg3 >= 1000 and brg3 <= 9999 then return godina3 end end return nil end local function getCurrent() local y = tonumber(os.date('%Y')) or 0 local m = tonumber(os.date('%m')) or 0 local d = tonumber(os.date('%d')) or 0 return y, m, d end local function parseParts(iso) if not iso then return nil end local y, m, d = iso:match('^(%d+)-(%d+)-(%d+)$') if y and m and d then return tonumber(y), tonumber(m), tonumber(d), true end local y2, m2 = iso:match('^(%d+)-(%d+)$') if y2 and m2 then return tonumber(y2), tonumber(m2), nil, false end local y3 = iso:match('^(%d+)$') if y3 then return tonumber(y3), nil, nil, false end return nil end local function isFuture(iso) if not iso then return false end local cy, cm, cd = getCurrent() local py, pm, pd, phd = parseParts(iso) if not py then return false end if phd and pd and pm then if py > cy then return true end if py == cy and pm > cm then return true end if py == cy and pm == cm and pd > cd then return true end return false end if pm then if py > cy then return true end if py == cy and pm > cm then return true end return false end if py > cy then return true end return false end function p.prikazivanje(frame) local args = frame.args local prem = args[1] or args.premijera or '' local fin = args[2] or args.finale or '' prem = trim(prem) fin = trim(fin) local premIso = dohvatiISO(prem) if premIso and isFuture(premIso) then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Nadolazeći televizijski program') end return prem end if fin == '' then if prem ~= '' then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return prem .. ' – <br> još traje' end return '' end local finIso = dohvatiISO(fin) if finIso == nil then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return prem .. ' – <br> još traje' end local py, pm, pd, phd = parseParts(premIso) local fy, fm, fd, fhd = parseParts(finIso) if not py or not fy then return prem .. ' – <br> ' .. fin end if pm == nil and fm == nil then if py == fy then return tostring(py) .. '.' else return tostring(py) .. '. – ' .. tostring(fy) .. '.' end end if phd and fhd and pm and fm then if py == fy and pm == fm and pd == fd then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return pDayMonth .. ' – <br> ' .. fin else return prem .. ' – <br> ' .. fin end elseif py == fy then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return pDayMonth .. ' – <br> ' .. fin else local cleaned = prem:gsub(' %d+%.$', '') return cleaned .. ' – <br> ' .. fin end else return prem .. ' – <br> ' .. fin end else return prem .. ' – <br> ' .. fin end end return p 53f7960llm30tx45kxocbg2022c42ix 768691 768685 2026-10-17T10:17:24Z Flamingounicorn 69662 768691 Scribunto text/plain local p = {} local formatiraj = require('Modul:Formatiraj datum') local function killMarkers(s) if not s then return s end s = tostring(s) s = s:gsub('<[^>]+>', '') s = s:gsub('%[%[[^%|%]]-%]%]', function(x) local m = x:match('%[%[([^%|%]]+)%]%]') if m then return m end return x end) s = s:gsub('%[%[[^%|]+%|([^%]]+)%]%]', '%1') return s end local function trim(s) if not s then return s end s = tostring(s) s = s:gsub('^%s+', ''):gsub('%s+$', '') return s end local daniUMjesecu = {['01']=31,['02']=28,['03']=31,['04']=30,['05']=31,['06']=30,['07']=31,['08']=31,['09']=30,['10']=31,['11']=30,['12']=31} local function prijestupna(g) if not g then return false end local gg = tonumber(g) if not gg then return false end if gg % 400 == 0 then return true end if gg % 100 == 0 then return false end if gg % 4 == 0 then return true end return false end local function normalizeMonth(m) if not m then return nil end local ml = m:lower() ml = ml:gsub('č', 'c'):gsub('ć', 'c'):gsub('ž', 'z'):gsub('š', 's'):gsub('đ', 'd') ml = ml:gsub('äŤ', 'c'):gsub('ä‡', 'c'):gsub('ĺľ', 'z'):gsub('ĺˇ', 's'):gsub('ä‘', 'd') if ml == 'sijecnja' or ml == 'siječnja' then return '01' end if ml == 'veljace' or ml == 'veljače' then return '02' end if ml == 'ozujka' or ml == 'ožujka' then return '03' end if ml == 'travnja' then return '04' end if ml == 'svibnja' then return '05' end if ml == 'lipnja' then return '06' end if ml == 'srpnja' then return '07' end if ml == 'kolovoza' then return '08' end if ml == 'rujna' then return '09' end if ml == 'listopada' or ml == 'listopad' then return '10' end if ml == 'studenoga' or ml == 'studenog' then return '11' end if ml == 'prosinca' or ml == 'prosinac' then return '12' end return nil end local function dohvatiISO(s) if not s or s == '' then return nil end local t = killMarkers(trim(s)) if not t then return nil end local dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if not dan then dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ]+)%s+(%d+)%.$') end if dan and mjesec and godina then local brg = tonumber(godina) if brg and brg >= 1000 and brg <= 9999 then local mbr = normalizeMonth(mjesec) if mbr then local maxd = daniUMjesecu[mbr] if mbr == '02' and prijestupna(brg) then maxd = 29 end local brd = tonumber(dan) if brd and brd >= 1 and brd <= maxd then return godina .. '-' .. mbr .. '-' .. string.format('%02d', brd) end end end end local mjesec2, godina2 = t:match('^([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if mjesec2 and godina2 then local brg2 = tonumber(godina2) if brg2 and brg2 >= 1000 and brg2 <= 9999 then local mbr2 = normalizeMonth(mjesec2) if mbr2 then return godina2 .. '-' .. mbr2 end end end local godina3 = t:match('^(%d+)%.$') if godina3 then local brg3 = tonumber(godina3) if brg3 and brg3 >= 1000 and brg3 <= 9999 then return godina3 end end return nil end local function getCurrent() local y = tonumber(os.date('%Y')) or 0 local m = tonumber(os.date('%m')) or 0 local d = tonumber(os.date('%d')) or 0 return y, m, d end local function parseParts(iso) if not iso then return nil end local y, m, d = iso:match('^(%d+)-(%d+)-(%d+)$') if y and m and d then return tonumber(y), tonumber(m), tonumber(d), true end local y2, m2 = iso:match('^(%d+)-(%d+)$') if y2 and m2 then return tonumber(y2), tonumber(m2), nil, false end local y3 = iso:match('^(%d+)$') if y3 then return tonumber(y3), nil, nil, false end return nil end local function isFuture(iso) if not iso then return false end local cy, cm, cd = getCurrent() local py, pm, pd, phd = parseParts(iso) if not py then return false end if phd and pd and pm then if py > cy then return true end if py == cy and pm > cm then return true end if py == cy and pm == cm and pd > cd then return true end return false end if pm then if py > cy then return true end if py == cy and pm > cm then return true end return false end if py > cy then return true end return false end local function addDtstart(s) if not s or s == '' then return s end -- use formatiraj datum's formatDateWithClass or main? -- formatDateWithClass returns span + space + text if class valid; or just '' if not? if formatiraj and formatiraj.formatDateWithClass then local res = formatiraj.formatDateWithClass({args={s, 'dtstart'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.main then local res = formatiraj.main({args={s, 'dtstart'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.televizija then local res = formatiraj.televizija({args={s, 'dtstart'}}) if res and res ~= '' then return res end end return s end local function addDtend(s) if not s or s == '' then return s end if formatiraj and formatiraj.formatDateWithClass then local res = formatiraj.formatDateWithClass({args={s, 'dtend'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.main then local res = formatiraj.main({args={s, 'dtend'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.televizija then local res = formatiraj.televizija({args={s, 'dtend'}}) if res and res ~= '' then return res end end return s end function p.prikazivanje(frame) local args = frame.args local prem = args[1] or args.premijera or '' local fin = args[2] or args.finale or '' prem = trim(prem) fin = trim(fin) local premIso = dohvatiISO(prem) if premIso and isFuture(premIso) then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Nadolazeći televizijski program') end return addDtstart(prem) end if fin == '' then if prem ~= '' then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return addDtstart(prem) .. ' – <br> još traje' end return '' end local finIso = dohvatiISO(fin) if finIso == nil then if prem ~= '' then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return addDtstart(prem) .. ' – <br> još traje' end return '' end local py, pm, pd, phd = parseParts(premIso) local fy, fm, fd, fhd = parseParts(finIso) if not py or not fy then return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end if pm == nil and fm == nil then if py == fy then return tostring(py) .. '.' else return tostring(py) .. '. – ' .. tostring(fy) .. '.' end end if phd and fhd and pm and fm then if py == fy and pm == fm and pd == fd then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return addDtstart(pDayMonth) .. ' – <br> ' .. addDtend(fin) else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end elseif py == fy then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return addDtstart(pDayMonth) .. ' – <br> ' .. addDtend(fin) else local cleaned = prem:gsub(' %d+%.$', '') return addDtstart(cleaned) .. ' – <br> ' .. addDtend(fin) end else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end end return p trydv2u0yo1k06l8d8zglrzqxc2zud0 768692 768691 2026-10-17T10:17:40Z Flamingounicorn 69662 768692 Scribunto text/plain local p = {} local formatiraj = require('Module:Formatiraj datum') local function killMarkers(s) if not s then return s end s = tostring(s) s = s:gsub('<[^>]+>', '') s = s:gsub('%[%[[^%|%]]-%]%]', function(x) local m = x:match('%[%[([^%|%]]+)%]%]') if m then return m end return x end) s = s:gsub('%[%[[^%|]+%|([^%]]+)%]%]', '%1') return s end local function trim(s) if not s then return s end s = tostring(s) s = s:gsub('^%s+', ''):gsub('%s+$', '') return s end local daniUMjesecu = {['01']=31,['02']=28,['03']=31,['04']=30,['05']=31,['06']=30,['07']=31,['08']=31,['09']=30,['10']=31,['11']=30,['12']=31} local function prijestupna(g) if not g then return false end local gg = tonumber(g) if not gg then return false end if gg % 400 == 0 then return true end if gg % 100 == 0 then return false end if gg % 4 == 0 then return true end return false end local function normalizeMonth(m) if not m then return nil end local ml = m:lower() ml = ml:gsub('č', 'c'):gsub('ć', 'c'):gsub('ž', 'z'):gsub('š', 's'):gsub('đ', 'd') ml = ml:gsub('äŤ', 'c'):gsub('ä‡', 'c'):gsub('ĺľ', 'z'):gsub('ĺˇ', 's'):gsub('ä‘', 'd') if ml == 'sijecnja' or ml == 'siječnja' then return '01' end if ml == 'veljace' or ml == 'veljače' then return '02' end if ml == 'ozujka' or ml == 'ožujka' then return '03' end if ml == 'travnja' then return '04' end if ml == 'svibnja' then return '05' end if ml == 'lipnja' then return '06' end if ml == 'srpnja' then return '07' end if ml == 'kolovoza' then return '08' end if ml == 'rujna' then return '09' end if ml == 'listopada' or ml == 'listopad' then return '10' end if ml == 'studenoga' or ml == 'studenog' then return '11' end if ml == 'prosinca' or ml == 'prosinac' then return '12' end return nil end local function dohvatiISO(s) if not s or s == '' then return nil end local t = killMarkers(trim(s)) if not t then return nil end local dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if not dan then dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ]+)%s+(%d+)%.$') end if dan and mjesec and godina then local brg = tonumber(godina) if brg and brg >= 1000 and brg <= 9999 then local mbr = normalizeMonth(mjesec) if mbr then local maxd = daniUMjesecu[mbr] if mbr == '02' and prijestupna(brg) then maxd = 29 end local brd = tonumber(dan) if brd and brd >= 1 and brd <= maxd then return godina .. '-' .. mbr .. '-' .. string.format('%02d', brd) end end end end local mjesec2, godina2 = t:match('^([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if mjesec2 and godina2 then local brg2 = tonumber(godina2) if brg2 and brg2 >= 1000 and brg2 <= 9999 then local mbr2 = normalizeMonth(mjesec2) if mbr2 then return godina2 .. '-' .. mbr2 end end end local godina3 = t:match('^(%d+)%.$') if godina3 then local brg3 = tonumber(godina3) if brg3 and brg3 >= 1000 and brg3 <= 9999 then return godina3 end end return nil end local function getCurrent() local y = tonumber(os.date('%Y')) or 0 local m = tonumber(os.date('%m')) or 0 local d = tonumber(os.date('%d')) or 0 return y, m, d end local function parseParts(iso) if not iso then return nil end local y, m, d = iso:match('^(%d+)-(%d+)-(%d+)$') if y and m and d then return tonumber(y), tonumber(m), tonumber(d), true end local y2, m2 = iso:match('^(%d+)-(%d+)$') if y2 and m2 then return tonumber(y2), tonumber(m2), nil, false end local y3 = iso:match('^(%d+)$') if y3 then return tonumber(y3), nil, nil, false end return nil end local function isFuture(iso) if not iso then return false end local cy, cm, cd = getCurrent() local py, pm, pd, phd = parseParts(iso) if not py then return false end if phd and pd and pm then if py > cy then return true end if py == cy and pm > cm then return true end if py == cy and pm == cm and pd > cd then return true end return false end if pm then if py > cy then return true end if py == cy and pm > cm then return true end return false end if py > cy then return true end return false end local function addDtstart(s) if not s or s == '' then return s end -- use formatiraj datum's formatDateWithClass or main? -- formatDateWithClass returns span + space + text if class valid; or just '' if not? if formatiraj and formatiraj.formatDateWithClass then local res = formatiraj.formatDateWithClass({args={s, 'dtstart'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.main then local res = formatiraj.main({args={s, 'dtstart'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.televizija then local res = formatiraj.televizija({args={s, 'dtstart'}}) if res and res ~= '' then return res end end return s end local function addDtend(s) if not s or s == '' then return s end if formatiraj and formatiraj.formatDateWithClass then local res = formatiraj.formatDateWithClass({args={s, 'dtend'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.main then local res = formatiraj.main({args={s, 'dtend'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.televizija then local res = formatiraj.televizija({args={s, 'dtend'}}) if res and res ~= '' then return res end end return s end function p.prikazivanje(frame) local args = frame.args local prem = args[1] or args.premijera or '' local fin = args[2] or args.finale or '' prem = trim(prem) fin = trim(fin) local premIso = dohvatiISO(prem) if premIso and isFuture(premIso) then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Nadolazeći televizijski program') end return addDtstart(prem) end if fin == '' then if prem ~= '' then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return addDtstart(prem) .. ' – <br> još traje' end return '' end local finIso = dohvatiISO(fin) if finIso == nil then if prem ~= '' then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return addDtstart(prem) .. ' – <br> još traje' end return '' end local py, pm, pd, phd = parseParts(premIso) local fy, fm, fd, fhd = parseParts(finIso) if not py or not fy then return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end if pm == nil and fm == nil then if py == fy then return tostring(py) .. '.' else return tostring(py) .. '. – ' .. tostring(fy) .. '.' end end if phd and fhd and pm and fm then if py == fy and pm == fm and pd == fd then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return addDtstart(pDayMonth) .. ' – <br> ' .. addDtend(fin) else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end elseif py == fy then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return addDtstart(pDayMonth) .. ' – <br> ' .. addDtend(fin) else local cleaned = prem:gsub(' %d+%.$', '') return addDtstart(cleaned) .. ' – <br> ' .. addDtend(fin) end else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end end return p ikzx8en2kfgb65oqsd7fii2gn9aowd8 768693 768692 2026-10-17T10:37:51Z Flamingounicorn 69662 768693 Scribunto text/plain local p = {} local formatiraj = require('Modul:Formatiraj datum') local function killMarkers(s) if not s then return s end s = tostring(s) s = s:gsub('<[^>]+>', '') s = s:gsub('%[%[[^%|%]]-%]%]', function(x) local m = x:match('%[%[([^%|%]]+)%]%]') if m then return m end return x end) s = s:gsub('%[%[[^%|]+%|([^%]]+)%]%]', '%1') return s end local function trim(s) if not s then return s end s = tostring(s) s = s:gsub('^%s+', ''):gsub('%s+$', '') return s end local daniUMjesecu = {['01']=31,['02']=28,['03']=31,['04']=30,['05']=31,['06']=30,['07']=31,['08']=31,['09']=30,['10']=31,['11']=30,['12']=31} local function prijestupna(g) if not g then return false end local gg = tonumber(g) if not gg then return false end if gg % 400 == 0 then return true end if gg % 100 == 0 then return false end if gg % 4 == 0 then return true end return false end local function normalizeMonth(m) if not m then return nil end local ml = m:lower() ml = ml:gsub('č', 'c'):gsub('ć', 'c'):gsub('ž', 'z'):gsub('š', 's'):gsub('đ', 'd') ml = ml:gsub('äŤ', 'c'):gsub('ä‡', 'c'):gsub('ĺľ', 'z'):gsub('ĺˇ', 's'):gsub('ä‘', 'd') if ml == 'sijecnja' or ml == 'siječnja' then return '01' end if ml == 'veljace' or ml == 'veljače' then return '02' end if ml == 'ozujka' or ml == 'ožujka' then return '03' end if ml == 'travnja' then return '04' end if ml == 'svibnja' then return '05' end if ml == 'lipnja' then return '06' end if ml == 'srpnja' then return '07' end if ml == 'kolovoza' then return '08' end if ml == 'rujna' then return '09' end if ml == 'listopada' or ml == 'listopad' then return '10' end if ml == 'studenoga' or ml == 'studenog' then return '11' end if ml == 'prosinca' or ml == 'prosinac' then return '12' end return nil end local function dohvatiISO(s) if not s or s == '' then return nil end local t = killMarkers(trim(s)) if not t then return nil end local dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if not dan then dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ]+)%s+(%d+)%.$') end if dan and mjesec and godina then local brg = tonumber(godina) if brg and brg >= 1000 and brg <= 9999 then local mbr = normalizeMonth(mjesec) if mbr then local maxd = daniUMjesecu[mbr] if mbr == '02' and prijestupna(brg) then maxd = 29 end local brd = tonumber(dan) if brd and brd >= 1 and brd <= maxd then return godina .. '-' .. mbr .. '-' .. string.format('%02d', brd) end end end end local mjesec2, godina2 = t:match('^([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if mjesec2 and godina2 then local brg2 = tonumber(godina2) if brg2 and brg2 >= 1000 and brg2 <= 9999 then local mbr2 = normalizeMonth(mjesec2) if mbr2 then return godina2 .. '-' .. mbr2 end end end local godina3 = t:match('^(%d+)%.$') if godina3 then local brg3 = tonumber(godina3) if brg3 and brg3 >= 1000 and brg3 <= 9999 then return godina3 end end return nil end local function getCurrent() local y = tonumber(os.date('%Y')) or 0 local m = tonumber(os.date('%m')) or 0 local d = tonumber(os.date('%d')) or 0 return y, m, d end local function parseParts(iso) if not iso then return nil end local y, m, d = iso:match('^(%d+)-(%d+)-(%d+)$') if y and m and d then return tonumber(y), tonumber(m), tonumber(d), true end local y2, m2 = iso:match('^(%d+)-(%d+)$') if y2 and m2 then return tonumber(y2), tonumber(m2), nil, false end local y3 = iso:match('^(%d+)$') if y3 then return tonumber(y3), nil, nil, false end return nil end local function isFuture(iso) if not iso then return false end local cy, cm, cd = getCurrent() local py, pm, pd, phd = parseParts(iso) if not py then return false end if phd and pd and pm then if py > cy then return true end if py == cy and pm > cm then return true end if py == cy and pm == cm and pd > cd then return true end return false end if pm then if py > cy then return true end if py == cy and pm > cm then return true end return false end if py > cy then return true end return false end local function addDtstart(s) if not s or s == '' then return s end if formatiraj and formatiraj.televizija then local res = formatiraj.televizija({args={s, 'dtstart'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.main then local res = formatiraj.main({args={s, 'dtstart'}}) if res and res ~= '' then return res end end return s end local function addDtend(s) if not s or s == '' then return s end if formatiraj and formatiraj.televizija then local res = formatiraj.televizija({args={s, 'dtend'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.main then local res = formatiraj.main({args={s, 'dtend'}}) if res and res ~= '' then return res end end return s end function p.prikazivanje(frame) local args = frame.args local prem = args[1] or args.premijera or '' local fin = args[2] or args.finale or '' prem = trim(prem) fin = trim(fin) local premIso = dohvatiISO(prem) if premIso and isFuture(premIso) then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Nadolazeći televizijski program') end return addDtstart(prem) end if fin == '' then if prem ~= '' then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return addDtstart(prem) .. ' – <br> još traje' end return '' end local finIso = dohvatiISO(fin) if finIso == nil then if prem ~= '' then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return addDtstart(prem) .. ' – <br> još traje' end return '' end local py, pm, pd, phd = parseParts(premIso) local fy, fm, fd, fhd = parseParts(finIso) if not py or not fy then return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end if pm == nil and fm == nil then if py == fy then return tostring(py) .. '.' else return tostring(py) .. '. – ' .. tostring(fy) .. '.' end end if phd and fhd and pm and fm then if py == fy and pm == fm and pd == fd then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return addDtstart(pDayMonth) .. ' – <br> ' .. addDtend(fin) else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end elseif py == fy then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return addDtstart(pDayMonth) .. ' – <br> ' .. addDtend(fin) else local cleaned = prem:gsub(' %d+%.$', '') return addDtstart(cleaned) .. ' – <br> ' .. addDtend(fin) end else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end end return p jznmtf3u927obqad11bspnewyzwtw5u 768694 768693 2026-10-17T10:37:59Z Flamingounicorn 69662 768694 Scribunto text/plain local p = {} local formatiraj = require('Module:Formatiraj datum') local function killMarkers(s) if not s then return s end s = tostring(s) s = s:gsub('<[^>]+>', '') s = s:gsub('%[%[[^%|%]]-%]%]', function(x) local m = x:match('%[%[([^%|%]]+)%]%]') if m then return m end return x end) s = s:gsub('%[%[[^%|]+%|([^%]]+)%]%]', '%1') return s end local function trim(s) if not s then return s end s = tostring(s) s = s:gsub('^%s+', ''):gsub('%s+$', '') return s end local daniUMjesecu = {['01']=31,['02']=28,['03']=31,['04']=30,['05']=31,['06']=30,['07']=31,['08']=31,['09']=30,['10']=31,['11']=30,['12']=31} local function prijestupna(g) if not g then return false end local gg = tonumber(g) if not gg then return false end if gg % 400 == 0 then return true end if gg % 100 == 0 then return false end if gg % 4 == 0 then return true end return false end local function normalizeMonth(m) if not m then return nil end local ml = m:lower() ml = ml:gsub('č', 'c'):gsub('ć', 'c'):gsub('ž', 'z'):gsub('š', 's'):gsub('đ', 'd') ml = ml:gsub('äŤ', 'c'):gsub('ä‡', 'c'):gsub('ĺľ', 'z'):gsub('ĺˇ', 's'):gsub('ä‘', 'd') if ml == 'sijecnja' or ml == 'siječnja' then return '01' end if ml == 'veljace' or ml == 'veljače' then return '02' end if ml == 'ozujka' or ml == 'ožujka' then return '03' end if ml == 'travnja' then return '04' end if ml == 'svibnja' then return '05' end if ml == 'lipnja' then return '06' end if ml == 'srpnja' then return '07' end if ml == 'kolovoza' then return '08' end if ml == 'rujna' then return '09' end if ml == 'listopada' or ml == 'listopad' then return '10' end if ml == 'studenoga' or ml == 'studenog' then return '11' end if ml == 'prosinca' or ml == 'prosinac' then return '12' end return nil end local function dohvatiISO(s) if not s or s == '' then return nil end local t = killMarkers(trim(s)) if not t then return nil end local dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if not dan then dan, mjesec, godina = t:match('^(%d+)%.%s+([%ačćžšđČĆŽŠĐ]+)%s+(%d+)%.$') end if dan and mjesec and godina then local brg = tonumber(godina) if brg and brg >= 1000 and brg <= 9999 then local mbr = normalizeMonth(mjesec) if mbr then local maxd = daniUMjesecu[mbr] if mbr == '02' and prijestupna(brg) then maxd = 29 end local brd = tonumber(dan) if brd and brd >= 1 and brd <= maxd then return godina .. '-' .. mbr .. '-' .. string.format('%02d', brd) end end end end local mjesec2, godina2 = t:match('^([%ačćžšđČĆŽŠĐ%.]+)%s+(%d+)%.$') if mjesec2 and godina2 then local brg2 = tonumber(godina2) if brg2 and brg2 >= 1000 and brg2 <= 9999 then local mbr2 = normalizeMonth(mjesec2) if mbr2 then return godina2 .. '-' .. mbr2 end end end local godina3 = t:match('^(%d+)%.$') if godina3 then local brg3 = tonumber(godina3) if brg3 and brg3 >= 1000 and brg3 <= 9999 then return godina3 end end return nil end local function getCurrent() local y = tonumber(os.date('%Y')) or 0 local m = tonumber(os.date('%m')) or 0 local d = tonumber(os.date('%d')) or 0 return y, m, d end local function parseParts(iso) if not iso then return nil end local y, m, d = iso:match('^(%d+)-(%d+)-(%d+)$') if y and m and d then return tonumber(y), tonumber(m), tonumber(d), true end local y2, m2 = iso:match('^(%d+)-(%d+)$') if y2 and m2 then return tonumber(y2), tonumber(m2), nil, false end local y3 = iso:match('^(%d+)$') if y3 then return tonumber(y3), nil, nil, false end return nil end local function isFuture(iso) if not iso then return false end local cy, cm, cd = getCurrent() local py, pm, pd, phd = parseParts(iso) if not py then return false end if phd and pd and pm then if py > cy then return true end if py == cy and pm > cm then return true end if py == cy and pm == cm and pd > cd then return true end return false end if pm then if py > cy then return true end if py == cy and pm > cm then return true end return false end if py > cy then return true end return false end local function addDtstart(s) if not s or s == '' then return s end if formatiraj and formatiraj.televizija then local res = formatiraj.televizija({args={s, 'dtstart'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.main then local res = formatiraj.main({args={s, 'dtstart'}}) if res and res ~= '' then return res end end return s end local function addDtend(s) if not s or s == '' then return s end if formatiraj and formatiraj.televizija then local res = formatiraj.televizija({args={s, 'dtend'}}) if res and res ~= '' then return res end end if formatiraj and formatiraj.main then local res = formatiraj.main({args={s, 'dtend'}}) if res and res ~= '' then return res end end return s end function p.prikazivanje(frame) local args = frame.args local prem = args[1] or args.premijera or '' local fin = args[2] or args.finale or '' prem = trim(prem) fin = trim(fin) local premIso = dohvatiISO(prem) if premIso and isFuture(premIso) then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Nadolazeći televizijski program') end return addDtstart(prem) end if fin == '' then if prem ~= '' then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return addDtstart(prem) .. ' – <br> još traje' end return '' end local finIso = dohvatiISO(fin) if finIso == nil then if prem ~= '' then local ns = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().namespace) or 0 if ns == 0 and mw and mw.addCategory then mw.addCategory('Televizijski program u tijeku') end return addDtstart(prem) .. ' – <br> još traje' end return '' end local py, pm, pd, phd = parseParts(premIso) local fy, fm, fd, fhd = parseParts(finIso) if not py or not fy then return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end if pm == nil and fm == nil then if py == fy then return tostring(py) .. '.' else return tostring(py) .. '. – ' .. tostring(fy) .. '.' end end if phd and fhd and pm and fm then if py == fy and pm == fm and pd == fd then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return addDtstart(pDayMonth) .. ' – <br> ' .. addDtend(fin) else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end elseif py == fy then local pDayMonth = prem:match('^(%d+%.%s+[^%d%s][^%d]*)') if pDayMonth then pDayMonth = trim(pDayMonth) return addDtstart(pDayMonth) .. ' – <br> ' .. addDtend(fin) else local cleaned = prem:gsub(' %d+%.$', '') return addDtstart(cleaned) .. ' – <br> ' .. addDtend(fin) end else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end else return addDtstart(prem) .. ' – <br> ' .. addDtend(fin) end end return p oxj7zes3s1tmysvv6k9ea8av7x8cmi5 768708 768694 2026-10-17T10:59:26Z Flamingounicorn 69662 768708 Scribunto text/plain local p = {} local function pageExists(title) if not title or title == '' then return false end local t = mw and mw.title and mw.title.new(title) if not t then return false end return t.exists end function p.prethodna(frame) local title = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().text) or '' if title == '' then return '' end local base, number = title:match('^(.-)%s*%((%d+)%.%s*sezona%)$') if not base or not number then return '' end local prevNum = tonumber(number) - 1 if prevNum < 1 then return '' end local linkTitle = string.format('%s (%d. sezona)', base, prevNum) if not pageExists(linkTitle) then return '' end return string.format('[[%s|%d. sezona]]', linkTitle, prevNum) end function p.sljedeca(frame) local title = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().text) or '' if title == '' then return '' end local base, number = title:match('^(.-)%s*%((%d+)%.%s*sezona%)$') if not base or not number then return '' end local nextNum = tonumber(number) + 1 local linkTitle = string.format('%s (%d. sezona)', base, nextNum) if not pageExists(linkTitle) then return '' end return string.format('[[%s|%d. sezona]]', linkTitle, nextNum) end function p.popisepizoda(frame) local title = (mw and mw.title and mw.title.getCurrentTitle and mw.title.getCurrentTitle().text) or '' if title == '' then return '' end local base = title:match('^(.-)%s*%b()') if not base then return '' end base = base:gsub('^%s+', ''):gsub('%s+$', '') local candidates = { string.format('Popis epizoda serije %s', base), string.format('Popis epizoda emisije %s', base), string.format('Dodatak:Popis epizoda serije %s', base), string.format('Dodatak:Popis epizoda emisije %s', base), string.format('Popis epizoda televizijske serije %s', base) } for _, c in ipairs(candidates) do if pageExists(c) then return string.format('[[%s|Popis epizoda]]', c) end end return '' end function p.brojsezone(frame) local args = frame.args or {} local prethodna = args[1] or args.prethodna or '' local sljedeca = args[2] or args.sljedeca or args.sljedeca or args.sljedece or '' -- also try to get auto if empty if prethodna == '' then prethodna = p.prethodna(frame) end if sljedeca == '' then sljedeca = p.sljedeca(frame) end if prethodna == '' and sljedeca == '' then return '' end local left = '' if prethodna ~= '' then left = '←&nbsp;\'\'\'Prethodna\'\'\'<br />' .. prethodna end local right = '' if sljedeca ~= '' then right = '\'\'\'Sljedeća\'\'\'&nbsp;→<br />' .. sljedeca end if left ~= '' and right ~= '' then return '{{(}} style="width:100%;" {{!}} style="width:50%; text-align:left;" {{!}} ' .. left .. ' {{!}} style="width:50%; text-align:right;" {{!}} ' .. right .. ' {{!)}}' elseif left ~= '' then return '{{(}} style="width:100%;" {{!}} style="width:100%; text-align:left;" {{!}} ' .. left .. ' {{!)}}' elseif right ~= '' then return '{{(}} style="width:100%;" {{!}} style="width:100%; text-align:right;" {{!}} ' .. right .. ' {{!)}}' else return '' end end return p 6da1lbo6j4say6i1971glrtgptplhdm 768710 768708 2026-10-17T11:17:00Z Flamingounicorn 69662 768710 Scribunto text/plain local p = {} function p.kronologija(frame) local args = frame.args if args.prethodna and args.prethodna ~= '' then return args.prethodna end if args.sljedeca and args.sljedeca ~= '' then return args.sljedeca end local title = mw.title.getCurrentTitle().text local serija, sezona = title:match("^(.-)%s*%((%d+)%. sezona%)$") if not serija then return '' end sezona = tonumber(sezona) if args.prethodna ~= nil then local broj = sezona - 1 if broj > 0 then local stranica = string.format("%s (%d. sezona)", serija, broj) if mw.title.new(stranica).exists then return string.format("[[%s|%d. sezona]]", stranica, broj) end end end if args.sljedeca ~= nil then local broj = sezona + 1 local stranica = string.format("%s (%d. sezona)", serija, broj) if mw.title.new(stranica).exists then return string.format("[[%s|%d. sezona]]", stranica, broj) end end return '' end return p sdqhu7ufe0jherbe4kldcdbnmanrptx Template:Infookvir TV sezona 10 179300 768686 2026-10-17T10:09:23Z Flamingounicorn 69662 n. 768686 wikitext text/x-wiki <includeonly>{{Infobox | autoheaders = y | header1 = Prvo prikazivanje | label2 = Mreža | data2 = {{{mreža|}}} | label3 = Prikazivanje | data3 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera|}}}|finale={{{finale|}}}}} }}</includeonly> 1jkwrph7cvxjygcfqkh8gjsfoq0l2fp 768688 768686 2026-10-17T10:10:48Z Flamingounicorn 69662 768688 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | autoheaders = y | header1 = Prvo prikazivanje | label2 = Mreža | data2 = {{{mreža|}}} | label3 = Prikazivanje | data3 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera|}}}|finale={{{finale|}}}}} }}</includeonly> 5ymed6otmcvzg02kc5pt93t9v4zzz7d 768689 768688 2026-10-17T10:15:22Z Flamingounicorn 69662 768689 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | autoheaders = y | header1 = Prvo prikazivanje | label2 = Mreža | data2 = {{{mreža|}}} | label3 = Prikazivanje | data3 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera|}}}|finale={{{finale|}}}}} | header4 = Prikazivanje u Hrvatskoj | label5 = Mreža | data5 = {{{u_hrv|}}} | label6 = Prikazivanje | data6 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera_hrv|}}}|finale={{{finale_hrv|}}}}} }}</includeonly> l2hdndglug25x5tykpb3b9nbvu1cuh7 768700 768689 2026-10-17T10:39:36Z Flamingounicorn 69662 768700 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | autoheaders = y | headerstyle = padding: 0.25em 1em; line-height: 1.5em | header1 = Prvo prikazivanje | label2 = Mreža | data2 = {{{mreža|}}} | label3 = Prikazivanje | data3 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera|}}}|finale={{{finale|}}}}} | header4 = Prikazivanje u Hrvatskoj | label5 = Mreža | data5 = {{{u_hrv|}}} | label6 = Prikazivanje | data6 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera_hrv|}}}|finale={{{finale_hrv|}}}}} }}</includeonly> 3bynidda0pykjg1ey5ai4j9axdosj8j 768701 768700 2026-10-17T10:40:46Z Flamingounicorn 69662 768701 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | autoheaders = y | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF | header1 = Prvo prikazivanje | label2 = Mreža | data2 = {{{mreža|}}} | label3 = Prikazivanje | data3 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera|}}}|finale={{{finale|}}}}} | header4 = Prikazivanje u Hrvatskoj | label5 = Mreža | data5 = {{{u_hrv|}}} | label6 = Prikazivanje | data6 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera_hrv|}}}|finale={{{finale_hrv|}}}}} }}</includeonly> bjpwplvhpmklnfmdz9l6quj6pvneajq 768702 768701 2026-10-17T10:45:23Z Flamingounicorn 69662 768702 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | above = {{If empty|{{{ime_serije|}}}|{{PAGENAMEBASE}}}} | abovestyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF; text-align:center | autoheaders = y | header1 = Prvo prikazivanje | label2 = Mreža | data2 = {{{mreža|}}} | label3 = Prikazivanje | data3 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera|}}}|finale={{{finale|}}}}} | header4 = Prikazivanje u Hrvatskoj | label5 = Mreža | data5 = {{{u_hrv|}}} | label6 = Prikazivanje | data6 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera_hrv|}}}|finale={{{finale_hrv|}}}}} }}</includeonly> {{Infookvir TV sezona | ime_serije = ''ime_serije'' | mreža = ''mreža'' | premijera = ''premijera'' | finale = ''finale'' | u_hrv = ''u_hrv'' | premijera_hrv = ''premijera_hrv'' | finale_hrv = ''finale_hrv'' }} 1098l65qdbj7gpdsmaog7lhegabjmov 768703 768702 2026-10-17T10:45:41Z Flamingounicorn 69662 768703 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | above = {{If empty|{{{ime_serije|}}}|{{PAGENAMEBASE}}}} | abovestyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF; text-align:center | autoheaders = y | header1 = Prvo prikazivanje | label2 = Mreža | data2 = {{{mreža|}}} | label3 = Prikazivanje | data3 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera|}}}|finale={{{finale|}}}}} | header4 = Prikazivanje u Hrvatskoj | label5 = Mreža | data5 = {{{u_hrv|}}} | label6 = Prikazivanje | data6 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera_hrv|}}}|finale={{{finale_hrv|}}}}} }}</includeonly><noinclude> {{Infookvir TV sezona | ime_serije = ''ime_serije'' | mreža = ''mreža'' | premijera = ''premijera'' | finale = ''finale'' | u_hrv = ''u_hrv'' | premijera_hrv = ''premijera_hrv'' | finale_hrv = ''finale_hrv'' }}</noinclude> 0c4ei6gdto5q248xe5ibzex1yeizui1 768704 768703 2026-10-17T10:45:55Z Flamingounicorn 69662 768704 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | above = {{If empty|{{{ime_serije|}}}|{{PAGENAMEBASE}}}} | abovestyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center; font:italic | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF; text-align:center | autoheaders = y | header1 = Prvo prikazivanje | label2 = Mreža | data2 = {{{mreža|}}} | label3 = Prikazivanje | data3 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera|}}}|finale={{{finale|}}}}} | header4 = Prikazivanje u Hrvatskoj | label5 = Mreža | data5 = {{{u_hrv|}}} | label6 = Prikazivanje | data6 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera_hrv|}}}|finale={{{finale_hrv|}}}}} }}</includeonly><noinclude> {{Infookvir TV sezona | ime_serije = ''ime_serije'' | mreža = ''mreža'' | premijera = ''premijera'' | finale = ''finale'' | u_hrv = ''u_hrv'' | premijera_hrv = ''premijera_hrv'' | finale_hrv = ''finale_hrv'' }}</noinclude> t9clbmur9d247gg04qhzlrsv3pjfnem 768705 768704 2026-10-17T10:46:17Z Flamingounicorn 69662 768705 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | above = {{If empty|{{{ime_serije|}}}|{{PAGENAMEBASE}}}} | abovestyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center; font-style:italic | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF; text-align:center | autoheaders = y | header1 = Prvo prikazivanje | label2 = Mreža | data2 = {{{mreža|}}} | label3 = Prikazivanje | data3 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera|}}}|finale={{{finale|}}}}} | header4 = Prikazivanje u Hrvatskoj | label5 = Mreža | data5 = {{{u_hrv|}}} | label6 = Prikazivanje | data6 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera_hrv|}}}|finale={{{finale_hrv|}}}}} }}</includeonly><noinclude> {{Infookvir TV sezona | ime_serije = | mreža = ''mreža'' | premijera = ''premijera'' | finale = ''finale'' | u_hrv = ''u_hrv'' | premijera_hrv = ''premijera_hrv'' | finale_hrv = ''finale_hrv'' }}</noinclude> 3j914tfg2ugzr8i3kxa50rk6777u16t 768706 768705 2026-10-17T10:48:34Z Flamingounicorn 69662 768706 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | above = {{If empty|{{{ime_serije|}}}|{{PAGENAMEBASE}}}} | abovestyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center; font-style:italic | subheader = {{{broj_sezone|}}} | subheaderstyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF; text-align:center | autoheaders = y | header1 = Prvo prikazivanje | label2 = Mreža | data2 = {{{mreža|}}} | label3 = Prikazivanje | data3 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera|}}}|finale={{{finale|}}}}} | header4 = Prikazivanje u Hrvatskoj | label5 = Mreža | data5 = {{{u_hrv|}}} | label6 = Prikazivanje | data6 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera_hrv|}}}|finale={{{finale_hrv|}}}}} }}</includeonly><noinclude> {{Infookvir TV sezona | ime_serije = | broj_sezone = 5. sezona | mreža = ''mreža'' | premijera = ''premijera'' | finale = ''finale'' | u_hrv = ''u_hrv'' | premijera_hrv = ''premijera_hrv'' | finale_hrv = ''finale_hrv'' }}</noinclude> l88z0fc2gtxar3v1si43jodd8l46zwz 768707 768706 2026-10-17T10:48:58Z Flamingounicorn 69662 768707 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | above = {{If empty|{{{ime_serije|}}}|{{PAGENAME}}}} | abovestyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center; font-style:italic | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF; text-align:center | autoheaders = y | header1 = Prvo prikazivanje | label2 = Mreža | data2 = {{{mreža|}}} | label3 = Prikazivanje | data3 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera|}}}|finale={{{finale|}}}}} | header4 = Prikazivanje u Hrvatskoj | label5 = Mreža | data5 = {{{u_hrv|}}} | label6 = Prikazivanje | data6 = {{#invoke:TV infookvir|prikazivanje|premijera={{{premijera_hrv|}}}|finale={{{finale_hrv|}}}}} }}</includeonly><noinclude> {{Infookvir TV sezona | ime_serije = | broj_sezone = 5. sezona | mreža = ''mreža'' | premijera = ''premijera'' | finale = ''finale'' | u_hrv = ''u_hrv'' | premijera_hrv = ''premijera_hrv'' | finale_hrv = ''finale_hrv'' }}</noinclude> a1uqd2gi9o68irjqvbeei5zsk6cylbl 768709 768707 2026-10-17T11:03:50Z Flamingounicorn 69662 768709 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | above = {{If empty|{{{ime_serije|}}}|{{PAGENAME}}}} | abovestyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center; font-style:italic | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF; text-align:center | autoheaders = y | header7 = Kronologija sezona | data8 = {{#invoke:TV infookvir|brojsezone|prethodna={{{prethodna|}}}|sljedeca={{{sljedeca|}}}}} }}</includeonly><noinclude> {{Infookvir TV sezona | ime_serije = | broj_sezone = 5. sezona | mreža = ''mreža'' | premijera = ''premijera'' | finale = ''finale'' | u_hrv = ''u_hrv'' | premijera_hrv = ''premijera_hrv'' | finale_hrv = ''finale_hrv'' | prethodna= [[Serija X (1. sezona)|1. sezona]] |sljedeca = [[Serija X (1. sezona)|3. sezona]] }}</noinclude> c6ak1cqbet31adlfvxfsux7njf08kl3 768711 768709 2026-10-17T11:17:39Z Flamingounicorn 69662 768711 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | above = {{If empty|{{{ime_serije|}}}|{{PAGENAME}}}} | abovestyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center; font-style:italic | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF; text-align:center | autoheaders = y | header7 = Kronologija sezona | label8 = Prethodna | data8 = {{#invoke:TV infookvir|kronologija|prethodna={{{prethodna|}}}}} | label9 = Sljedeća | data9 = {{#invoke:TV infookvir|kronologija|sljedeca={{{sljedeca|}}}}} }}</includeonly><noinclude> {{Infookvir TV sezona | prethodna = [[Serija X (1. sezona)|1. sezona]] | sljedeca = [[Serija X (4. sezona)|3. sezona]] }}</noinclude> r5z7p38ctzliorvvhhehvb0vygds9yc 768717 768711 2026-10-17T11:26:22Z Flamingounicorn 69662 768717 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | above = {{If empty|{{{ime_serije|}}}|{{PAGENAME}}}} | abovestyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center; font-style:italic | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF; text-align:center | autoheaders = y | label1 = Uloge | data1 = {{{uloge|}}} | header7 = Kronologija sezona | label8 = Prethodna | data8 = {{#invoke:TV infookvir|kronologija|prethodna={{{prethodna|}}}}} | label9 = Sljedeća | data9 = {{#invoke:TV infookvir|kronologija|sljedeca={{{sljedeca|}}}}} }}</includeonly><noinclude> {{Infookvir TV sezona | prethodna = [[Serija X (1. sezona)|1. sezona]] | sljedeca = [[Serija X (4. sezona)|3. sezona]] }}</noinclude> n8cakg03nv5pk8kmldbtb8bik3713zc 768719 768717 2026-10-17T11:29:22Z Flamingounicorn 69662 768719 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | above = {{If empty|{{{ime_serije|}}}|{{PAGENAMEBASE}}}} | abovestyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center; font-style:italic | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF; text-align:center | autoheaders = y | label1 = Uloge | data1 = {{{uloge|}}} | header7 = Kronologija sezona | label8 = Prethodna | data8 = {{#invoke:TV infookvir|kronologija|prethodna={{{prethodna|}}}}} | label9 = Sljedeća | data9 = {{#invoke:TV infookvir|kronologija|sljedeca={{{sljedeca|}}}}} }}</includeonly><noinclude> {{Infookvir TV sezona | prethodna = [[Serija X (1. sezona)|1. sezona]] | sljedeca = [[Serija X (4. sezona)|3. sezona]] }}</noinclude> k0k11rwsetsufj7r816c9qo02txn7jg 768720 768719 2026-10-17T11:48:21Z Flamingounicorn 69662 768720 wikitext text/x-wiki <includeonly>{{Infobox | bodyclass = vevent | above = {{If empty|{{{ime_serije|}}}|{{PAGENAMEBASE}}}} | abovestyle = background-color: #CCCCFF; color: black; padding: 0.25em 1em; font-size: 125%; text-align:center; font-style:italic | headerstyle = padding: 0.25em 1em; line-height: 1.5em; background-color: #CCCCFF; text-align:center | autoheaders = y | label1 = Uloge | data1 = {{{uloge|}}} | header3 = Prvo prikazivanje | label4 = Mreža | data4 = {{{mreža|}}} | label5 = Prikazivanje | data5 = {{{premijera|}}} – <br> {{{finale|}}} | header6 = Prikazivanje u Hrvatskoj | label7 = Mreža | data7 = {{{u_hrv|}}} | label8 = Prikazivanje | data8 = {{{premijera_hrv|}}} – <br> {{{finale_hrv|}}} | header9 = Kronologija sezona | label10 = Prethodna | data10 = {{#invoke:TV infookvir|kronologija|prethodna={{{prethodna|}}}}} | label11 = Sljedeća | data11 = {{#invoke:TV infookvir|kronologija|sljedeca={{{sljedeca|}}}}} }}</includeonly><noinclude> {{Infookvir TV sezona |mreža=The CW |premijera=5. rujna 2006. |finale=13. svibnja 2007. |u_hrv=HRT 2 |premijera_hrv = 14. ožujka 2007. |finale_hrv=28. rujna 2009. | prethodna = [[Serija X (1. sezona)|1. sezona]] | sljedeca = [[Serija X (4. sezona)|3. sezona]] }}</noinclude> 85tbkv7xkrecv8stkx7qrm7s3oln5pc Serija X (1. sezona) 0 179301 768687 2026-10-17T10:10:20Z Flamingounicorn 69662 n. 768687 wikitext text/x-wiki {{Infookvir TV sezona | mreža = The CW | premijera = 5. studenoga 2026.}} 3lzar7qlkq4dj9chetny2iu4hq4c0aq 768690 768687 2026-10-17T10:15:57Z Flamingounicorn 69662 768690 wikitext text/x-wiki {{Infookvir TV sezona | mreža = The CW | premijera = 5. studenoga 2026. | u_hrv = HRT 2 | premijera_hrv = 11. prosinca 2006. | finale_hrv = 12. siječnja 2007. }} hyqwr83h6axzz1bj0uirl4uu7c6n685 768716 768690 2026-10-17T11:19:03Z Flamingounicorn 69662 768716 wikitext text/x-wiki {{Infookvir TV sezona }} a5j79cdj8den402llo7y5m61a0hakhi 768718 768716 2026-10-17T11:28:40Z Flamingounicorn 69662 768718 wikitext text/x-wiki {{Infookvir TV sezona | uloge = Jennifer Aniston<br>Courteney Cox<br>Lisa Kudrow<br>Matt LeBlanc<br>Matthew Perry<br>David Schwimmer }} 64bc48xdb4747xzg8wq8lslxtje1wj5 Wikipedia:Sandbox/MoveIt moved 2026-10-17T10-38-25-208Z 4 179302 768695 2026-10-17T10:38:26Z Closed Limelike Curves 60396 MoveIt live rename test: creating the page to be renamed 768695 wikitext text/x-wiki Throwaway page for the Move It live rename test (2026-10-17T10-38-25-208Z). Safe to delete. msw6dkfdyyz5ptdr311zgdl6ak8vw02 768696 768695 2026-10-17T10:38:26Z Closed Limelike Curves 60396 Closed Limelike Curves moved page [[Wikipedia:Sandbox/MoveIt move 2026-10-17T10-38-25-208Z]] to [[Wikipedia:Sandbox/MoveIt moved 2026-10-17T10-38-25-208Z]]: Move It live rename test (via Move It browser extension) 768695 wikitext text/x-wiki Throwaway page for the Move It live rename test (2026-10-17T10-38-25-208Z). Safe to delete. msw6dkfdyyz5ptdr311zgdl6ak8vw02 768699 768696 2026-10-17T10:38:28Z Closed Limelike Curves 60396 MoveIt live rename test teardown 768699 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 Wikipedia:Sandbox/MoveIt move 2026-10-17T10-38-25-208Z 4 179303 768697 2026-10-17T10:38:27Z Closed Limelike Curves 60396 Closed Limelike Curves moved page [[Wikipedia:Sandbox/MoveIt move 2026-10-17T10-38-25-208Z]] to [[Wikipedia:Sandbox/MoveIt moved 2026-10-17T10-38-25-208Z]]: Move It live rename test (via Move It browser extension) 768697 wikitext text/x-wiki #REDIRECT [[Wikipedia:Sandbox/MoveIt moved 2026-10-17T10-38-25-208Z]] {{Redirect category shell| {{R from move}} }} ttig73dze91n285epeufpsthsoq7z1r 768698 768697 2026-10-17T10:38:28Z Closed Limelike Curves 60396 MoveIt live rename test teardown 768698 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 Serija X (2. sezona) 0 179304 768712 2026-10-17T11:18:30Z Flamingounicorn 69662 test 768712 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 768714 768712 2026-10-17T11:18:53Z Flamingounicorn 69662 768714 wikitext text/x-wiki {{Infookvir TV sezona }} a5j79cdj8den402llo7y5m61a0hakhi Serija X (3. sezona) 0 179305 768713 2026-10-17T11:18:31Z Flamingounicorn 69662 test 768713 wikitext text/x-wiki phoiac9h4m842xq45sp7s6u21eteeq1 768715 768713 2026-10-17T11:18:56Z Flamingounicorn 69662 768715 wikitext text/x-wiki {{Infookvir TV sezona }} a5j79cdj8den402llo7y5m61a0hakhi