ဝီႇၶီႇၽီးတီးယႃး shnwiki https://shn.wikipedia.org/wiki/%E1%81%BC%E1%82%83%E1%82%88%E1%82%81%E1%80%B0%E1%80%9D%E1%80%BA%E1%82%81%E1%82%85%E1%81%B5%E1%80%BA%E1%82%88 MediaWiki 1.47.0-wmf.6 first-letter သိုဝ်ႇၶၢဝ်ႇ ၶိုၵ်ႉတွၼ်း ဢုပ်ႇၵုမ် ၽူႈၸႂ်ႉတိုဝ်း ဢုပ်ႇၵုမ် ၽူႈၸႂ်ႉတိုဝ်း ဝီႇၶီႇၽီးတီးယႃး ဢုပ်ႇၵုမ် ဝီႇၶီႇၽီးတီးယႃး ၾၢႆႇ ဢုပ်ႇၵုမ် ၾၢႆႇ မီႇတီႇယႃႇဝီႇၶီႇ ဢုပ်ႇၵုမ် မီႇတီႇယႃႇဝီႇၶီႇ ထႅမ်းပလဵတ်ႉ ဢုပ်ႇၵုမ် ထႅမ်းပလဵတ်ႉ လွင်ႈၸွႆႈထႅမ် ဢုပ်ႇၵုမ် လွင်ႈၸွႆႈထႅမ် ပိူင်ထၢၼ်ႈ ဢုပ်ႇၵုမ် ပိူင်ထၢၼ်ႈ ၵိူၼ်ႇတူ တွၼ်ႈဢုပ်ႇ ၵိူၼ်ႇတူ ပိူင်လိူင်း ဢုပ်ႇၵုမ် ပိူင်လိူင်း TimedText TimedText talk မေႃႇၵျူး ဢုပ်ႇၵုမ် မေႃႇၵျူး Event Event talk ၸႄႈတွၼ်ႈမတူႇပီႇ 0 9244 126490 104633 2026-06-14T00:46:29Z InternetArchiveBot 2342 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 126490 wikitext text/x-wiki {{Infobox district |name = ၸႄႈတွၼ်ႈမတူႇပီႇ |pushpin_map = မိူင်းမၢၼ်ႈ |pushpin_label_position =left |pushpin_map_caption = |settlement_type = |image_skyline = File:Thatdun Memorial Baptist Church.jpg |image_map = |map_caption = |subdivision_type = မိူင်း |subdivision_name = {{ၸွမ်ပိဝ်|မိူင်းမၢၼ်ႈ}} |subdivision_type1 = [[ၼႃႈလိၼ်ၽွင်းငမ်းဢုပ်ႉပိူင်ႇ မိူင်းမျၢၼ်ႇမႃႇ|ၸႄႈမိူင်း]] |subdivision_name1 = {{ၸွမ်ပိဝ်|ၸႄႈမိူင်းၶျၢင်း}} |subdivision_type2 = [[ၸႄႈဝဵင်းၸိူဝ်းမီးၼႂ်း မိူင်းမျၢၼ်ႇမႃႇ|ၸႄႈဝဵင်း]] |subdivision_name2 = 2 |subdivision_type3 = ဝဵင်းငဝ်ႈၸိုင်ႈ |subdivision_name3 = [[ဝဵင်းမတူႇပီႇ]] |unit_pref = Imperial |area_total_km2 = |population = |population_as_of = |population_footnotes = |population_density_km2 = auto |coordinates = {{Coord|21|35|00|N|93|26|00|E|region:MM|default=dms|display=inline, title}} |timezone = [[လၵ်းၸဵင်ၶၢဝ်းယၢမ်းမျၢၼ်ႇမႃႇ]] |utc_offset = +6:30 |elevation_footnotes = |elevation_m = |elevation_ft = |website = |footnotes = }} '''ၸႄႈတွၼ်ႈမတူႇပီႇ''' ({{Langx|my|မတူပီခရိုင်}} ; {{Langx|en|Matupi District}}) ၼႆႉ ပဵၼ်ၸႄႈတွၼ်ႈဢၼ်ၼိုင်ႈ ဢၼ်မီးတီႈ [[ၸႄႈမိူင်းၶျၢင်း]]ၼၼ်ႉယဝ်ႉ။ မိူဝ်ႈဢွၼ်တၢင်း ပဵၼ်ၼႃႈလိၼ် ဢၼ်မီးတႂ်ႈမိုဝ်း [[ၸႄႈတွၼ်ႈမိၼ်းတတ်ႉ]]သေ ထိုင်ပီ 2017 လႆႈပဵၼ် ၸႄႈတွၼ်ႈႁင်းၶေႃ မႃးယူႇယဝ်ႉ။ ယွၼ်ႉၼၼ်လႄႈ တီႈၸႄႈမိူင်းၶျၢင်းၼႆႉ မိူဝ်ႈဢွၼ်တၢင်း မီး ၸႄႈတွၼ်ႈ 3 ၸႄႈတွၼ်ႈသေ ယၢမ်းလဵဝ် ပဵၼ်မႃး 4 ၸႄႈတွၼ်ႈယူႇယဝ်ႉ။<ref>{{cite web|url=http://www.gad.gov.mm/my/content/%E1%80%A1%E1%80%81%E1%80%BB%E1%80%80%E1%80%BA%E1%80%A1%E1%80%9C%E1%80%80%E1%80%BA%E1%80%99%E1%80%BB%E1%80%AC%E1%80%B8|title=တိုင်းဒေသကြီးနှင့် ပြည်နယ်များရှိ ခရိုင်၊ မြို့နယ်၊ မြို့၊ ရပ်ကွက်၊ ကျေးရွာအုပ်စုနှင့် ကျေးရွာဦးရေ စာရင်းချုပ်|publisher=[[ႁွင်ႈၵွၼ်းၵၢၼ် လွင်ႈဢုပ်ႉပိူင်ႇၵူႈထၢၼ်ႈ]]|accessdate=|archivedate=2022-05-19|archiveurl=https://web.archive.org/web/20220519155041/http://www.gad.gov.mm/my/content/%E1%80%A1%E1%80%81%E1%80%BB%E1%80%80%E1%80%BA%E1%80%A1%E1%80%9C%E1%80%80%E1%80%BA%E1%80%99%E1%80%BB%E1%80%AC%E1%80%B8}}</ref><ref>{{cite web|url=http://www.gad.gov.mm/my/content/%E1%80%94%E1%80%B1%E1%80%95%E1%80%BC%E1%80%8A%E1%80%BA%E1%80%90%E1%80%B1%E1%80%AC%E1%80%BA%E1%81%8A-%E1%80%90%E1%80%AD%E1%80%AF%E1%80%84%E1%80%BA%E1%80%B8%E1%80%92%E1%80%B1%E1%80%9E%E1%80%80%E1%80%BC%E1%80%AE%E1%80%B8%E1%80%94%E1%80%BE%E1%80%84%E1%80%B7%E1%80%BA-%E1%80%95%E1%80%BC%E1%80%8A%E1%80%BA%E1%80%94%E1%80%9A%E1%80%BA%E1%80%99%E1%80%BB%E1%80%AC%E1%80%B8%E1%80%9B%E1%80%BE%E1%80%AD-%E1%80%81%E1%80%9B%E1%80%AD%E1%80%AF%E1%80%84%E1%80%BA%E1%81%8A-%E1%80%99%E1%80%BC%E1%80%AD%E1%80%AF%E1%80%B7%E1%80%94%E1%80%9A%E1%80%BA%E1%81%8A-%E1%80%99%E1%80%BC%E1%80%AD%E1%80%AF%E1%80%B7%E1%81%8A-%E1%80%9B%E1%80%95%E1%80%BA%E1%80%80%E1%80%BD%E1%80%80%E1%80%BA%E1%81%8A|title=တိုင်းဒေသကြီးနှင့် ပြည်နယ်များရှိ ခရိုင်၊ မြို့နယ်၊ မြို့၊ ရပ်ကွက်၊ ကျေးရွာအုပ်စုနှင့် ကျေးရွာဦးရေ စာရင်းချုပ်(၃၁.၃.၂၀၁၆)|publisher=[[ႁွင်ႈၵွၼ်းၵၢၼ် လွင်ႈဢုပ်ႉပိူင်ႇၵူႈထၢၼ်ႈ]]|accessdate=|archivedate=2022-10-05|archiveurl=https://web.archive.org/web/20221005180410/http://www.gad.gov.mm/my/content/%E1%80%94%E1%80%B1%E1%80%95%E1%80%BC%E1%80%8A%E1%80%BA%E1%80%90%E1%80%B1%E1%80%AC%E1%80%BA%E1%81%8A-%E1%80%90%E1%80%AD%E1%80%AF%E1%80%84%E1%80%BA%E1%80%B8%E1%80%92%E1%80%B1%E1%80%9E%E1%80%80%E1%80%BC%E1%80%AE%E1%80%B8%E1%80%94%E1%80%BE%E1%80%84%E1%80%B7%E1%80%BA-%E1%80%95%E1%80%BC%E1%80%8A%E1%80%BA%E1%80%94%E1%80%9A%E1%80%BA%E1%80%99%E1%80%BB%E1%80%AC%E1%80%B8%E1%80%9B%E1%80%BE%E1%80%AD-%E1%80%81%E1%80%9B%E1%80%AD%E1%80%AF%E1%80%84%E1%80%BA%E1%81%8A-%E1%80%99%E1%80%BC%E1%80%AD%E1%80%AF%E1%80%B7%E1%80%94%E1%80%9A%E1%80%BA%E1%81%8A-%E1%80%99%E1%80%BC%E1%80%AD%E1%80%AF%E1%80%B7%E1%81%8A-%E1%80%9B%E1%80%95%E1%80%BA%E1%80%80%E1%80%BD%E1%80%80%E1%80%BA%E1%81%8A}}</ref> ==သၢႆပိုၼ်း== မိူဝ်ႈဢွၼ်တၢင်း တီႈၸႄႈတွၼ်ႈမိၼ်းတတ်ႉၼႆႉ ဢဝ်တင်း [[ၸႄႈဝဵင်းမိၼ်းတတ်ႉ]] [[ၸႄႈဝဵင်းၵၢၼ်ႇပႅတ်ႉလႅတ်ႉ]]၊ [[ၸႄႈဝဵင်းမတူႇပီႇ]] လႄႈ [[ၸႄႈဝဵင်းပလႅတ်ႉဝ]] ၸိူဝ်းၼႆႉသေ ၽွတ်ႈႁႅၼ်းဝႆႉယဝ်ႉ။ မိူဝ်ႈဢႃႇယုႇသၽႃးပွၵ်ႈၵမ်းၼိုင်ႈၼၼ်ႉ လုၵ်ႉတီႈ တႅၼ်းၽွင်းၵူၼ်းမိူင်း ၸႄႈဝဵင်းပလႅတ်ႉဝ လႆႈတွင်ႈထၢမ်ၼႂ်းသၽႃးဝႃႈ ၸွင်ႇမီးဢမ်ႇမီး ၶပ်ႉမၢႆ တွၼ်ႈတႃႇယုၵ်ႉဢဝ် ၸႄႈဝဵင်းပလႅတ်ႉဝ ၶိုၼ်ႈပဵၼ် ၸႄႈတွၼ်ႈ ၼႆယဝ်ႉ။ ၵဵဝ်ႇလူၺ်ႈလွင်ႈၼၼ်ႉသေ လုၵ်ႉတီႈ လုမ်းတႅၼ်းၽွင်း(သၽႃး)မိူင်းႁူမ်ႈတုမ် လႆႈယွၼ်းတၢင်းႁၼ်ထိုင် [[ၸုမ်းလူင်ပွင်ၸိုင်ႈ ၸႄႈမိူင်းၶျၢင်း]]ယဝ်ႉ။ ၵူၺ်းၵႃႈဝႃႈ တီႈ [[လုမ်းတႅၼ်းၽွင်း ၸႄႈမိူင်းၶျၢင်း|လုမ်းတႅၼ်းၽွင်းၸႄႈမိူင်း]] ၸမ်ႉ ဢမ်ႇဢုပ်ႇဢူဝ်း လွင်ႈတႃႇဢဝ် ပလႅတ်ႉဝ ယုၵ်ႉပဵၼ် ၸႄႈတွၼ်ႈ ထုၵ်ႇဢမ်ႇထုၵ်ႇၼၼ်ႉသေ လႆႈၸႅၵ်ႇသဵင်တႅပ်းတတ်း ဝႃႈ ၼႂ်းၵႃႈ ၸႄႈဝဵင်းမတူႇပီႇ လႄႈ ပလႅတ်ႉဝ ၼၼ်ႉ ဝဵင်းလႂ်တေလီယုၵ်ႉပဵၼ်ၸႄႈတွၼ်ႈ ၼႆလႄႈ မတူႇပီႇ လႆႈ 11 သဵင်၊ ပလႅတ်ႉဝ လႆႈ 9 သဵင်ယဝ်ႉ။ လုၵ်ႉတီႈ [[ထၢၼ်ၽွင်းလူင် လုမ်းၸွမ်ၸိုင်ႈ|လုမ်းၸဝ်ႈၸွမ်ႈၸိုင်ႈမိူင်း]] သေ မိူဝ်ႈပီ 2017 ၼၼ်ႉ လႆႈပွင်ႇလႅင်းထိုင် လုမ်းတႅၼ်းၽွင်းမိူင်းႁူမ်ႈတုမ်ဝႃႈ တွၼ်ႈတႃႇ တၢင်ႇမၢႆ လွင်ႈဝႃႈ လႅၵ်ႈလၢႆႈၽွတ်ႈႁႅၼ်း ၼႂ်းၵႃႈ 4 ၸႄႈဝဵင်း တီႈ ၸႄႈတွၼ်ႈမိၼ်းတတ်ႉ မိူဝ်ႈဢွၼ်တၢင်းၼၼ်ႉ လႆႈဢဝ် ၸႄႈဝဵင်းမိၼ်းတတ်ႉ လႄႈ ၸႄႈဝဵင်းပလႅတ်ႉဝ သေ ၽွတ်ႈႁႅၼ်း ၸႄႈတွၼ်ႈမိၼ်းတတ်ႉ၊ ဢဝ်တင်း ၸႄႈတွၼ်ႈမတူႇပီႇ လႄႈ ၸႄႈတွၼ်ႈပလႅတ်ႉဝသေ ၽွတ်ႈႁႅၼ်း ၸႄႈတွၼ်ႈမတူႇပီ ၼႆၼၼ်ႉယဝ်ႉ။ ၵူၺ်းၵႃႈဝႃႈ ႁိုဝ်ၶၢဝ်းတၢင်းၼိုင်ႈပီ တေႃႇထိုင် ပီ 2018 ၼၼ်ႉ ယွၼ်ႉတၢင်းယၢပ်ႇၽိုတ်ႇ ဢွင်ႈတီႈလိၼ်သေ ၸိူဝ်းပဵၼ် လုမ်းၸၼ်ႉၸႄႈတွၼ်ႈလႄႈ ၵူၼ်းႁၢပ်ႇၵၢၼ်ၶဝ် ၵေႃႈ ပႆႇၸၢင်းပၼ်ၵၢၼ်သေ လႆႈပိုတ်ႇၽုၺ်ႇဝႆႉၸူဝ်ႈၵႅပ်ႉ တီႈလုမ်းၸႄႈဝဵင်းၼၼ်ႉယဝ်ႉ။<ref>{{cite web|url=https://news-eleven.com/article/120845|title=မတူပီမြို့နှင့် ရှစ်မိုင်ခန့်အကွာတွင် ခရိုင်ရုံး တည်ဆောက်ရန် လျာထားမှုကို သဘောမတူဘဲ မြို့၏ စည်ပင်သာယာ နယ်နိမိတ်အတွင်း၌သာ ဆောက်လုပ်ရန် လိုလားကြောင်း ဒေသခံများက ရန်ကုန်မြို့၌ သတင်းစာ ရှင်းလင်း|publisher=အီလဲဗင်း သတင်းစာ|accessdate=|archive-date=2022-10-05|archive-url=https://web.archive.org/web/20221005180410/https://news-eleven.com/article/120845|url-status=dead}}</ref><ref>{{cite web|url=http://burmese.dvb.no/archives/138573|title=ပလက်ဝမြို့နယ်အား မတူပီခရိုင်အတွင်း ထည့်သွင်းမဖွဲ့စည်းရန် ချင်းပါတီတောင်းဆို|publisher=ဒီဗွီဘီ]|accessdate=}}</ref><ref>{{cite web|url=http://weeklyheadline.com/news/1111168/|title=မတူပီခရိုင်ဖွဲ့စည်းရေး မြေနေရာအခက်အခဲကြောင့်ကြန့်ကြာ|accessdate=|archivedate=2019-07-28|archiveurl=https://web.archive.org/web/20190728161458/http://weeklyheadline.com/news/1111168/}}</ref> ==ၸႄႈဝဵင်း== ၸႄႈဝဵင်း ၸိူဝ်းမီးၼႂ်း ၸႄႈတွၼ်ႈမတူႇပီႇၼႆႉ မီးၼင်ႇၽၢႆႇတႂ်ႈၼႆႉယဝ်ႉ။ *[[ၸႄႈဝဵင်းမတူႇပီႇ]] *[[ၸႄႈဝဵင်းပလႅတ်ႉဝ]] ==ၽိုၼ်ဢိင်== {{Reflist}} {{ၸႄႈမိူင်းၶျၢင်း}} {{DEFAULTSORT:မတူႇပီႇ}} [[ပိူင်ထၢၼ်ႈ:ၸႄႈတွၼ်ႈၼႂ်းမိူင်းမျၢၼ်ႇမႃႇ]] [[ပိူင်ထၢၼ်ႈ:ၸႄႈမိူင်းၶျၢင်း]] krp4u8cisfqv9w91egxt6qorshhf46y သျီႇဝူၺ်ႉၸိုဝ်ဝ်း 0 20584 126489 66918 2026-06-14T00:33:42Z InternetArchiveBot 2342 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 126489 wikitext text/x-wiki {{short description|ၸၢႆးငဝ်းၶႄႇ၊ မေႃႇတႄႇလ် လႄႈ ၸဝ်ႈၽဵင်းၵႂၢမ်း}}{{family name hatnote|[[:en:Xu (surname)|သျီႇ]]|lang=Chinese}} {{infobox person | name = သျီႇဝူၺ်ႉၸိုဝ်ဝ်း | image = | alt = | caption = | birth_date = {{birth date and age|1994|10|20}} | birth_place = [[:en:Shanghai|သျၢၼ်ႇႁၢႆး]], [[မိူင်းၶႄႇ]]| alma_mater = [[:en:National Academy of Chinese Theatre Arts|National Academy of Chinese Theatre Arts]] | occupation = {{flatlist| * ၸၢႆးငဝ်း * ၽူႈႁွင်ႉၵႂၢမ်း * ၽူႈတႅမ်ႈၵႂၢမ်း }} | years_active = 2015&ndash;တေႃႇယၢမ်းလဵဝ် | module = {{Infobox Chinese|child=yes | t = {{linktext|許|魏|洲}} | s = {{linktext|许|魏|洲}} | p = Xǔ Wèizhōu }} | module2 = {{infobox musical artist|embed=yes | alias = Timmy Xu (ၸိုဝ်ႈဢိင်းၵလဵတ်ႈ)<br/>허위주 (ၸိုဝ်ႈၵၢဝ်းလီႇ) | background = temporary | origin = [[:en:Shanghai|သျၢၼ်ႇႁၢႆး]], [[မိူင်းၶႄႇ]] | genre = {{flatlist| *[[:en:C-pop|C-pop]] *[[:en:Rock music|rock]] *[[:en:Heavy metal music|heavy metal]] }} | instrument = {{flatlist| *[[:en:Vocals|ဝူဝ်ႇၵႄႇ]] *[[:en:guitar|တိင်ႇ]] *[[:en:drum|ၵွင်]] *[[:en:piano|ပီႇယႃႇၼူဝ်ႇ]] *[[:en:Keyboard instrument|ၶီးၿူတ်ႉ]] }} }} }} '''သျီႇဝူၺ်ႉၸိုဝ်ဝ်း''' (ၵိူတ်ႇ 1994 ဢွၵ်ႇထူဝ်ႇပႃႇ 20) ဢၼ်ၵူႈၸိုင်ႈမိူင်း ႁူႉဝႃႈ '''Timmy Xu''' ၼႆႉ ပဵၼ် ၸၢႆးငဝ်း လႄႈ ၽူႈႁွင်ႉၵႂၢမ်း-ၽူႈတႅမ်ႈၵႂၢမ်းၵေႃႉၼိုင်ႈ၊ ဢၼ်ဢွၼ်ၵၼ်ႁူႉၸၵ်းမၼ်းလီလီၼႆႉ ပဵၼ်ႁၢင်ႈၸိူင်း Bai Luoyin တီႈၼႂ်း ဝႅပ်ႉသီးရီးၶႄႇ [[:en:Heroin Web Series|''Addicted'']] ၼၼ်ႉယဝ်ႉ။ မၼ်းၼႆႉပဵၼ် ၸဝ်ႈပၢႆးမွၼ်းၵေႃႉဢွၼ်တၢင်းသုၼ်း ဢၼ်ၽႅဝ်မၢႆၸိၵ်ႈ တီႈ ''Billboard'' China V chart လႄႈ Mandarin chart ၼႂ်းဝူင်ႈလဵဝ်ၵၼ်ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = China V-Chart|url = http://www.billboard.com/charts/china-v-chart/2016-05-14|website = billboard.com |access-date = 2016-05-14}}</ref><ref>{{Cite web |title = Billboard Radio China Chart |url = http://www.billboardradiochina.com/chart/12-May-2016-hua-yu-bang-Billboard-China-Top-10-zh_cn |website = billboardradiochina.com |access-date = 2016-05-12 |accessdate = 2021-02-10 |archivedate = 2016-10-24 |archiveurl = https://web.archive.org/web/20161024230635/http://www.billboardradiochina.com/chart/12-May-2016-hua-yu-bang-Billboard-China-Top-10-zh_cn }} {{Cite web |title=Archive copy |url=http://www.billboardradiochina.com/chart/12-May-2016-hua-yu-bang-Billboard-China-Top-10-zh_cn |accessdate=2021-02-10 |archivedate=2016-10-24 |archiveurl=https://web.archive.org/web/20161024230635/http://www.billboardradiochina.com/chart/12-May-2016-hua-yu-bang-Billboard-China-Top-10-zh_cn }}</ref> သျီႇၼႆႉ ပဵၼ် ၸဝ်ႈပၢႆးမွၼ်းၵေႃႉလဵဝ် ဢၼ်လုၵ်ႉတီႈ မိူင်းၶႄႇလူင်သေ ႁဵတ်းပၢင်ပွႆးတီႈ ၵၢဝ်းလီၸၢၼ်း၊<ref>{{Cite web|title = 许魏洲韩国开唱 数千韩粉全场合唱中文歌|url = http://ent.sina.com.cn/y/yneidi/2016-06-26/doc-ifxtmweh2549984.shtml|website = ent.sina.com.cn|access-date = 2016-07-01}}</ref><ref>{{Cite web|title = Chinese star Xu Weizhou visits Seoul for concert|url = http://english.donga.com/List/3/all/26/537020/1|website = english.donga.com|access-date = 2016-07-02}}</ref> သေ ထုၵ်ႇၽိတ်ႈမွၵ်ႇထိုင်ပဵၼ်တၢင်းၵၢၼ် ၼင်ႇ ၶႅၵ်ႇ တႃႇၶိုၼ်ႈႁွတ်ႈ [[:en:Billboard Music Award|''Billboard'' Music Awards]] ၼႂ်း ပီ 2017 ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Chinese Artist Xu Weizhou was the first male artist from mainland China to be officially invited to the Billboard Music award |url = http://www.weibo.com/6016400886/F2TsS69C7|website = weibo.com|access-date = 2017-05-13}}</ref> ==ၸၢတ်ႈပၢၼ်မိူဝ်ႈၸဝ်ႉ== ၸဵမ်မိူဝ်ႈပဵၼ်ပၢၼ်လုၵ်ႈဢွၼ်ႇၼၼ်ႉ သျီႇ ၼႆႉ လႆႈလဵပ်ႈႁဵၼ်းမႃး ပၢႆးမွၼ်းလၢႆမဵဝ်းလၢႆဢၼ် ဢိၵ်ႇပႃး လွင်ႈၵႃႈ၊ လွင်ႈႁွင်ႉၵႂၢမ်း၊ လွင်ႈတႅမ်ႈၵႂၢမ်း လႄႈ လွင်ႈႁႆႇတိုင်ႈ ပိူင်လူင်မၼ်းပဵၼ် လဵတ်းတိင်ႇယဝ်ႉ။ မၼ်းလႆႈလဵပ်ႈႁဵၼ်း တၢင်းၵႃႈ လႅတ်ႇတိၼ်ႇမႃး တၢင်းႁိုင်သိပ်းပီပၢႆသေ မၼ်းလႆႈၶႅပ်းသူးၶမ်းတီႈ [[:en:Imperial Society of Teachers of Dancing|Imperial Society of Teachers of Dancing (ISTD)]] မႃးယဝ်ႉ။ တီႈႁူင်းႁဵၼ်းၸၼ်ႉသုင်ၼၼ်ႉ သျီႇၼႆႉ တင်းဢူၺ်းၵေႃႉႁူင်းႁဵၼ်းမၼ်းသေ လႆႈတႄႇတင်ႈ ၸုမ်းႁႆႇတိုင်ႈရွၵ်ႉၶ် သွင်ၸုမ်း ဢၼ်လႆႈၸိုဝ်ႈဝႃႈ "EggAche" သေ ဢၼ်ပဵၼ်ၸုမ်းတွႆႇတိုင်ႈ metal rock ၼၼ်ႉ ပဵၼ် "PROME" သေ မၼ်းပဵၼ် ႁူဝ်ၼႃႈ ၵူၼ်းလဵတ်ႈတိင်ႇယဝ်ႉ။<ref>{{Cite web|title = 摇滚Boy许魏洲来了!Light北京签唱会全线启动|url = http://ent.qq.com/a/20160425/013202.htm|website = ent.qq.com|access-date = 2017-06-01|accessdate = 2021-02-10|archivedate = 2020-08-07|archiveurl = https://web.archive.org/web/20200807002334/https://ent.qq.com/a/20160425/013202.htm}}</ref> "PROME" ၼၼ်ႉ လႆႈဢွင်ႇပႄႉ ပၢင်ၶႄႉၶဵင်ႇ ၸုမ်းတွႆႇတိုင်ႈ ႁူင်းႁဵၼ်းၸၼ်ႉသုင် တီႈ သျၢၼ်ႇႁၢႆးယဝ်ႉ။<ref>{{Cite web|title = 许魏洲:高中时组织音乐节 还要自己拉赞助、印票|url = http://ent.qq.com/a/20160603/024011.htm|website = ent.qq.com|access-date = 2017-09-09|accessdate = 2021-02-10|archivedate = 2020-05-15|archiveurl = https://web.archive.org/web/20200515155605/https://ent.qq.com/a/20160603/024011.htm}}</ref> လိူဝ်သေၼၼ်ႉဢမ်ႇၵႃး မၼ်းလႄႈ ဢိၵ်ႇတင်း ၸုမ်းတွႆႇတိုင်ႈ မၼ်း လႆႈၶပ်းၶိုင်ၸတ်းႁဵတ်း ပၢင်ပွႆးၽဵင်းၵႂၢမ်းၶၢဝ်းၵတ်း တီႈ သျၢၼ်ႇႁၢႆးသေ လွင်ႈၼၼ်ႉ ထုၵ်ႇတႅမ်ႈပႃးမႃးၼႂ်း လိၵ်ႈပိုၼ်ၶၢဝ်ႇပိုၼ်ႉတီႈယဝ်ႉ။ သျီႇၼႆႉ လႆႈသုတ်းႁဵၼ်းတီႈ [[:en:Shanghai Theatre Academy|Shanghai Theatre Academy]] ယဝ်ႉ။ ၶၢဝ်းၶိုၼ်းၶေႃးလဵၵ်ႉတႄႉ မၼ်းၵႂႃႇၶိုၼ်ႈ [[:en:National Academy of Chinese Theatre Arts|National Academy of Chinese Theatre Arts]] တီႈ ပေႇၸိင်း သေ လႆႈသုတ်းႁဵၼ်း ၼႂ်း လိူၼ်မေႇ 2017 ယဝ်ႉ။<ref>{{Cite web|title = 高中生自办寒假音乐节 找赞助商自己搞定 联系场地、找赞助商、活动宣传全由学生搞定|url = http://edu.people.com.cn/GB/227057/17016180.html|website = edu.people.com.cn|access-date = 2016-07-01|accessdate = 2021-02-10|archivedate = 2020-05-15|archiveurl = https://web.archive.org/web/20200515153618/http://edu.people.com.cn/GB/227057/17016180.html}} {{Cite web |title=Archive copy |url=http://edu.people.com.cn/GB/227057/17016180.html |accessdate=2021-02-10 |archivedate=2020-05-15 |archiveurl=https://web.archive.org/web/20200515153618/http://edu.people.com.cn/GB/227057/17016180.html }}</ref> ==ၼႃႈၶွင်== ===2015–2016: လွင်ႈတႄႇၼႃႈၶွင်, ''Addicted'' လႄႈ ၸိုဝ်ႈလိုဝ်းလင်မႃး=== ၽွင်းတိုၵ်ႉၶိုၼ်ႈၶေႃးလဵၵ်ႉယူႇၼၼ်ႉ သျီႇႇ လႆႈဢွၵ်ႇၼႃႈတီႈၼႂ်း ငဝ်းတူင်ႉပွတ်း ဢၼ်ႁွင်ႉဝႃႈ ''Gaming Madness''<ref>{{Cite web|title = 许魏洲青春正能量偶像勇往前行 亚洲演员演技获赞 |url = http://news.vdfly.com/dujia/201605/542671.html|website =news.vdfly.com|access-date = 2017-09-09}}</ref> ၼႂ်းၵႃႈႁူဝ်ထႅၼ်ႈ ဢၼ်ၼိုင်ႈ တႃႇ ဢွၵ်ႇထူဝ်ႇပႃႇ 2015 ၼၼ်ႉယဝ်ႉ။ မၼ်းၶဝ်ႈပႃးတူင်ႉၼိုင်ပၼ်တီႈ ထႆႇၶႅပ်းႁၢင်ႈ လၢႆဢၼ် တေႃႇမၼ်းပေႃး ထုၵ်ႇသွၵ်ႈႁႃႁၼ် ႁႂ်ႈပေႃးပဵၼ် ၽူႈဢွၼ်ၼႃႈပိူင်လူင် တီႈၼႂ်း ဝႅပ်ႉသီးရီး ဢၼ်ႁွင်ႉဝႃး ''[[:en:Heroin Web Series|Addicted]],'' ဢၼ်ပိုၼ်ၼႄ တီႈၼႂ်း ၸၼ်ႇဝႃႇရီႇ 2016 ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = China cracks down on Online Television|url = http://timesofindia.indiatimes.com/tv/news/english/China-cracks-down-on-Online-Television/articleshow/51252817.cms|website = timesofindia.indiatimes.com|access-date = 2017-06-19}}</ref> မၼ်ႊထုၵ်ႇလိူၵ်ႈ တႃႇတႅမ်ႈ တႃႇႁွင်ႉ ၵႂၢမ်းပိုတ်ႇ ၵႂၢမ်းလူပ်းလင်တႃႇ ''Addicted''ယဝ်ႉ။ ဝၢႆးလင်မႃး ငဝ်းတူင်ႉဢၼ်တဵမ်ထူၼ်မၼ်းၼၼ်ႉ လႆႈတၢင်ႇဝႆႉပၼ်တီႈၼိူဝ် [[YouTube]] ဢၼ်ႁဵတ်းႁႂ်ႈ ၵူၼ်းတူင်ႉၼိုင်ၼႂ်းငဝ်းၼၼ်ႉ ပေႃးၸိုဝ်ႈလိုဝ်းလင်ၵႂႃႇ တီႈၼႂ်း ပိုၼ်ႉတီႈ လႄႈ ၵူႈၸိုင်ႈမိူင်းၼၼ်ႉယဝ်ႉ။ ဝၢႆးသေၼၼ်ႉ သျီႇၼႆႉ လႆႈတႄႇ ၽင်ၸႂ်တီႈၼိူဝ် ၼႃႈၶွင်ၽဵင်းၵႂၢမ်းမၼ်းသေ ၼႂ်း ပီ 2016, မေႇ 1 ဝၼ်းၼၼ်ႉ မၼ်းလႆႈပိုၼ်ဢွၵ်ႇ ၶႅပ်းၵႂၢမ်းဢႄႇလ်ပမ်ႇမၼ်း ဢၼ်လႆႈၸိုဝ်ႈဝႃး [[:en:Light (EP)|''Light'']] သေ လႆႈတႄႇ ပၢင်ပွႆးႁွင်ႉၵႂၢမ်းမၼ်း တီႈၼႂ်း ဢေးသျႃးၼႆႉ တႄႇဢဝ် လိူၼ်ၵျုၼ်ႇတေႃႇ ဢေႃးၵၢတ်ႉ 2016 ယဝ်ႉ။ သျီႇၼႆႉ မၼ်းလႆႈၶဝ်ႈပႃးတူင်ႉၼိုင်တီးၼႂ်း လွင်ႈထႆႇၶႅပ်းႁၢင်ႈတႃႇ မႅၵ်ႉၵၸိၼ်းၾႅတ်ႉသျိၼ်ႇ လၢႆဢၼ်ယဝ်ႉ။ ဝၢႆးလင်မႃး မၼ်းယုၵ်ႉၸိုဝ်ႈသဵင်မၼ်း ၶိုၼ်ႈမႃးသုင်သေ လႆႈႁပ်ႉသူး "Best New Artist" ယဝ်ႉ။ လုၵ်ႉတီႈ တေႇတႃႇသႅၼ်ႇတႃႇ [[:en:Sina Weibo|သိင်းလၢင်ႉ ဝူၺ်ပူဝ်]] သေ လႆႈဢဝ်ၸိုဝ်ႈမၼ်း သႂ်ႇၼႂ်းသဵၼ်ႈမၢႆ ၽူႈၸိုဝ်ႈယႂ်ႇသဵင်လူင် 20 ၵေႃႉ တီႈ ဝူၺ်ပူဝ် သေ<ref>{{Cite web|title = Top 20 Most Popular Celebrities|url = http://weibo.com/5143870621/E87ECn6W2|website = weibo.com |access-date = 2016-09-13}}</ref> မၼ်းႁပ်ႉလႆႈ ထႅင်ႈႁူဝ်ၶေႃႈ "New Trend Idol of the year" တီႈ ''Star Magazine'' ယဝ်ႉ။<ref>{{Cite web|title = List of Popular stars of the year by Star magazine|url = http://www.weibo.com/3271606167/EpTk8mOWx|website = weibo.com |access-date = 2017-01-08}}</ref> လိူဝ်သေၼၼ်ႉဢမ်ႇၵႃး ယွၼ်ႉၵူၼ်းလႆႈၸႂ်မၼ်း ၼမ်မႃးလႄႈ တီႈပၼ်ၵၢင်ၸႂ်ၵမ်ႉၼမ်ၼႆႉ မၼ်းလႆႈ တီႈၼိုင်ႈမႃးယဝ်ႉ။<ref>{{Cite web |title = Top 100 Yinyuetai Fan-Festival |url = http://fanfestival.yinyuetai.com/y2016 |website = fanfestival.yinyuetai.com |access-date = 2016-07-12 |accessdate = 2021-02-10 |archivedate = 2017-06-11 |archiveurl = https://web.archive.org/web/20170611205306/http://fanfestival.yinyuetai.com/y2016 }}</ref><ref>{{Cite web|title = Charity donation|url = http://weibo.com/2462184090/E6LQCFF2w|website = weibo.com|access-date = 2016-09-05}}</ref><ref>{{Cite web|title = Alibaba Planet Wars |url = http://weibo.com/1766187712/E74XhljhQ|website = weibo.com|access-date = 2016-09-06}}</ref> မၼ်းထုၵ်ႇၽိတ်ႈမွၵ်ႇ ပဵၼ်ၶႅၵ်ႇၶိုၼ်ႈႁွတ်ႈတီႈ ပွႆးသျူဝ်းရေႇတီႇယူဝ်ႇ မိူၼ်ၼင်ႇ ''Billboard'' Radio China<ref>{{Cite web |title = 许魏洲:你们就是我的光 10 QUESTIONS |url = http://www.billboardradiochina.com/bb2/17-May-2016-xu-wei-zhou-ni-men-jiu-shi-wo-de-guang-10-QUESTIONS |website = billboardradiochina.com |access-date = 2016-05-17 |accessdate = 2021-02-10 |archivedate = 2020-08-07 |archiveurl = https://web.archive.org/web/20200807233240/https://www.billboardradiochina.com/bb2/17-May-2016-xu-wei-zhou-ni-men-jiu-shi-wo-de-guang-10-QUESTIONS }} {{Cite web |title=Archive copy |url=https://www.billboardradiochina.com/bb2/17-May-2016-xu-wei-zhou-ni-men-jiu-shi-wo-de-guang-10-QUESTIONS |accessdate=2021-08-09 |archivedate=2020-08-07 |archiveurl=https://web.archive.org/web/20200807233240/https://www.billboardradiochina.com/bb2/17-May-2016-xu-wei-zhou-ni-men-jiu-shi-wo-de-guang-10-QUESTIONS }}</ref> TofuPOP Radio - BEC Tero Radio တီႈမိူင်းထႆး, [[:en:Yang Lan|Yang Lan]] 8 p.m. Show, Hongdou Live Interview, FM 101.7 Music Kaleidoscope, လႄႈ NetEase Cloud Music (Xu Weizhou Cold Jokes), ၸဵမ် web shows လႄႈ live streaming events ၸိူဝ်းၼႆႉယဝ်ႉ။ တီႇသႅမ်ႇပႃႇ 8 မႃး မၼ်းပိုၼ်ဢွၵ်ႇ ၶႅပ်းၵႂၢမ်းၵေႃႉလဵဝ် "[[:en:Fun (Xu Weizhou song)|Fun]]" ဢၼ်ဢဝ်ထၢၼ်ႈတီႈၼိုင်ႈဝႆႉတီႈ လွၵ်းသဵၼ်ႈလၢႆဢၼ်ၼၼ်ႉယဝ်ႉ။ ဢၼ်ပဵၼ် ငဝ်းတူင်ႉၽဵင်း ပဵၼ်တၢင်းၵၢၼ်မၼ်းတႄႉ လႆႈပိုၼ်ဢွၵ်ႇ မိူဝ်ႈ တီႇသႅမ်ႇပႃႇ 15 ဝၼ်းၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = 1st Smash Hit |url = http://weibo.com/2169129705/EljONjJiE |website = weibo.com |access-date = 2016-12-09}}</ref><ref>{{Cite web|title = 1st Smash Hit For 79th Week |url = http://pop.weibo.com/#data_weektop |website = weibo.com |access-date = 2016-12-13}}</ref><ref>{{Cite web|title = 亚洲新歌榜 第七十九期周榜揭晓!TOP20详情 |url = http://weibo.com/5617768139/ElTlRiOqO|website = weibo.com |access-date = 2016-12-13}}</ref><ref>{{Cite web|title = 1st Pop Song Hit For 73nd week |url = http://www.weibo.com/3158731005/Emm0i28Nt|website = weibo.com |access-date = 2016-12-16}}</ref><ref>{{Cite web |title = Yinyue V Chart Weekly |url = http://vchart.yinyuetai.com/vchart/v?area=ML&date=20170102 |website = yinyuetai.com |access-date = 2017-01-06 |accessdate = 2021-02-10 |archivedate = 2020-10-24 |archiveurl = https://web.archive.org/web/20201024011317/http://vchart.yinyuetai.com/vchart/v?area=ML&date=20170102 }} {{Cite web |title=Archive copy |url=http://vchart.yinyuetai.com/vchart/v?area=ML&date=20170102 |accessdate=2021-02-10 |archivedate=2020-10-24 |archiveurl=https://web.archive.org/web/20201024011317/http://vchart.yinyuetai.com/vchart/v?area=ML&date=20170102 }}</ref> လွင်ႈၸိုဝ်ႈလိုဝ်းလင်မၼ်းၼႆႉ ထုၵ်ႇဢဝ်မၼ်းတၢင်ႇထၢၼ်ႈ ထိုင်ဢွင်ႈတီႈ 37 တီႈ ၼႂ်း ၵူၼ်းၸိုဝ်ႈလိုဝ်းလင် လႄႈ ၽူႈႁူမ်ႇငမ်းပၢႆးမၢၵ်ႈမီး ၼႂ်းၽူႈၸိုဝ်ႈလိုဝ်းလင် မိူင်းၶႄႇ 50 ၵေႃႉ ဢၼ် Data Win လႆႈႁဵတ်းသဵၼ်ႈမၢႆဝႆႉၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Data win 2016 Top 50 most internet & business influencers |url = http://weibo.com/1104220301/Erruf9jEi|website = weibo.com|access-date = 2017-01-18}}</ref> ===2017: သျူဝ်းႁူဝ်ႁႅၵ်ႇတင်းၼမ် လႄႈ လွင်ႈတူင်ႉၼိုင် ပွတ်းပိတ်း === ပွတ်းလႃႈ ၸၼ်ႇဝႃႇရီႇၼၼ်ႉ သျီႇႇလႆႈၼႄ ပဵၼ်တၢင်းၵၢၼ် လွင်ႈ ''Intangible Her,''ၵူႈမဵဝ်းမဵဝ်း ဢၼ်ပိုၼ်ၼႄ တီႈ [[:en:Tencent Video|Tencent Video]]ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou's first appearance on variety show entitled ''Intagible Her''|url = http://weibo.com/6076264843/EpZ8Uem9Z|website = weibo.com |access-date = 2017-01-09}}</ref> လွင်ႈဢွင်ႇမၢၼ် သျူဝ်းၵူႈမဵဝ်းမဵဝ်း ၸိူဝ်းမၼ်းၼႄမႃးၼၼ်ႉသေ ၼႂ်းၵႃႈ ၵူၼ်းၸိုဝ်ႈလိုဝ်းလင် ၵူႈၽၢႆႇၽၢႆႇၵူႈမဵဝ်းမဵဝ်း 10 ၵေႃႉၼၼ်ႉ ၼႂ်းၶိုင်ႈပီၼၼ်ႉၵူၺ်း မၼ်းႁွတ်ႈၽႅဝ်ထိုင် ဢွင်ႈတီႈ 5 ယဝ်ႉ။<ref>{{Cite web|title = Top 10 most popular variety stars of the first half year 2017|url = https://weibo.cn/5909342713/4131998711049665|website = weibo.com |access-date = 2017-07-22}}</ref> ပွတ်ႈလႃႈ လိူၼ်မၢတ်ႉၶျ်မႃး သျီႇလႆႈႁွင်ႉၵႂၢမ်း "The Heroes" ၽၢႆႇၶႄႇ ဢၼ်ပဵၼ်ၵႂၢမ်းငဝ်းတူင်ႉ ၶၼေႇတီႇယႅၼ်ႇ ''[[:en:Snowtime!|Snowtime!]]'' ဢၼ် [[:en:Simple Plan|Simple Plan]] ၵေႃႉႁဵတ်းမႃးၼၼ်ႉသေ မၼ်းလႆႈၽႅဝ်တီႈၸိၵ်း ''Billboard'' China V chart လႄႈ Mandarin chart ၼႂ်းဝူင်ႈလဵဝ်ႈၵၼ် ပဵၼ်ထူၼ်ႈၵမ်းသွင်ယဝ်ႉ။<ref>{{Cite web|title = Billboard Radio China Chart 16-March-2017|url = http://www.billboardradiochina.com/chart/16-March-2017-hua-yu-Top-10-Mandarin-Top-10-Songs-zh_hk|website = billboardradiochina.com|access-date = 2017-03-16|accessdate = 2021-02-11|archivedate = 2020-08-07|archiveurl = https://web.archive.org/web/20200807233025/https://www.billboardradiochina.com/chart/16-March-2017-hua-yu-Top-10-Mandarin-Top-10-Songs-zh_hk}} {{Cite web |title=Archive copy |url=https://www.billboardradiochina.com/chart/16-March-2017-hua-yu-Top-10-Mandarin-Top-10-Songs-zh_hk |accessdate=2021-08-09 |archivedate=2020-08-07 |archiveurl=https://web.archive.org/web/20200807233025/https://www.billboardradiochina.com/chart/16-March-2017-hua-yu-Top-10-Mandarin-Top-10-Songs-zh_hk }}</ref><ref>{{Cite web|title = China V-Chart 25-March-2017|url = http://www.billboard.com/charts/china-v-chart/2017-03-25|website = billboardradiochina.com|access-date = 2017-03-15}}</ref> လိူၼ်မၢတ်ႉၶျ် 4 ဝၼ်းမႃး မၼ်းလႆႈႁဵတ်းသၢင်ႈ ၵႂၢမ်း Live တင်း ၸုမ်းတွႆႇတိုင်ႈ ရွၵ်ႉၶ် တီႈ ပေႇၵျိင်းယဝ်ႉ။<ref>{{Cite web|title = 全明星助力《冰雪大作战》 许魏洲演唱中文主题曲 |url = http://ent.jxnews.com.cn/system/2017/03/01/015827667.shtml|access-date = 2017-03-01}}</ref><ref>{{Cite web|title = 许魏洲 & Simple Plan 唱主题曲的乐队一起合作现场唱歌 |url = http://weibo.com/2141246805/EyeVljUJ5|access-date = 2017-03-04}}</ref> ၼၼ်ႉသေဢမ်ႇၵႃး ၽွင်းႁဵတ်းပၢင်ၸႅင်ႈၶၢဝ်ႇ ငဝ်းတူင်ႉလုၵ်ႈဢွၼ်ႇၼၼ်ႉ လုၵ်ႉတီႈ လုမ်းၽွင်းမိူင်း ၶၼေႇတီႇယႅတ်ႇ လႄႈ ၸုမ်းငဝ်းတူင်ႉလုၵ်ႈဢွၼ်ႇ ၶဝ် မၼ်ႈၸႂ်ပၼ်မၼ်း သူးၽွင်းမိူင်း တႃႇ "လွင်ႈလႅၵ်ႈလၢႆႈ ၽိင်ႈငႄႈ ၶႄႇ-ၶၼေႇတီႇယႅၼ်ႇ" လႄႈ "လွင်ႈယုၵ်ႉယွင်ႈ ငဝ်းတူင်ႉလုၵ်ႈဢွၼ်ႇ" ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = 许魏洲 中加文化交流大使 儿童电影推广大使 |url = http://weibo.com/2141246805/EyeQgi3SW|website = weibo.com|access-date = 2017-03-04}}</ref> ဢေႇပရႄႇ 1 ဝၼ်းၼၼ်ႉ သျီႇလႆႈ ၶိုၼ်ႈႁွတ်ႈ ၼင်ႇ ၶႅၵ်ႇ တီႈ သျူဝ်းၽဵင်းၵႂၢမ်း ''Global Chinese Music Chart'' (ဢၼ်တိုၵ်ႉ ၼႄဝႆႉယူႇတီႈ [[:en:China Central Television|CCTV15]]) ၼၼ်ႉသေ မၼ်းလႆႈ ႁွင်ႉၵႂၢမ်းမၼ်း ဢၼ်ပဵၼ် "Fun" ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = 许魏洲榜上榜献唱《放》 白衬衫展少年阳光帅气 |url = http://ent.sina.com.cn/y/yneidi/2017-04-07/doc-ifyeceza1458744.shtml |website = ent.sina.com.cn |access-date = 2017-04-11}}</ref> မၼ်းထုၵ်ႇလိူၵ်ႈ တႃႇႁွင်ႉၵႂၢမ်း "Screaming Night" ဢၼ်ပဵၼ် ၽဵင်း တွၼ်ႈတႃႇ ပၢင်ပွႆး ၵၢင်ၶမ်ႈ [[:en:iQiyi|iQIYI]] 2017 တီႈ ဢၼ်မၼ်းပိုၼ်ဢွၵ်ႇ ငဝ်းႁၢင်ႈသဵင်ၽဵင်းၵႂၢမ်းမၼ်းၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou was selected to sing "Screaming Night"|url=http://weibo.com/5541658233/F03kq4Tuy|website = weibo.com|access-date = 2017-04-24}}</ref> ၼႂ်းလိူၼ်မေႇ၊ မၼ်းလႆႈထုၵ်ႇ ဢၢပ်ပဵၼ် ၽွင်းတၢင် "Starlight" သေ မၼ်းပဵၼ် ၸဝ်ႈပၢႆးမွၼ်းမိူင်းၶႄႇလူင် ၵေႃႉထူၼ်ႈၼိုင်ႈ ဢၼ်ထုၵ်ႇၽိတ်ႈမွၵ်ႇၸူး [[:en:Billboard Music Award|''Billboard'' Music Awards]] တီႈ [[:en:Las Vegas|လၢတ်ႉ ဝီးၵႅတ်ႉ]]ယဝ်ႉ။<ref>{{Cite web|title = Chinese Artist Xu Weizhou was the first Mainland artist to be officially invited to Billboard Music award |url = http://www.weibo.com/6016400886/F2TsS69C7|website = weibo.com|access-date = 2017-05-13}}</ref> ဝၢႆးသေၼၼ်ႉ မၼ်းလႆႈ လဵၼ်ႈၸိူင်း ပဵၼ်တူဝ်ၸိူင်းပိူင်လူင် တွၼ်ႈတႃႇ ၵၢၼ်ငဝ်းတူင်ႉ ''Vogue'' ဢၼ်ႁွင်ႉဝႃႈ ''Seize the Moment'' ဢၼ်ပဵၼ် ငဝ်းတူင်ႉပွတ်း ဢၼ်တႄႇပိုၼ်းဢွၵ်ႇ တီႈ [[:en:Cannes Film Festival|Cannes Film Festival]] ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Chinese Artist Xu Weizhou played the main character role for Seize the moment|url = http://www.weibo.com/2678697303/F3JapBVXr|website = weibo.com|access-date = 2017-05-18}}</ref> ဝၢႆးသေ လွင်ႈဢွင်ႇမၢၼ် ''[[:en:Light (Xu Weizhou EP)|Light]]'' ယဝ်ႉသေ မၼ်းပိုၼ်ဢွၵ်ႇ first quarter ၶႅပ်းဢႄႇလ်ပမ်ႇၵေႃႉလဵဝ် ဢၼ်ပၼ်ႁူဝ်ၶေႃႈဝႆႉဝႃႈ [[:en:The Time (Xu Weizhou album)|''The Time'']] မိူဝ်ႈဝၼ်းတီႈ ဢေႃးၵၢတ်ႉ 10 ဝၼ်း<ref>{{Cite web|title = Xu Weizhou's second solo album|url = https://weibo.cn/1797270765/4135517266680778|website = weibo.com|access-date = 2017-07-31}}</ref> ဢၼ်လႆႈၶၢႆ ၶႅပ်း 450,000 သေ ထုၵ်ႇၼႄႉၼွၼ်းပဵၼ် double platinum ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu Weizhou's second solo album sales on QQ|url = http://y.qq.com/msa/xuweizhou15mins/index_new.html |website = y.qq.com|access-date = 2017-08-21}}</ref><ref>{{Cite web|title = Xu Weizhou's second solo album sales on KUGOU|url = http://zhuanjistatic.kugou.com/html/pc_commonchargeV3/index_90201.html |website = zhuanjistatic.kugou.com|access-date = 2017-08-21}}</ref><ref>{{Cite web|title = Xu Weizhou's second solo album sales on KUWO|url = http://vip1.kuwo.cn/fans/fans/template/index.html?key=xuwz20170808&fromSrc=11&fromkw=share |website = vip1.kuwo.cn|access-date = 2017-08-21}}</ref> ဢၼ်ပဵၼ် second quarter မၼ်းတႄႉ မၼ်းလႆႈ ပိုၼ်ဢွၵ်ႇတီႈၼိူဝ် ဢွၼ်ႇလၢႆး ပဵၼ် ၾရီး မိူဝ်ႈ ဢွၵ်ႇထူဝ်ႇပႃႇ 20 တီႈ ဝၼ်းၵိူတ်ႇ ထူၼ်ႈ 23 ၶူပ်ႇ<ref>{{Cite web|title =许魏洲《15分钟的光芒》封面照公开 由陈漫掌镜 |url =http://ent.sina.com.cn/y/yneidi/2017-10-17/doc-ifymvuyt2143758.shtml |website =ent.sina.com.cn|access-date = 2017-12-09}}</ref> သေ ဢၼ်ပဵၼ် third quarter မၼ်း လႆႈပိုၼ်ဢွၵ်ႇ မိူဝ်ႈ တီႇသႅမ်ႇပႃႇ 12 ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = 许魏洲《15分钟的独白》发布 自作《猫》告白粉丝 |url = http://ent.sina.com.cn/y/yneidi/2017-12-12/doc-ifypnqvn3609230.shtml |website = ent.sina.com.cn |access-date = 2017-12-12}}</ref> မၼ်းထုၵ်ႇလိူၵ်ႈတႃႇ ႁွင်ႉၵႂၢမ်းၵိုၵ်းငဝ်းတူင်ႉ ဢၼ်ပဵၼ် တွၼ်ႈတႃႇ ငဝ်းတူင်ႉ ဢႅတ်ႉသျိၼ်ႇ ဢိင်းၵလဵတ်ႈ-ၶႄႇ ''[[:en:S.M.A.R.T. Chase|S.M.A.R.T. Chase]]'' ဢၼ်ပၼ်ႁူဝ်ၶေႃႈဝႆႉဝႃႈ "Ruins of Time" မိူဝ်ႈ ဢေႃးၵၢတ်ႉ 23 ၼၼ်ႉသေ ၵႂၢမ်းၼၼ်ႉ ဢၼ်ပဵၼ် ၽူႈႁွင်ႉၵႂၢမ်းၸိုဝ်ႈသဵင်ယႂ်ႇ [[:en:Jay Chou|Jay Chou]] ၵေႃႉတႅမ်ႈဝႆႉၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = 《极致追击》将曝主题曲 许魏洲演绎周杰伦新作|url =http://ent.sina.com.cn/y/yneidi/2017-08-23/doc-ifykcppy0574967.shtml |website = ent.sina.cn|access-date = 2017-08-23}}</ref> ၵႂၢမ်းမၼ်း ဢၼ်ပဵၼ် "[[:en:So What (Xu Weizhou song)|So What]]", "[[:en:Leave Me Alone (Xu Weizhou song)|Leave Me Alone]]", လႄႈ "Ruins of Time" ၼႆႉ လႆႈမီးၼႂ်း ၸၼ်ႉ ၼိုင်ႈ တေႃႇ သၢမ် တီႈၼိူဝ် [[:en:YinYueTai|YinYueTai]] China V Chart တွၼ်ႈတႃႇ ငဝ်းတူင်ႉၽဵင်းၵႂၢမ်း ဢၼ်ၵူၼ်းတူၺ်းၼမ်သေပိူၼ်ႈ တႃႇ ဝူင်ႈထူၼ်ႈ 38 လႄႈ 39 ထပ်းၵၼ်ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = So what, Leave me alone and Ruins of Time, was ranked respectively on Top 1-3 most viewed music videos for the 38th week|url = https://weibo.com/2420490011/Fmn9ovfcy|website = weibo.cn|access-date = 2017-09-18}}</ref><ref>{{Cite web|title = So what, Leave me alone and Ruins of Time, was ranked respectively on Top 1-3 most viewed music videos for the 39th week|url = https://weibo.com/2420490011/FnqAbAsj3|website = weibo.cn|access-date = 2017-09-25}}</ref> သႅပ်ႇထႅမ်ႇပႃႇ 1 ဝၼ်းၼၼ်ႉ မၼ်းလႆႈ ပိုၼ်ဢွၵ်ႇ ပပ်ႉၶႅပ်းႁၢင်ႈမၼ်း ဢၼ်ပဵၼ် ပွၵ်ႈၵမ်းဢွၼ်တၢင်းသုတ်း ဢၼ်ပၼ်ႁူဝ်ၶေႃႈဝႆႉဝႃႈ “This is Timmy” ဢၼ်လုၵ်ႉတီႈ [[:en:JD.com|Jingdong]] ၵေႃႉပိုၼ်ဢွၵ်ႇၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou as Jingdong reading ambassador held the press conference for his first photo book named "This is Timmy"|url = https://weibo.com/5392863813/FjNFceDIy|website = weibo.cn|access-date = 2017-09-01}}</ref> ဝၢႆးလင်မႃး လုၵ်ႉတီႈ [[:en:China Central Television|CCTV]] လႆႈပိုၼ်ၽၢဝ်ႇပဵၼ်တၢင်းၵၢၼ်ဝႃႈ သျီႇၼႆႉ ၶဝ်ႈပႃးၼႂ်း ၽူႈႁွင်ႉၵႂၢမ်းပၢၵ်ႇၵေႃႉ ဢၼ်တႃႇႁွင်ႉၵႂၢမ်း "ၶႄႇ" ဢၼ်ပဵၼ် ၵႂၢမ်း တွၼ်ႈတႃႇယုၵ်ႉယွင်ႈ လွင်ႈၶိုၼ်းၽွတ်ႈႁႅင်းမိူင်းၶႄႇ ထူၼ်ႈတဵမ် 40 ပီၼၼ်ႉယဝ်ႉ။ မၼ်းလႆႈၶိုၼ်ႈႁွတ်ႈပႃး ပၢင်ပၼ်သူး [[:en:Anhui Television|Anhui]] TV Drama မိူဝ်ႈ တီႇသႅမ်ႇပႃႇ 16 ဝၼ်းၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu attended the annual Anhui Television TV Drama Awards|url = https://weibo.com/1282850602/FzYinfVc4|website = weibo.cn|access-date = 2017-12-16}}</ref> လုၵ်ႉတီႈ [[:en:Sina Weibo|သိင်းလၢင်ႉ ဝူၺ်ပူဝ် ]] လႆႈဢွၵ်ႇၼႄ သဵၼ်ႈမၢႆ "လၢဝ်ၸိုဝ်ႈလိုဝ်းလင် 2017" ၼၼ်ႉ သျီႇၼႆႉ ၼႂ်းၵႃႈလၢဝ်ထႅၼ်ႈ 10 ၵေႃႉၼၼ်ႉ မၼ်းပဵၼ် ၵေႃႉထူၼ်ႈ 10 သေ ၵူၼ်းၸိူဝ်းၶိုၼ်းပိုၼ်ၽႄႈၽူတ်ႉၼၼ်ႉ မီးယူႇ 65.99 လၢၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Sina revealed 2017 Popular Star Lists and Xu ranked 10th place on Top 10 stars with highest reposting amount on weibo|url = https://weibo.com/1893711543/FDRRVwdGH|website=weibo.com|access-date = 2018-01-11}}</ref> ၽူတ်ႉမၼ်း တီႈ Sanya ၼၼ်ႉၵေႃႈ လႆႈထုၵ်ႇႁွတ်ႈထိုင် တီႈ 10 ၼႂ်းၵႃႈ ၽူတ်ႉ 10 ဢၼ် ဢၼ်ၸိုဝ်ႈလိုဝ်းလင်သေပိူၼ်ႈ သေ ၵူၼ်းသိုပ်ႇၽႄႈမၼ်းမီးၵႂႃႇ 6.69 လၢၼ်ႉယဝ်ႉ။ လိူဝ်သေၼၼ်ႉဢမ်ႇၵႃး ဢၼ်ပဵၼ် ၽဵင်းၵႂၢမ်း မၼ်း [[:en:The Time (Xu Weizhou album)|15 Minutes for Craziness]] ၼၼ်ႉၵေႃႈ လႆႈႁွတ်ႈထိုင်တီႈ ထူၼ်ႈ သီႇ ၼႂ်းၵႃႈ ထႅၼ်ႈၽဵင်းၵႂၢမ်း 10 ႁူဝ်ၼၼ်ႉသေ ၵူၼ်းတူၺ်းမၼ်း မီးယူႇ 380 လၢၼ်ႉယဝ်ႉ။ ဢၼ်ပဵၼ် ငဝ်းတူင်ႉၽဵင်းမၼ်း "The Heroes" ဢၼ်ထုၵ်ႇတၢင်ႇၽူတ်ႉတီႈ ၽဵင်း Sina ၼၼ်ႉၵေႃႈ လႆႈႁွတ်ႈထိုင်တီႈ ထူၼ်ႈ သီ ၼႂ်းၵႃႈ ထႅၼ်ႈၽဵင်းၵႂၢမ်း 10 ႁူဝ်းသေ ၵူၼ်းလႆႈၸၼ်/ၵူၼ်းသိုပ်ႇၽႄႈ/ၵူၼ်းပၼ်ၶွမ်းမႅၼ်း မီးၵႂႃႇ 0.6 လၢၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Sina revealed 2017 Popular Star Lists|url = https://www.weibo.com/2562282372/FDYZgENbQ|website=weibo.com|access-date = 2018-01-12}}</ref> === 2018: ပွႆးဢွၵ်ႇၼႃႈႁူဝ်ႁႅၵ်ႇ TV drama === လုၵ်ႉတီႈ [[:en:20th Century Fox|20th Century Fox]] လႆႈပိုၼ်ၽၢဝ်ႇဝႃႈ သျီႇၼႆႉ ထုၵ်ႇလိူၵ်ႈ တႃႇႁွင်ႉၵႂၢမ်းပရူဝ်ႇမူဝ်းသျိၼ်းၶႄႇ "Maze" ဢၼ် [[:en:Harvey Mason Jr.|Harvey Mason Jr.]] ၵေႃႉႁဵတ်းဢွၵ်ႇ တႃႇ ငဝ်းတူင်ႉဢမေႇရိၵၢၼ်ႇ ''[[:en:Maze Runner: The Death Cure|Maze Runner: The Death Cure]]''ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu was selected to sing the Chinese promotional song for Maze Runner: The Death Cure|url=https://weibo.com/1890650350/FFvCD8mKN|website = weibo.com |access-date = 2018-01-22}}</ref> မၼ်းလႆႈထုၵ်ႇ ၽိတ်ႈမွၵ်ႇ တႃႇၶဝ်ႈႁူမ်ႈတီႈ ပၢင်ပွႆး Galas ၶၢဝ်းမႆႈၶႄႇ တီႈ ႁူင်းပွႆႇငဝ်းႁၢင်ႈသဵင် ၸိုဝ်ႈသဵင်ယႂ်ႇသၢမ်ဢၼ် [[:en:Dragon Television|Dragon Television]], [[:en:Anhui Television|Anhui Television]], လႄႈ [[:en:Beijing Media Network|Beijing Television]] ၸိူဝ်းၼႆႉယဝ်ႉ။<ref>{{Cite web|title = Xu participated in the Dragon Television, Anhui Television and Beijing Television's Chinese Spring Festival Gala|url=https://www.weibo.com/3154827593/G0lUmfZTe|website = weibo.com |access-date = 2018-01-27}}</ref> ၸၼ်ႇဝႃႇရီႇ 31 မႃး မၼ်းလႆႈ ပိုၼ်ဢွၵ်ႇသၢမ်လိူၼ်ထူၼ်ႈသီႇ ၸိူဝ်းပဵၼ်ႁင်း ''The Time'', "15 Minutes for Fantasy" ၼၼ်ႉယဝ်ႉ။ ဝၢႆးသေၼၼ်ႉ ''The Time'' ၼႆႉ လႆႈပိုၼ်ဢွၵ်ႇတီႈၼိူဝ် ဢွၼ်ႇလၢႆးတဵမ်တဵမ်ထူၼ်ႈထူၼ်ႈသေ မၼ်းလႆႈၸတ်းႁဵတ်း ပၢင်ၸႅင်ႈၶၢဝ်ႇ တွၼ်ႈတႃႇ ၶႅပ်းဢႄႇလ်ပမ်ႇ တီႈ [[ထၢႆႇဝၢၼ်း]] မိူဝ်ႈ ၾႅပ်ႇဝႃႇရီႇ 3 ဝၼ်းၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu held the press conference for his second album "The Time" in Taiwan on 3 February|url=https://www.facebook.com/SonymusicTaiwanCPOP/videos/1584422661642662/|website = facebook.com |access-date = 2018-01-29}}</ref> ၼႂ်းလိူၼ်ဢေႇပရႄႇၼၼ်ႉ လႆႈၶဝ်ႈႁူမ်ႈတီႈ ပရေႃးၵျႅၵ်ႉ SuperdrySounds ဢၼ်ပဵၼ်လွင်ႈလဝ်ႇမူၼ်ႈ ပႃႇတီႇၵမ်ႇၽႃႇ ဢၼ်ႁဵတ်းတီႈ လၼ်ႇတၼ်ႇ လႄႈ တီႈပၢင်ပွႆးၽဵင်းၵႂၢမ်းၸတေႃႇပႄႇရီႇ တီႈ သျင်ႇႁၢႆး ၼႂ်းလိူၼ်ၼၼ်ႉၼင်ႇၵဝ်ႇယဝ်ႉ။<ref>{{Cite web|title = Xu joined the SuperdrySounds project and performed in the launching global party in London|url=https://m.weibo.cn/5392863813/4227890549271076|website = weibo.cn |access-date = 2018-04-12}}</ref><ref>{{Cite web|title = Xu performed at the Strawberry Music Festival in Shanghai as part of SuperdrySounds project|url=https://m.weibo.cn/5392863813/4234233403305382|website = weibo.cn |access-date = 2018-04-29}}</ref> ဢေႇပရႄႇ 16 ၼၼ်ႉ သျီႇတႄႇထႆႇငဝ်းတူင်ႉ တရႃႇမႃႇသီးရီး ဢၼ်မႂ်ႇ ''My Girlfriend'' ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu and other casts at My Girlfriend filming ceremony|url=https://m.weibo.cn/1864507535/4229516911734725|website = weibo.cn |access-date = 2018-04-16}}</ref> ၼႂ်းလိူၼ်မေႇ, သျီႇ ၼႆႉ မၼ်းလႆႈတႄႇၶဝ်ႈပႃးၼင်ႇၶႅၵ်ႇ တီႈ Give Me Five တီႈ Zhejiang TV တႃႇ သွင်တွၼ်ႈယဝ်ႉ။<ref>{{Cite web|title = Xu guest-starred in Give Me Five on Zhejiang TV|url=https://m.weibo.cn/5875460014/4237529416565061|website = weibo.cn |access-date = 2018-05-08}}</ref><ref>{{Cite web|title = Xu guest-starred in Give Me Five on Zhejiang TV|url=https://m.weibo.cn/5875460014/4240428515440636|website = weibo.cn |access-date = 2018-05-16}}</ref> ဝၢႆးလင်ၼၼ်ႉ ဢၼ်ပဵၼ်ဝႃးသျိၼ်းတီႇၵျိတ်ႇတႄႇ ၶွင် ''TheTime'''ၼၼ်ႉ လႆႈပိုၼ်ဢွၵ်ႇပဵၼ်တၢင်းၵၢၼ် တီႈ မိူင်းထႆးသေ ၼႂ်း လိူၼ်မေႇ 16 တီႈ iTunes ၼၼ်ႉ ၸၼ်ႉမၼ်းထိုင်တီႈၼိုင်ႈယဝ်ႉ။<ref>{{Cite web|title = The Time reached number one on iTunes top 100 Albums in Thailand|url=https://m.weibo.cn/5392863813/4240323950939604|website = weibo.cn |access-date = 2018-05-16}}</ref> လိူၼ်မေႇ 26၊ သျီႇ ႁဵတ်းပၢင်ပွႆး တီႈ မိူင်းၵွၵ်ႇ ဢၼ်ပဵၼ် ၶၢဝ်းတၢင်းဢေးသျႃးပွၵ်ႈၵမ်းသွင်ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu held the Bangkok concert of his second Asia Tour|url= https://m.weibo.cn/5392863813/4246951488680345|website = weibo.cn |access-date = 2018-06-03}}</ref> တီႈ မေႇ 28၊ Tencent ပိုၼ်ၽၢဝ်ႇဝႃႈ သျီႇၼႆႉ ပဵၼ် ၽူႈမီးသုၼ်ႇလၢတ်ႈၶဝ် တွၼ်ႈတႃႇ ဢႅပ်ႉငဝ်းတူင်ႉပွတ်း Weishi ၼၼ်ႉ ၼႆယဝ်ႉ။<ref>{{Cite web|title = Tencent announced Xu as their new spokesperson for short video app Weishi|url=https://m.weibo.cn/6479255096/4244583388814098|website = weibo.cn |access-date = 2018-05-28}}</ref> ၼႂ်းလိူၼ်ၵျုၼ်ႇ၊ ၼႂ်းသဵၼ်ႈမၢႆ ဢေးသျၢၼ်း ဢၼ်ၸၼ်ႁူဝ်ၸႂ် 100 ၵေႃႉ ဢၼ် Starmometer ပၼ်ထၢၼ်ႈ ၼၼ်ႉ သျီႇ ၽႅဝ်ဝႆႉတီႈ ထူၼ်ႈသၢမ်ယဝ်ႉ။<ref>{{Cite web|title = 100 Asian heartthrobs of 2018 complete results|url=https://twitter.com/starmometer/status/1011174190882394112?s=19|website = twitter.com |access-date = 2018-06-25}}</ref> ၼႂ်းလိူၼ်ၵျူႇလၢႆႇၼၼ်ႉ သျီႇ လႆႈၶဝ်ႈႁူမ်ႈပႃးတီႈ [[:en:Shake It Up (Chinese TV series)|Shake It Up]] သျူဝ်းတၢင်းၵႃႈ တီႈ Shanghai TV<ref>{{Cite web|title = Xu joined dance variety show Shake It Up on Shanghai TV|url=https://m.weibo.cn/6581015742/4255833196398049|website = weibo.cn |access-date = 2018-06-28}}</ref>သေ တီႈပၢင်ၶႄႉၶဵင်ႇ ၸုပ်ႈလိုၼ်းသုတ်းၼၼ်ႉ လႆႈဢွင်ႇပႄႉ တီႈသွင်ယဝ်ႉ။ မိူဝ်ႈ ၵျူႇလၢႆႇ 5ၼၼ်ႉ လႆႈလုၵ်ႉတီႈ JD.com သေ လႆႈတႄႇၶၢႆထႃႈ ဢၼ်ပဵၼ်ၶႅပ်းၵႂၢမ်း ''The Time'' ၼၼ်ႉသေ ၼႂ်းၶၢဝ်းတၢင်း ၼိုင်ႈၸူဝ်ႈမူင်းၵူၺ်း လႆႈၶၢႆ ၼမ်လိူဝ် 13,000 ၶႅပ်းယဝ်ႉ။<ref>{{Cite web|title = Xu physical album pre-sale on JD.com|url=https://m.weibo.cn/2805678661/4258427184314439|website = weibo.cn|access-date = 2018-07-05}}</ref> ၵျူႇလၢႆႇ 10 ဝၼ်းမႃး ဢၼ်ပဵၼ် ၶႅပ်း ''The Time'' ဢၼ်ပဵၼ် ဝႃးသျိၼ်းထၢႆႇဝၢၼ်းၼၼ်ႉ လႆႈတႄႇၶၢႆထႃႈသေ တီႈၼႂ်းလွၵ်းသဵၼ်ႈၶၢႆၼၼ်ႉ မၼ်းၵိုင်ႉၵၢင်ႉႁွတ်ႈထိုင်ၵႂႃႇ တီႈၼိုင်ႈယဝ်ႉ။<ref>{{Cite web|title = Xu releases Taiwan version of the physical album of The Time|url=https://m.weibo.cn/5392863813/4260014275512866|website = weibo.cn |access-date = 2018-07-09}}</ref> ဝၢႆးလင်မႃး လုၵ်ႉတီႈ Entertainment Star Business လႆႈပိုၼ်ဢွၵ်ႇ သဵၼ်ႈမၢႆ ၽူႈၸိုဝ်ႈလိုဝ်းလင် ဢၼ်မီးၵႃႈၶၼ်ပၢႆးမၢၵ်ႈမီး တႃႇ 2018 ၼၼ်ႉ သျီႇၼႆႉ လႆႈမီးတီႈ ၸၼ်ႉထူၼ်ႈၼိုင်ႈ တီႈၼႂ်း ၸဝ်ႈပၢႆးမွၼ်း ဢၼ်မီးတိုဝ်းတၢင်းၸိၵ်းၸွမ်ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Entertainment Star Business revealed 2018 Star Commercial Value List|url=https://m.weibo.cn/3079676925/4265318731341007|website = weibo.cn|access-date = 2018-07-24}}</ref> မိူဝ်ႈ 2018 ၼၼ်ႉၵေႃႈ မၼ်းထုၵ်ႇမၵ်းမၢႆ ၸၼ်ႉ တီႈ ''[[Forbes]]'' 30 ၼႂ်းသဵၼ်ႈမၢႆ ၸဝ်ႈပၢႆးမွၼ်းၶႄႇ ဢၼ်ဢႃႇယု 30 လူင်းတႂ်ႈၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Forbes 30 Under 30 China list|url=https://m.weibo.cn/1765373140/4268578943527482|website = weibo.cn |access-date = 2018-02-08}}</ref> ၼႂ်း ဢွၵ်ႇထူဝ်ႇပႃႇၼၼ်ႉ သျီႇ လႆႈၶိုၼ်ႈႁွတ်ႈ ပၢင်ၵႅဝ်ႈလူပ်းလင် တီႈ ပွႆး Silk Road International Film ပွၵ်ႈထူၼ်ႈ 5 သေ လႆႈ လဝ်ႇမူၼ်ႈ တင်းၵႂၢမ်းမၼ်း ဢၼ်ပဵၼ် "Glory"ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu attended the 5th Silk Road International Film Festival Closing Ceremony|url=https://www.weibo.com/5392863813/GDMkLx1CT|website = weibo.com |access-date = 2018-10-13}}</ref> ၼႂ်းဢွၵ်ႇထူဝ်ႇပႃႇ 20 မၼ်းႁဵတ်းပၢင်ပွႆး ဢၼ်ဢမ်ႇလႆႈပၼ်ၵႃႈမၼ်း တီႈ ဝၼ်းၵိူတ်ႇမၼ်း ထူၼ်ႈ 24 ၶူပ်ႇ ၵႃးတီႈ [[:en:Olympic Sports Center Gymnasium (Beijing)|Olympic Sports Center Gymnasium]] တီႈ ပေႇၵျိင်း သေ လႆႈပိုၼ်ဢွၵ်ႇပႃး ၵႂၢမ်းဢၼ်မႂ်ႇ "Everything About You" တွၼ်ႈတႃႇ ၽူႈပၼ်ႁႅင်းမၼ်းယဝ်ႉ။<ref>{{Cite web|title = Xu's 24th birthday concert|url=https://www.weibo.com/5392863813/GELa7hZbd|website = weibo.com |access-date = 2018-10-20}}</ref> မၼ်းထုၵ်ႇမၵ်းမၢႆၸၼ်ႉ ထူၼ်ႈ 70 ၼႂ်းၵႃႈ ၽူႈၸိုဝ်ႈလိုဝ်းလင်ပၢႆးမၢၵ်ႈမီးၵႃႈၶၼ်ၶႄႇ ထႅၼ်ႈ 100 ၵေႃႉၼၼ်ႉယဝ်ႉ။ ၼူဝ်ႇဝႅမ်ႇပႃႇ 19 ဝၼ်း လႆႈပိုၼ်ၽၢဝ်ႇဝႃႈ သျီႇၼႆႉ လႆႈၶဝ်ႈပႃးတူင်ႉၼိုင်ၼႂ်း တရႃႇမႃႇလဵၼ်ႈႁႅင်း ဢၼ်လႆႈၸိုဝ်ႈဝႃႈ ''Ping Pong'' ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu and other casts at Ping Pong Life filming ceremony|url=https://www.weibo.com/6481027327/H3pt6Cqdh|website = weibo.com |access-date = 2018-11-19}}</ref> ဝၢႆးလင်ၼၼ်ႉ မၼ်းလႆႈထုၵ်ႇလိူၵ်ႈ တႃႇႁွင်ႉၵႂၢမ်းပိူင်လူင် တွၼ်ႈတႃႇ ၸုမ်းၵူၼ်းၼုၼ် ၶွမ်ႇမျူႇၼိတ်ႉၶႄႇ<ref>{{Cite web|title = Xu was selected to sing the theme song for the China's Communist Youth League|url=https://www.weibo.com/1797270765/H2Vm66qog|website = weibo.com |access-date = 2018-11-16}}</ref> လႄႈ ပွႆးယုၵ်ႉယွင်ႈ ၶိုၼ်းၵေႃႇသၢင်ႈ မိူင်းၶႄႇ တဵမ် 40 ပီ ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu was selected to sing the theme song for the China's 40 years of Reform Celebration|url=https://www.weibo.com/3937348351/H66wLuHH4|website = weibo.com |access-date = 2018-12-07}}</ref> ၼႂ်းတီႇသႅမ်ႇပႃႇ မၼ်းၶိုၼ်ႈႁွတ်ႈ New Year Global Gala 2019 ၶွင် [[:en:Beijing Media Network|Beijing Television]]ၼၼ်ႉယဝ်ႉ။ === 2019 – တေႃႇယၢမ်းလဵဝ်: ငဝ်းတူင်ႉႁူဝ်ႁႅၵ်ႈ === ၼႂ်း ဢေႇပရႄႇ၊ သျီႇ လႆႈတႄႇထႆႇငဝ်းတူင်ႉ တွၼ်ႈတႃႇ ထီႇဝီႇသီးရီးဢၼ်မႂ်ႇ ဢၼ်လႆႈၸိုဝ်ႈဝႃး ''Dear Mayang Street''ၼၼ်ႉယဝ်ႉ။ ဝၢႆးလင်မႃး မၼ်းထုၵ်ႇလိူၵ်ႈ တႃႇႁွင်ႉၵႂၢမ်းပိူင်လူင် တႃႇ ပႆႇၺႃႇသမႃႇထိၵူၼ်းၼုမ်ၶႄႇယဝ်ႉ။ ၼႂ်းလိူၼ်မေႇ၊ သျီႇလႆႈ တၢင်တူဝ်ၸၢႆးငဝ်းၼၢင်းငဝ်းၼုမ်ႇၵတ်ႉၶႅၼ်ႇသေ လႆႈၶိုၼ်ႈႁွတ်ႈ Hunan TV Gala တွၼ်ႈတႃႇ တီႈမၢႆတွင်း ထူၼ်ႈ 100 ပီ ႁင်း လွင်ႈတူင်ႈၼိုင်မေႇထူၼ်ႈသီႇၼၼ်ႉယဝ်ႉ။ လိူဝ်သေၼၼ်ႉဢမ်ႇၵႃး မၼ်းလႆႈပဵၼ် ၽွင်းတၢင်ၶဝ်သေ လႆႈၶိုၼ်ႈႁွတ်ႈ ပွႆး Beijing Winter Olympics Countdown 1,000 ဝၼ်းၼၼ်ႉယဝ်ႉ။ ဢၼ်ၼႆႉမၼ်းပဵၼ် ပွၵ်ႈဢွၼ်တၢင်းသုတ်း ဢၼ်သျီႇ လႆႈႁဵတ်း [[:en:MC|MC]]တႃႇ ပၢင်ပွႆး သေ မၼ်းလႆႈဢဝ်ၵႂၢမ်းမၼ်း "Glory" လဝ်ႇမူၼ်ႈတီႈၼိူဝ် ၶဵင်ႇယူႇယဝ်ႉ။ ၼႂ်းလိူၼ်ၵျုၼ်ႇ၊ မၼ်းထုၵ်ႇယိုၼ်ႈဢၢပ်ႈပဵၼ် ၽွင်းတၢင် Youth Film A ၶွင် Shanghai International Film Festival ၼၼ်ႉယူႇ။ ==ၾႅတ်ႇသျိၼ်ႇ== === 2016 === ၼႂ်း ပီ 2016 ၼၼ်ႉ သျီႇ လႆႈထုၵ်ႇၽိတ်ႈမွၵ်ႇပဵၼ် ၶႅၵ်ႇ တႃႇၶိုၼ်ႈႁွတ်ႈ တီႈ ပၢင်ပွႆးၾႅတ်ႇသျိၼ်ႇလၢႆဢၼ် ဢၼ်ၸတ်းႁဵတ်း တီႈမိူင်းၶႄႇ ၶဝ်ႈပႃး ၸိူဝ်းပဵၼ် ''[[:en:Madame Figaro|Madame Figaro]]'' ဢၼ်ပဵၼ် French Excellence Awards၊ ၶွပ်ႈၶူပ်ႇသီႇပီ ၶွင် ''[[:en:OK!|OK!]]'' Magazine Awards၊ ပွႆးပႃႇတီႇၶဝ်ႈၶမ်ႈ ႁင်း [[:en:Damiani (jewelry company)|Damiani]]၊ ထူင် [[:en:Versace|Versace]] 7 ထူင် တႃႇ ပၢင်ပွႆး 7 ဝဵင်း၊ iFeng Fashion Choice Awards၊ ပွႆးၾႅတ်ႇသျိၼ်ႇ PEACEBIRD Woman 2017 S/S၊ ၶမ်ႈၾႅတ်ႇသျိၼ်ႇ ႁင်း ''[[:en:L'Officiel|L'Officiel]]'''၊ ပွႆး GEM DREAM [[:en:Bulgari|BVLGARI]] x [[:en:Vogue (magazine)|''Vogue'']]၊ ပွႆးၶွပ်ႈၶူပ်ႇ 11 ပီ ႁင်း ''Vogue''၊ ပွႆးၽူႈပၼ်ႁႅင်း [[:en:Sina Weibo|Sina Weibo]]၊ ၵေႃႉၸၢႆး တႃႇၼိုင်ႈပီ ႁင်း [[:en:Harper's Bazaar|''Bazaar'']]၊ ပၢင်ပွႆးသူးၶႅမ်ႉသူး ႁင်းမၼ်း တီႈ ၵေႃႉၸၢႆး [[:en:Esquire (magazine)|''Esquire'']] ထူၼ်ႈ 13၊ ပၢင်ပွႆးပၼ်သူး Trendshealth၊ ပၢင်ပွႆးပၼ်သူး သတၢႆႇ [[:en:Elle (magazine)|''ELLE'']] လႄႈ ပၢင်ပွႆး Shanghai Divine Michelangelo ၸိူဝ်းၼႆႉယဝ်ႉ။ ၼႂ်းလိူၼ်ၵျူႇလၢႆႇ လုၵ်ႉတီႈ China Luxury, Beauty လႄႈ Fashion Insights လႆႈပိုၼ်ဢွၵ်ႇ ထႅၼ်ႈ ၽူႈႁူမ်ႇငမ်းလႆႈ တီႈၽၢႆႇ ၾႅတ်ႇသျိၼ်ႇဢၼ်မီးၵႃႈၶၼ်သေပိူၼ်ႈ တႃႇ 100 ၵေႃႉ ဢၼ်ဢိင်ၼိူဝ် Key Opinion Leader Index (KOLs) ၼၼ်ႉသေ မၼ်းလႆႈထုၵ်ႇ မၵ်းမၢႆၸၼ်ႉထူၼ်ႈသီႇ တီႈ ၵၼ် ၽူႈၸိုဝ်ႈလိုဝ်းလင် တီႈ ဝူၺ်ပူဝ် ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = China Luxury, Beauty and Fashion Insights - Q3 2016 |url = https://anyflip.com/momf/adtj|website = anyflip.com|access-date = 2016-08-29}}</ref> လိူဝ်သေၼၼ်ႉဢမ်ႇၵႃး ဢၼ်ပဵၼ် ၵႅဝ်ႈတႃ Timmy Xu Limited Edition ဢၼ်လုၵ်ႉတီႈ INMIX ပိုၼ်ဢွၵ်ႇ ၼၼ်ႉၵေႃႈ လႆႈပဵၼ်သွႆႉ ဢၼ်ၶၢႆလီသုတ်းသေ လႆႈၶၢႆမႃး 4,672 ဢၼ်ယဝ်ႉ။<ref>{{Cite web|title =不安于现状的倔强少年许魏洲,品牌都爱他什么? |url= https://mp.weixin.qq.com/s?__biz=MjM5NjAyODg0MA==&mid=2651034116&idx=1&sn=6e36bca9609a45195331dd79d1366048 |website = mp.weixin.qq.com |access-date = 2017-09-18}}</ref> === 2017 === ၼႂ်းပီ 2017၊ သျီႇလႆႈထုၵ်ႇၼႄႁၢင်ႈတီႈ ၼႃႈသိူဝ်ႈဢွၼ်တၢင်းသုတ်း တီႈ “''Men's Uno Young''” ဢၼ်ပဵၼ် မႅၵ်ႉၵၸိၼ်းဢၼ်မႂ်ႇ တႃႇ ၼေႃႇတႅၼ်းၶိူဝ်းၶႄႇ ၸိူဝ်းၵိူတ်ႇဝၢႆးလင် ပီ 1990 ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Men's Uno China has unveiled "Men's Uno Young"|url = http://weibo.com/1223849864/EnSVDDokF|website = weibo.com|access-date = 2016-12-26}}</ref> ၶႅပ်းႁၢင်ႈမၼ်းၼႆႉ လႆႈထုၵ်ႇပိုၼ်ဢွၵ်ႇတီႈ Men's Uno [[ထၢႆႇဝၢၼ်း]] limited edition ၼၼ်ႉယဝ်ႉ။ ဝၢႆးသေၼၼ်ႉ မၼ်းထုၵ်ႇ ၽိတ်ႈမွၵ်ႇၸူး ပွႆး Condé Nast Centuryႁင်း ''Vogue''၊ ပၢင်ၵႅဝ်ႈပိုတ်ႇၽုၺ်ႇ [[:en:Kenzo (brand)|Kenzo]] ႁွင်းၵွင်း၊ [[:en:Global Champions Tour|Longines Global Champions Tour]] သျင်ႇႁၢႆး<ref>{{Cite web|title = Xu weizhou was invited to 2017 Shanghai Longines Global Champions Tour |url=http://weibo.cn/1840130785/4100863678632257 |website = weibo.com|access-date = 2017-04-26}}</ref> ပႃႇတီႇပွတ်းၶမ်ႈ [[Tiffany & Co.|Tiffany & Co]] ၊ , ပၢင်ပွႆး [[Fendi]] PEEKABOO ၊ ပွႆးၼႄငဝ်းတူင် ''Vogue'' ၊ ပွႆးပႃႇတီႇၽဵင်း လၼ်ႇတၼ်ႇ [[:en:SuperGroup|Superdry]] ၊ [[Valentino SpA|Valentino]]'s I Love Spike ၊ ပွႆး ႁင်း [[:en:Mika Ninagawa|Mika Ninagawa]] ၊ ပွႆးပၼ်သူးၶႅမ်ႉသုတ်း ၸၢႆး ''Esquire'' ၶွပ်ႈၶူပ်ႇ 14 ပီ ၊ ပွႆးတၢင်ႉႁႅင်းၾႅတ်ႇသျိၼ်ႇၸွမ်းတၢင်း ''[[:en:Grazia|Grazia]]'' ၶွပ်ႈၶူပ်ႇ 60 ပီ ၊ ၶမ်ႈၾႅတ်ႇသျိၼ်ႇ ႁင်း ''L'Officiel'' ၊ ပွႆးပႃႇတီႇၶွပ်ႈၶူပ်ႇ ၵူၼ်းၼုမ်ႇ Men's Uno လႄႈ ပွႆးၶွပ်ႈၶူပ်ႇ 150 ပီ ႁင်း ''Bazaar'' ၸိူဝ်းၼႆႉယဝ်ႉ။ လိူဝ်သေၼၼ်ႉဢမ်ႇၵႃး မၼ်းထုၵ်ႇ [[:en:Givenchy|Givenchy]] ၽိတ်ႈမွၵ်ႇ မၼ်းပဵၼ်ၼင်ႇၶႅၵ်ႇ တႃႇၶိုၼ်ႈႁွတ်ႈ F/W 2017 Men's [[:en:Paris Fashion Week|Paris Fashion Week]] တီႈ [[ၾရၢင်ႇသဵတ်ႈ]]ယဝ်ႉ။<ref>{{Cite web|title = 许魏洲启程巴黎时装周 机场遭迷妹包围心情好|url = http://ent.qianlong.com/2017/0120/1337656.shtml|website = ent.qianlong.com|access-date = 2017-01-21|accessdate = 2021-03-21|archivedate = 2021-02-07|archiveurl = https://web.archive.org/web/20210207043210/http://ent.qianlong.com/2017/0120/1337656.shtml}} {{Cite web |title=Archive copy |url=http://ent.qianlong.com/2017/0120/1337656.shtml |accessdate=2021-03-21 |archivedate=2021-02-07 |archiveurl=https://web.archive.org/web/20210207043210/http://ent.qianlong.com/2017/0120/1337656.shtml }}</ref><ref>{{Cite web|title = 许魏洲巴黎"锁骨杀"帅气又魅惑|url = http://ent.jxnews.com.cn/system/2017/01/23/015697655.shtml|website = ent.jxnews.com.cn|access-date = 2017-01-23}}</ref> တီႈၸိၵ်းပၢႆၼၼ်ႉ ဢၼ်ပဵၼ် ငဝ်းတူင်ႉတီႇၵျိတ်ႇတႄႇ ၾႅတ်ႇသျိၼ်ႇမၼ်းၼၼ်ႉ ပဵၼ်ႁူဝ်ၶေႃႈ ဢၼ်လိုဝ်းလင်မႃး ၽွင်းၶၢဝ်းယၢမ်းၼၼ်ႉယူႇ။ ၽူတ်ႉ လႄႈ တူၺ်း တီႈသူဝ်ႇသျႄႇၼၼ်ႉၵေႃႈ မၼ်းလႆႈပူၼ်ႉလၵ်းမၢႆတွင်း သေ ၵၼူ်းတူၺ်းမၼ်း ၵူၼ်းလူဢၢၼ်ႇမၼ်းမီးၼမ်လိူဝ် 500 လၢၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou's digital fashion video broke a new record |url = http://weibo.com/5097562275/EstbInnr4|website = weibo.com|access-date = 2016-01-25}}</ref> တီႈ လိူၼ်မၢတ်ႉၶျ် 8 ဝၼ်းၼၼ်ႉ မၼ်းလႆႈ ထုၵ်ႇ [[:en:Moncler|Moncler Gamme Rouge]] လႄႈ [[:en:Louis Vuitton|Louis Vuitton]] ၶဝ် ၽိတ်ႈမွၵ်ႇ တႃႇၶိုၼ်ႈႁွတ်ႈ F/W 2017 Women's Paris Fashion Week ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = 时装周高能预警 许魏洲陈伟霆看秀究竟穿什么|url = http://fashion.sina.com.cn/s/in/2017-03-06/1549/doc-ifycaafp2103519.shtml|website = fashion.sina.com.cn|access-date = 2016-03-06}}</ref><ref>{{Cite web|title = 许魏洲 亮相 Moncler 2017 秋冬大秀|url = http://www.weibo.com/1765148101/EyIPWsvYo|website = weibo.com|access-date = 2016-03-07}}</ref> ၼႂ်းလိူၼ်ဢေႇပရႄႇၼၼ်ႉ မၼ်းထုၵ်ႇပိုၼ်ၽၢဝ်ႇပဵၼ်တၢင်းၵၢၼ် ၼင်ႇ ၽွင်းတၢင်တူဝ် တႃႇ ''[[:en:Men's Health|Men's Health]]'' ၶွပ်ႈၶူပ်ႇ 14 ပီ<ref>{{Cite web|title = Xu weizhou is a model cover for 14th Anniversary of MEN'S HEALTH |url=http://m.weibo.cn/1664080805/4095046472830856|website = weibo.com|access-date = 2017-04-10}}</ref> လႄႈ Italian luxury brand [[:en:Fendi|Fendi]] ၼႂ်းၵျုၼ်ႇသေ လႆႈပဵၼ်ၼင်ႇ ၽွင်းတၢင်တူဝ် မိၵ်ႈမၢႆ တၢင်ႉႁႅင်း ဢၼ်မႂ်ႇယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou is a new ambassador for Fendi |url=http://www.weibo.com/2826120835/F5PtIhUZI|website = weibo.com|access-date = 2017-06-01}}</ref> ဝၢႆးလင်မႃး [[:en:Givenchy|Givenchy]] လႆႈတႅပ်းတတ်း တႃႇ လိူၵ်ႈမၼ်း၊ KOLs ဢၼ်ၸိုဝ်ႈသဵင်လိုဝ်းလင် တီႈၼႂ်းၵႄႈ သၢႆသိုပ်ႇ Gen Y ၼၼ်ႉသေ ပဵၼ်တွၼ်ႈတႃႇ ပၢင်သူၼ်းတုမ် ဝၼ်းမႄႈ ၶႄႇ Chinese Mother's Day ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Givenchy uses KOLs Xu Weizhou for Chinese Mother’s Day Campaign|url = https://www.luxion.com.au/case-studies/givenchy-uses-kol-xu-weizhou-for-mothers-day-campaign/|website = luxion.com.au|access-date = 2017-05-20|archive-date = 2023-09-04|archive-url = https://web.archive.org/web/20230904115824/https://www.luxion.com.au/case-studies/givenchy-uses-kol-xu-weizhou-for-mothers-day-campaign/|url-status = dead}}</ref><ref>{{Cite web|title = 10 Great Luxury WeChat Campaigns to Honor Mom This Mother’s Day|url = https://jingdaily.com/mothers-day-wechat-campaigns-luxury/|website = jingdaily.com|access-date = 2017-05-13|archive-date = 2017-08-05|archive-url = https://web.archive.org/web/20170805030912/https://jingdaily.com/mothers-day-wechat-campaigns-luxury/}}</ref> မၼ်းထုၵ်ႇတၢင်ႇသဵၼ်ႈမၢႆ ၼင်ႇ ၼႃႈဢၼ်ၸိုဝ်ႈလိုဝ်းလင် တီႈၼႂ်း လွၵ်းၵၢတ်ႇသိူဝ်ႈၶူဝ်းမိူင်းၶႄႇ<ref>{{Cite web|title = Op-Ed Famous Faces Rule China’s Activewear Market|url = https://www.businessoffashion.com/articles/opinion/famous-faces-rule-chinas-activewear-market|website = businessoffashion.com|access-date = 2017-01-21|archive-date = 2017-01-29|archive-url = https://web.archive.org/web/20170129135539/https://www.businessoffashion.com/articles/opinion/famous-faces-rule-chinas-activewear-market}}</ref> လႄႈ ပဵၼ်ၵေႃႉဢၼ်ၶဝ်ႈပႃးၵေႃႉၼိုင် တီႈၼႂ်း ၽူႈၸိုဝ်ႈလိုဝ်းလင် ၾႅတ်ႇသျိၼ်ႇ ၼႂ်းလွၵ်းၵၢတ်ႇၶူဝ်းၶိုၵ်ႉတွၼ်း ဢၼ် New York Digital Marketing Agency ၵေႃႉႁဵတ်းၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = L2最新报告:深度解析奢侈品牌在中国的线上策略,这十个品牌表现最为出色|url = http://luxe.co/m/?p=60698|website = luxe.com|access-date = 2017-06-01|archive-date = 2017-08-05|archive-url = https://web.archive.org/web/20170805031429/http://luxe.co/m/?p=60698|url-status = dead}}</ref> ဝၢႆးသေၼၼ်ႉ INMIX ဢၼ်ပဵၼ် မိၵ်ႈမၢႆၶူဝ်းၶိူင်ႈတိုဝ်းတႃ လႆႈပိုၼ်ဢွၵ်ႇႁၢင်ႈလူၼ်ႉထိမ်ႇမီႇ ဢၼ်လႆႈသုၼ်ႇၶိုၵ်ႉတွၼ်းတီႈ Emoji® ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = 许魏洲 x INMIX音米 x emoji|url=https://mp.weixin.qq.com/s?__biz=MzA3MTA2MzkwMQ==&mid=2648632631&idx=1&sn=d5c71656343dfbccd61fafbb63a1e3a4|website =weixin.qq.com|access-date = 2017-06-04}}</ref> ၽွၼ်းလင်မၼ်းတႄႉ မၼ်းထုၵ်ႇၽိတ်ႈမွၵ်ႇထိုင် [[:en:Louis Vuitton|Louis Vuitton]] S/S 2018 Men's Paris Fashion Week တီႈ လိူၼ်ၵျုၼ်ႇ 22 ဝၼ်း<ref>{{Cite web|title = Louis Vuitton SS18: Menswear runway draws Asian celebrities Gong Yoo, Hidetoshi Nakata, Xu Weizhou|url=http://www.scmp.com/magazines/style/fashion-beauty/article/2099660/louis-vuitton-ss18-menswear-runway-draws-asian|website = scmp.com|access-date = 2017-06-23}}</ref> ၊ the [[:en:Coach, Inc.|Coach]] S/S 2018 Women's [[New York Fashion Week]] တီႈ သႅပ်ႇထႅမ်ႇပႃႇ 12 ဝၼ်း ၊ <ref>{{Cite web|title = Xu Weizhou will attend Coach S/S 2018 Women's New York Fashion Week |url=http://weibo.com/ttarticle/p/show?id=2309404148745359994722|website = weibo.com|access-date = 2017-09-05}}</ref> လႄႈ [[:en:Givenchy|Givenchy]] S/S 2018 Women's Paris Fashion Week တီႈ ဢွၵ်ႇထူဝ်ႇပႃႇ 1 ဝၼ်းၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu Weizhou will attend Givenchy S/S 2018 Women's Paris Fashion Week |url=https://mp.weixin.qq.com/s/N0Ngq2tXm7Zr5euE6LjhWA|website = mp.weixin.qq.com|access-date = 2017-09-05}}</ref> မၼ်းၼႆႉပဵၼ် ၸၢႆးငဝ်းၶႄႇဢၼ်ၸိုဝ်ႈလိုဝ်းလင် ၵေႃႉဢွၼ်တၢင်းသုတ်း ဢၼ်ပဵၼ်မႃး ၼႃႈတႃ ႁင်း မိၵ်ႈမၢႆၶူဝ်းႁၢင်ႈၶိူင်ႈ ၵၢဝ်းလီၸၢၼ်း [[:en:Laneige|Laneige]] တီႈၼႂ်းမိူင်းၶႄႇၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Chinese Actor Xu Weizhou was the first Mainland Actor to be officially appointed as Laneige’s first brand ambassador in China|url = http://weibo.com/5392863813/FjcuBFNxs|website = weibo.com|access-date = 2017-08-28}}</ref> လိူဝ်သေၼၼ်ႉဢမ်ႇၵႃး ၼႂ်းၵႃႈ ၶိုင်ႈပီ ပီ 2017 ၼၼ်ႉ ဢၼ်ပဵၼ် Key Opinion Leader Index (KOLs) ႁင်း Bomoda China ၼၼ်ႉ သျီႇၼႆႉ ၼႂ်းၵႃႈ ထႅၼ်ႈၵူၼ်းၸိုဝ်ႈလိုဝ်းလင် 30 လႄႈ ၼႂ်းၵႃႈ ထႅၼ်ႈၽူႈသိုဝ်ႉၸႂ်ႉၶူဝ်းၶွင်လွၵ်းၵၢတ်ႇၶႄႇ 10 တီႈၼၼ်ႉ လႆႈမီးတီႈ ထူၼ်ႈသီႇ ၼႆယဝ်ႉ။<ref>{{Cite web|title =不安于现状的倔强少年许魏洲,品牌都爱他什么? |url= https://mp.weixin.qq.com/s?__biz=MjM5NjAyODg0MA==&mid=2651034116&idx=1&sn=6e36bca9609a45195331dd79d1366048 |website = mp.weixin.qq.com |access-date = 2017-09-18}}</ref> ဢွၵ်ႇထူဝ်ႇပႃႇ 23 ၼၼ်ႉ သျီႇ လႄႈ တင်း ၸိူဝ်းပဵၼ် [[:en:Alfred Dunhill Ltd.|Dunhill]] လႄႈ ''[[:en:Esquire (magazine)|Esquire]]'' ၶွင်ၶႄႇ လႆႈပိုၼ်ဢွၵ်ႇ ငဝ်းတူင်ႉၾႅတ်ႉသျိၼ်ႇဢၼ်ပွတ်းဢၼ်ၼိုင်ႈ ဢၼ်ႁွင်ႉၸိုဝ်ႈဝႃႈ "Urban Symphony" ဢၼ်ထႆႇတီႈ [[ႁၢင်ႇၵေႇရီႇ]] ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou joined the shot film project of Dunhill and Esquire|url= https://weibo.com/1195397063/FrFVC5w7L|website = weibo.com |access-date = 2017-10-23}}</ref> ၸွမ်းလူၺ်ႈ ၶေႃႈပိုၼ်ဢွၵ်ႇၵူႈပီ တီ လွၵ်းၵၢတ်ႇ ၵႅဝ်ႈသႅင်ငိုၼ်းၶမ်း ဢၼ် L2's Digital IQ Index : Luxury China ႁဵတ်းၼၼ်ႉ လႆႈၼႄဝႆႉဝႃႈ ယွၼ်ႉ သျီႇယုၵ်ႉပၼ် ႁႅင်းၶၢႆတီႈဢွၼ်ႇလၢႆး ဢၼ်ႁဵတ်းတီႈဝူၺ်ပူဝ်ၼၼ်ႉသေ ႁႅင်းၶၢႆ [[:en:Tiffany & Co.|Tiffany & Co]] ၼႆႉ လႆႈၶိုၼ်ႈသုင်မႃးၼႆယဝ်ႉ။<ref>{{Cite web|title = LIZ FLORA, ASIA PACIFIC EDITOR AT NEW YORK-BASED MARKET RESEARCH COMPANY L2, TALKS E-COMMERCE IN THE EASTERN MARKET.|url= https://member.rapnet.com/News/NewsItem.aspx?ArticleID=59280&ArticleTitle=The+Great+Web+of+China|website = member.rapnet.com |access-date = 2017-09-01}}</ref> ၼူဝ်ႇဝႅမ်ႇပႃႇ 20 ၊ မၼ်းထုၵ်ႇၽိတ်ႈမွၵ်ႇ ၼင်ႇ ၶႅၵ်ႇၶိုၵ်ႉတွၼ်း တႃႇၶိုၼ်ႈႁွတ်ႈ ၶွပ်ႈၶူပ်ႇ [[:en:Victoria's Secret Fashion Show|Victoria's Secret Fashion Show]] ဢၼ်ၸတ်းႁဵတ်းတီႈ သျင်ႇႁၢႆး <ref>{{Cite web|title = Xu weizhou was invited as one of special guests to attend the annual Victoria's Secret Fashion Show held in Shanghai|url= https://weibo.com/1656851485/FvxBocLyy|website = weibo.com |access-date = 2017-11-17}}</ref> သေ မၼ်းထုၵ်ႇသႂ်ႇတီႈၼႂ်း သဵၼ်ႈမၢႆ ၵေႃႉၸၢႆး 10 ၵေႃႉ ဢၼ်ၼုင်ႈၶူဝ်းလဝ်းလႅတ်းလီ ၼႂ်းၵမ်ႇၽႃႇ ဢၼ်ပဵၼ်ႁင်း ''[[:en:United Kingdom|British]] [[:en:GQ|GQ]]''' ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = 10 best-dressed men in the world this week|url= http://www.gq-magazine.co.uk/gallery/harry-styles-shawn-mendes-sam-smith|website = gq-magazine.co.uk|access-date = 2017-11-22}}</ref> ၼႂ်း တီႇသႅမ်ႇပႃႇ ၊ သျီႇ ထုၵ်ႇပိုၼ်ၽၢဝ်ႇဝႃႈ မၼ်းၼႆႉ ပဵၼ် ၸဝ်ႈပၢႆးမွၼ်းတီႈ မိူင်းလူင် ဢၼ်ပဵၼ် ၵေႃႉၵမ်းဢွၼ်တၢင်းသုတ်း ဢၼ်တႃႇ ၶဝ်ႈႁူမ်ႈပရေႃးၵျႅတ်ႉ တင်း မိၵ်ႈမၢႆသိူဝ်ႈၶူဝ်းဢိင်းၵလဵတ်ႈၵူႈၸိုင်ႈမိူင်း [[:en:SuperGroup|Superdry]] ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu was announced to be the first mainland china artist to have the collaboration project with SUPERDRY|url= https://weibo.com/5902614402/FAn6Hu8lu|website = weibo.com |access-date = 2017-12-19}}</ref> ဢၼ်ပဵၼ် limited collection ၶဝ်တီႈ [[:en:Tmall|Tmall]] ၼၼ်ႉ လႆႈၶၢႆမူတ်းၵႂႃႇ ၼႂ်းၶၢဝ်းတၢင်း 100 လဵတ်း (100 seconds) ထႅင်ႈ သွင်ၸူဝ်ႈမူင်းၸမ်ႉ ၸိူဝ်းပဵၼ် လၢၼ်ႉ တီႈ ပေႇၵျိင်း၊ သျင်ႇႁၢႆး လႄႈ ၶျႅၼ်ႇတူး ၸိူဝ်းၼႆႉၵေႃႈ လႆႈၶၢႆမူတ်းသဵင်ႈသဵင်ႈယဝ်ႉ။<ref>{{Cite web|title = Superdry x TimmyXu 2018 CNY limited collection had sold out |url= https://weibo.com/5902614402/FD9Qqm8y7|website = weibo.com |access-date = 2018-01-06}}</ref> လွင်ႈဢွၵ်ႇႁၢင်ႈမၼ်း တီႈ ၼႃႈသိူဝ်ႈ Men's Uno ၼၼ်ႉ ၼႂ်းၵႃႈ ႁၢင်ႈၼႃႈသိူဝ်ႈ မႅၵ်ႉၵၸိၼ်းၵူၼ်းၸၢႆး ထႅၼ်ႈ 10 ဢၼ် ဢၼ် ပလွၵ်ႉၾႅတ်ႉသျိၼ်ႇၸိုဝ်ႈလိုဝ်းလၼ် FashionModels ၵေႃႉႁဵတ်းဝႆႉၼၼ်ႉ မၼ်းထုၵ်ႇသႂ်ႇ တီႈသဵၼ်ႈမၢႆ ထူၼ်ႈၵဝ်ႇ ယဝ်ႉ။<ref>{{Cite web|title = Xu appearance on Men's Uno cover was listed 9th on top 10 Best Men Fashion Magazine Covers of The Year|url= https://weibo.com/5097562275/FBUDQkkEB|website = weibo.com |access-date = 2017-12-29}}</ref> === 2018 === ၼႂ်းပီ 2018၊ မိူဝ်ႈ ၸၼ်ႇဝႃႇရီႇ 4 ဝၼ်းၼၼ်ႉ ဢၼ်ပဵၼ် [[:en:Coach, Inc.|COACH]] ၶွင်ၶႄႇ လႆႈယိုၼ်ႈဢၢပ်ႈမၼ်းပဵၼ် ၽူႈမွၵ်ႇလၢတ်ႈၶူးလၢႆးၸၢႆး ၵေႃႉဢွၼ်တၢင်းသုတ်းယဝ်ႉ။<ref>{{Cite web|title = Xu was announced to be the first COACH MEN spokesman in CHINA|url= https://weibo.com/1916986680/FCPRduMvJ|website = weibo.com |access-date = 2018-01-04}}</ref> ဝၢႆးလင်ၼၼ်ႉ သျီႇ လႆႈပဵၼ်ၼင်ႇ ၽူႈတၢင်တူဝ်မိၵ်ႈမၢႆၶူဝ်းၶွင် တၢင်ႉႁႅင်းမႂ်ႇ ၶွင် Fendi သေ လႆႈၶိုၼ်ႈႁွတ်ႈ [[:en:Fendi|Fendi]]'s F/W 2018 Men's [[:en:Milan Fashion Week|Milan Fashion Week]]ယဝ်ႉ။ ယဝ်ႉၵေႃႈ မၼ်း လႆႈၶိုၼ်ႈႁွတ်ႈ [[:en:Alexander McQueen (brand)|Alexander McQueen]]'s F/W 2018 Men's [[:en:Paris Fashion Week|Paris Fashion Week]] ၼင်ႇ ၸဝ်ႈပၢႆးမွၼ်းၸၢႆး ၶႄႇ ၵေႃႉၵမ်းဢွၼ်တၢင်းသုတ်း ဢၼ်ထုၵ်ႇၽိတ်ႈမွၵ်ႇၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu attended Fendi F/W 2018 Men's Milan Fashion Week|url= https://www.weibo.com/1656851485/FDUoQyZpI|website = weibo.com |access-date = 2018-01-11}}</ref> ဝၢႆးၼၼ် မၼ်းထုၵ်ႇပိုၼ်ၽၢဝ်ႇပဵၼ်တၢင်းၵၢၼ် ၼင်ႇ ၽူႈတၢင်တူဝ် မိၵ်ႈမၢႆၶူဝ်းၶွင်ႇသတၢႆႇဢၼ်မႂ်ႇ တွၼ်ႈတႃႇ [[:en:Tiffany & Co.|Tiffany & Co]]. ၊<ref>{{Cite web|title = Xu has been officially announced as the new style brand ambassador for Tiffany & Co|url= https://www.weibo.com/2941358781/G04iRwC37|website = weibo.com |access-date = 2018-01-25}}</ref> လႄႈ ၽူႈလၢတ်ႈၵႂၢမ်းၵမ်ႇၽႃႇ တွၼ်ႈတႃႇ မိၵ်ႈမၢႆၶူဝ်းၶွင်ဢိင်းၵလဵတ်ႈ [[:en:Superdry|Superdry]]ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu was announced as the global spokesperson for Superdry|url= https://www.weibo.com/5902614402/G5jBCfc9X|website = weibo.com |access-date = 2018-03-01}}</ref> မၼ်းထုၵ်ႇၽိတ်ႈမွၵ်ႇၸူး [[:en:Laneige|Laneige]]'s Cushion Dream Factory Night, the [[:en:Fendi|Fendi]] Newsstand event, ပွႆးပႃႇတီႇ သဵင် [[:en:Superdry|Superdry]] ၶွင် သျင်ႇႁၢႆး ၊ [[:en:Daniel Wellington|Daniel Wellington]]'s My Classic Night Out, the [[:en:Coach New York|Coach]] x Disney Dark Fairytale, [[:en:Vogue (magazine)|''Vogue'']]'s film premier ၊ ပၢင်ပွႆး လဵၼ်ႈႁႅင်း the Men's Uno ၊ ပွႆးပႃႇတီႇၶွပ်ႈၶူပ်ႇ ႁင်း Nylon ၊ ပွႆးၶွပ်ႈၶူပ်ႇ 30 ပီ ႁင်း [[:en:Elle (magazine)|''Elle'']] ၊ the [[:en:Laneige|Laneige]] x Line Friends event ၊ ပွႆးပႃႇတီႇ မွၵ်ႇၸႄႈ[[:en:Tiffany & Co.|Tiffany & Co.]] ၶွင် သျင်ႇႁၢႆး လႄႈ ပၢင်ပွႆး [[:en:Roberto Cavalli (company)|Roberto Cavalli]] ၶွင် ႁွင်းၵွင်း ၸိူဝ်းၼႆႉယဝ်ႉ။ ဢေႇပရႄႇ 11 ဝၼ်းၼၼ်ႉ မၼ်းၶိုၼ်ႈႁွတ်ႈ ပွႆးပႃႇတီႇၵမ်ႇၽႃႇ သဵင် [[:en:Superdry|Superdry]] တီႈ [[:en:London|လၼ်ႇတၼ်ႇ]] ၼင်ႇ ပဵၼ် ၽူႈတၢင်တူဝ်မိၵ်ႈမၢႆၵမ်ႇၽႃႇၼၼ်ႉယဝ်ႉ။ မေႇ 3 ဝၼ်းမႃး မၼ်းဢွၵ်ႇၼႄႁၢင်ႈတီႈ [[:en:Tiffany & Co. flagship store|Tiffany & Co. flagship store]] တီႈ [[:en:Fifth Avenue|Fifth Avenue]], [[:en:New York City|New York]] တွၼ်ႈတႃႇ ၶိုၼ်ႈႁွတ်ႈ ပွႆးမွၵ်ႇၸႄႈ Tiffany ၼင်ႇပဵၼ် ၽူႈတၢင်တူဝ်သတၢႆႇမိၵ်ႈမၢႆ ယဝ်ႉ။ မေႇ 19 ဝၼ်း သျီႇ လႆႈၶိုၼ်ႈႁွတ်ႈ ပၢင်ၵႅဝ်ႈပိုတ်ႇၽုၺ်ႇ Libert'aime ဢၼ် Forevermark ၵေႃႉႁဵတ်းၼင်ႇ ႁၢင်ႈႁိင်ႈထူၼ်ႈၼိုင် ၶွင် မိၵ်ႈမၢႆၶူဝ်းၶွင်ၼၼ်ႉယဝ်ႉ။ ဢၼ်ပဵၼ် ၶူဝ်းၶွင် limited "Le Light x Xu Weizhou" ၼၼ်ႉၵေႃႈ လူင်ႈၼႃႈၶၢႆတီႈၼိူဝ် ဢွၼ်ႇလၢႆးသေ လႆႈမူတ်းၵႂႃႇၽႂ်းၽႂ်းယူႇယဝ်ႉ။ လိူၼ်ၵျုၼ်ႇ 24 ၼၼ်ႉ သျီႇ လႆႈၶိုၼ်ႈႁွတ်ႈ ၾႅတ်ႇသျိၼ်ႇသျူဝ်း [[Al2fred Dunhill Ltd.|Dunhill]] 2019 S/S တီႈ ၽႄးရိတ်ႉၼၼ်ႉယဝ်ႉ။ သျီႇလႆႈ ထႆႇႁၢင်ႈ တႃႇ ၼႃႈသိူဝ်ႈ Elle Men Hong Kong တႃႇ လိူၼ်ၵျုၼ်ႇ/ၵျူႇလၢႆႇ၊ ဢၼ်ထႆႇႁၢင်ႈၼႃႈသိူဝ်ႈ မႅၵ်ႉၵၸိၼ်းၼႆႉ ၼႂ်းၵႃႈၶၢဝ်းတၢင်းသၢမ်ပီၼၼ်ႉ ပဵၼ် ပွၵ်ႈၵမ်းသၢမ်ယဝ်ႉ။ မၼ်းထုၵ်ႇသႂ်ႇၼႂ်းသဵၼ်ႈမၢႆ "ထႅၼ်ႈ ၸၢႆးငဝ်းဢေးသျႃး 10 ၵေႃႉ ဢၼ်ဢဝ်တီႈယူႇမႃးတီႈ တူင်ႇဝူင်းၾႅတ်ႇသျိၼ်ႇ ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = 10 rising Asian stars taking over the fashion scene|url= https://www.lofficielmalaysia.com/fashion/10-asian-celebrities-fashion-scene-korea-china|website = lofficielmalaysia.com|access-date = 2018-06-18}}</ref> ၸွမ်းၼင်ႇ L2 ၏ Digital IQ Index 2018 ဝႃႈ [[:en:Laneige|Laneige]] ၼႆႉ ၼႂ်းၵႃႈ ၸၼ်ႉထၢၼ်ႈထႅၼ်ႈမိၵ်ႈမၢႆၶူဝ်းႁၢင်ႈၶိူင်ႈမိူင်းၶႄႇ 10 ဢၼ်ၼၼ်ႉ မၼ်းမီးတီႈ ၸၼ်ႉ 7 ၊ <ref>{{Cite web|title = Top 10 Beauty Brands in China|url = https://www.l2inc.com/daily-insights/top-10-beauty-brands-in-china-3|website = l2inc.com|access-date = 2018-02-27|accessdate = 2021-03-22|archivedate = 2019-04-03|archiveurl = https://web.archive.org/web/20190403010222/https://www.l2inc.com/daily-insights/top-10-beauty-brands-in-china-3}} {{Cite web |title=Archive copy |url=https://www.l2inc.com/daily-insights/top-10-beauty-brands-in-china-3 |accessdate=2021-03-22 |archivedate=2019-04-03 |archiveurl=https://web.archive.org/web/20190403010222/https://www.l2inc.com/daily-insights/top-10-beauty-brands-in-china-3 }}</ref> ၶဝ်ႈပႃး [[:en:Coach, Inc.|COACH]] လႄႈ [[:en:Valentino SpA|Valentino]] ဢၼ်မီးတီႈ ၸၼ်ႉ သီႇ လႄႈ ၸၼ်ႉပႅတ်ႇ ၊<ref>{{Cite web|title = Top 10 Luxury Brands in China|url = https://www.l2inc.com/daily-insights/top-10-luxury-brands-in-china-3|website = l2inc.com|access-date = 2018-02-27|accessdate = 2021-03-22|archivedate = 2019-07-24|archiveurl = https://web.archive.org/web/20190724051744/https://www.l2inc.com/daily-insights/top-10-luxury-brands-in-china-3}} {{Cite web |title=Archive copy |url=https://www.l2inc.com/daily-insights/top-10-luxury-brands-in-china-3 |accessdate=2021-03-22 |archivedate=2019-07-24 |archiveurl=https://web.archive.org/web/20190724051744/https://www.l2inc.com/daily-insights/top-10-luxury-brands-in-china-3 }}</ref> ၼၼ်ႉ ယွၼ်ႉပိူဝ်ႈ ၼမ်ႉၵတ်ႉလွင်ႈႁဵတ်းသၢင်ႈ သျီႇ ဢၼ်ႁဵတ်းသၢင်ႈပတီႈ ဝူၺ်ပူဝ်ၼၼ်ႉယဝ်ႉ။ မၼ်းၼႆႉ ပဵၼ်ၸဝ်ႈပၢႆးမွၼ်းၸၢႆး ၵေႃႉဢွၼ်တၢင်းသုတ်း ဢၼ်ၼႄႁၢင်ႈပၼ်တီး ၼႃႈသိူဝ်ႈ မႅၵ်ႉၵၸိၼ်းဢမႂ်ႇမႂ်ႇ ''[[:en:GQ|GQ]]'' ''Sport'' လႄႈ ''NewOne''။ ၼႂ်း သႅပ်ႇထႅမ်ႇပႃႇ ဢၼ်ပဵၼ် မိၵ်ႈမၢႆၶူဝ်းၶွင် ၶူဝ်းၼုင်ၵၢၼ်လဵၼ်ႈႁႅင်း လႄႈ ၶိူင်ႈၶူဝ်းတိုဝ်းတိၼ်ၶႄႇ ၸိုဝ်ႈသဵင်ယႂ်ႇ [[:en:Belle International|Belle International]] လႆႈပိုၼ်ၽၢဝ်ႇ သျီႇ ပဵၼ် ၽွင်းတၢင်တူဝ်မႂ်ႇၶဝ်ယဝ်ႉ။<ref>{{Cite web|title = Xu was announced as the ambassador of Belle International|url=https://m.weibo.cn/3816685127/4283371477274946|website = weibo.cn|access-date = 2018-09-12}}</ref> သႅပ်ႇထႅမ်ႇပႃႇ 20 ၼၼ်ႉ သျီႇလႆႈၶိုၼ်ႈႁွတ်ႈ [[:en:Balmain (fashion house)|Balmain]] S/S 2019 Women's Paris Fashion Week ယဝ်ႉ။ ဢၼ်ပဵၼ် မႅၵ်ႉၵၸိၼ်းၶႄႇ ၸိုဝ်ႈသဵင်ယႂ်ႇ ''Bella'' ဝႃႈ ဢၼ်ပဵၼ် ၼႃႈသိူဝ်ႈ Xu Weizhou ၼၼ်ႉ ၼႂ်းပီ 2018 ၼၼ်ႉ ပဵၼ်ဢၼ်ၶၢႆလီသေပိူၼ်ႈ တီႈၼိူဝ်ဢွၼ်ႇလၢႆး ဝႃႈၼႆယဝ်ႉ။ === 2019 === ၼႂ်း 2019 ၼၼ်ႉ Annual China Entertainment ၸိၼႄ ၸွမ်းလူၺ်ႈ ၶေႃႈမုၼ်း AI Man ဝႃႈ ၼႂ်းၵႃႈ သဵၼ်ႈမၢႆၸဝ်ႈပၢႆးမွၼ်းၸၢႆး ၾႅတ်ႇသျိၼ်ႇ ဢၼ်ႁူမ်ႇငမ်းပိူၼ်ႈလႆႈ ထႅၼ်ႈ 10 ၵေႃႉၼၼ်ႉ သျီႇၼႆႉ မီးတီႈ ၸၼ်ႉ ႁႃႈ ၼႆယဝ်ႉ။ ၸၼ်ႇဝႃႇရီ 27 သျီႇၼႆႉ လႆႈထုၵ်ႇမီးတီႈ ၸၼ်ႉ သီႇ လႄႈ ၸၼ်ႉၵဝ်ႈ တွၼ်ႈတႃႇ COACH လႄႈ Tiffany & Co တီႈ ၽူႈၵမ်ႉထႅမ်မိၵ်ႈမၢႆၵုၼ်ႇဢၼ်ၸိုဝ်ႈသဵင်ယႂ်ႇသေပိူၼ်ႈ 20 ၵေႃႉ တႃႇ ပီ 2018 ၼၼ်ႉၼႆယဝ်ႉ။ လိူၼ်ဢေႇပရႄႇ၊ လုၵ်ႉတီႈ ''I-MAGAZINE'' လႆႈမွၵ်ႇလၢတ်ႈဝႃႈ ၼႂ်း သူးၼႃႈၾႅတ်ႇသျိၼ်ႇ ၶႅမ်ႉသေပိူၼ်ႈ တႃႇပီ 2018 ၼၼ်ႉ သျီႇၼႆႉ လႆႈမီးတီႈၸၼ်ႉ 50 ၼႆယဝ်ႉ။<ref>{{Cite web|title = Best Fashion Face Award Year 2018|url= http://www.i-magazine.tv/pages/I-MAGAZINE-Fashion-Face-Award-Year-2018-Asian-Male|website = i-magazine.tv|access-date = 2019-04-15}}</ref> မၼ်းလႆႈပၼ်တီႈ သဵၼ်ႈတၢင်းပႆႇ Fendi F/W 2019–2020 Women's လႄႈ Men's Collection Show ဢၼ်ၸတ်းႁဵတ်းတီႈ သျင်ႇႁၢႆးသေ မၼ်းလႆႈပဵၼ် ၽူႈမွၵ်ႇလၢတ်ႈမႂ်ႇ တႃႇ Fendi S/S 2020 Men's Milan Fashion Week ယဝ်ႉ။ ၵျုၼ်ႇ 18၊ Fendi လႆႈပိုၼ်ၽၢဝ်ႇပဵၼ်တၢင်းၵၢၼ်ဝႃႈ သျီႇၼႆႉ ပဵၼ် ၽူႈမွၵ်ႇလၢတ်ႈ Peekaboo တီႈ မိူင်းၶႄႇ ၵေႃႉဢွၼ်တၢင်းသုတ်း ၼႆယဝ်ႉ။<ref>{{Cite web|title = Fendi Peekaboo Spokesperson in China|url= https://www.weibo.com/2826120835/Hzk3uz6jd?from=page_1006062826120835_profile&wvr=6&mod=weibotime&type=comment#_rnd1561170085114|website = weibo.com|access-date = 2019-06-17}}</ref> ==ၵၢၼ်ပရႁိတ== === 2016 === ၼႂ်းပီ 2016 ၼၼ်ႉ သျီႇၼႆႉ လႆႈထုၵ်ႇ ယိုၼ်ႈဢၢပ်ႈပဵၼ် ၽွင်းတၢင်တူဝ်ၸိုင်ႈမိူင်း လွင်ႈၸွႆႈထႅမ် ၸိူဝ်းၶဝ်ႈပႃး "Against Domestic Violence", "Rio Run",<ref>{{Cite web|title = Xu weizhou joined RIO Run|url=http://weibo.com/1797270765/DnI5BedDk|website = weibo.com|access-date = 2016-03-24}}</ref> "Animal Welfare Charities" ႁင်း Cabbeen,<ref>{{Cite web|title = Xu weizhou joined Animal Welfare Charities project by Cabbeen|url=http://mp.weixin.qq.com/s?__biz=MzA3NDg4MTk4Nw==&mid=2651765742&idx=1&sn=721a18bfac8ae6f0d0682184fb19891a#rd|website = weibo.com|access-date = 2016-06-01}}</ref> "Lucky Cat Welfare Organizations",<ref>{{Cite web|title = Xu weizhou as an ambassador for Lucky Cat Welfare Organizations|url=http://www.weibo.com/1228752894/DAwzEss86|website = weibo.com|access-date = 2016-06-16}}</ref> "Hope For Home For Children" ႁင်း ၾွင်ႇတေးသျိၼ်းၵမ်ႉထွၵ်ႈၸွႆႈထႅမ်ၶႄႇ တႃႇလုၵ်ႈဢွၼ်ႇ ၊<ref>{{Cite web|title = Xu weizhou as an ambassador for Hope for home project|url=http://www.weibo.com/1714573742/DFo3KhIeN|website = weibo.com|access-date = 2016-07-18}}</ref> "Moon bear protecting" ႁင်း [[:en:Animals Asia Foundation |Animals Asia Foundation (AAF)]],<ref>{{Cite web|title = Xu weizhou was appointed as ambassador for Moon bear protecting project of Animals Asia Foundation|url=http://www.weibo.com/1868995340/E35xsqYXb|website = weibo.com|access-date = 2016-08-11}}</ref> "1,000 rabbits look up at the moon" ႁင်း the China Social Welfare Foundation,<ref>{{Cite web|title = Xu weizhou was appointed as ambassador for 1,000 rabbits look up at the moon project of China Social Welfare Foundation|url=http://weibo.com/5392863813/E9akIpjKm|website = weibo.com|access-date = 2016-09-20}}</ref> "Adopt pets instead of purchasing" ႁင်း the Beijing Non-profit Adoption organizations,<ref>{{Cite web|title = Xu weizhou as an ambassador for Adopt pets instead of purchasing project of Beijing Non-profit Adoption organizations|url=http://www.weibo.com/1658447413/EaGItbmHi|website = weibo.com|access-date = 2016-09-30}}</ref> "Charity Stars: Love can touch" ႁင်း [[:en:Harper's Bazaar|''Harper's Bazaa''r]],<ref>{{Cite web|title = Xu weizhou was appointed as ambassador for Charity Stars : Love can touch project of Bazaar Magazine|url=http://www.weibo.com/5361689130/EgKpfewxl|website = weibo.com|access-date = 2016-11-09}}</ref> လႄႈ "Door of charity" ႁင်း the China Children and Teenagers' Fund (CCTF) ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou was appointed as ambassador for Door of charity project of China Children and Teenagers' Fund (CCTF) |url=http://weibo.com/5392863813/EjaHIqITv|website = weibo.com|access-date = 2016-11-24}}</ref> မၼ်းၼႆႉ ပဵၼ်ပႃး ၽူႈတႄႇတင်ႈ "Light of love for the blind",<ref>{{Cite web|title = Xu weizhou is the founder of the foundation for Light of love for the blind|url=http://weibo.com/2611704931/DECcKqQxI|website = weibo.com|access-date = 2016-07-13}}</ref> and "10.20 km run to the light for the blind".<ref>{{Cite web|title = Xu weizhou is also the founder of the foundation for 10.20 km run to the light for the blind|url=http://m.weibo.cn/zt/sports?aid=448&tid=1846|website = weibo.com|access-date = 2016-10-25}}</ref><ref>{{Cite web|title = Xu weizhou is also the founder of the foundation for 10.20 km run to the light for the blind|url=http://weibo.com/5392863813/EevOazMgg|website = weibo.com|access-date = 2016-10-25}}</ref>ၼၼ်ႉယဝ်ႉ။ လိူဝ်သေၼၼ်ႉဢမ်ႇၵႃး မၼ်းၶဝ်ႈႁူမ်ႈပႃး တီႈပၢင်သူၼ်းတုမ် ႁင်း [[:en:Kering Foundation|Kering Foundation]] ဢၼ်သၢၼ်ၶတ်း လွင်ႈႁဵတ်းႁၢႆႉပူၼ်ႉပႅၼ် ၼိူဝ်ၼၢင်းယိင်းၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou joined the campaign of anti-violence against women project|url=http://www.weibo.com/2852761965/Ej3BLuCX1|website = weibo.com|access-date = 2016-11-24}}</ref> === 2017 === ၼႂ်း 2017 ၼၼ်ႉ မၼ်းလႆႈ ၶဝ်ႈပႃးတီႈ "Wuxi Marathon" ႁင်း ''[[:en:Men's Health|Men's Health]]'',<ref>{{Cite web|title = Xu weizhou joined Wuxi Marathon|url=http://weibo.com/5392863813/EAvA5D5QV|website = weibo.com|access-date = 2017-03-19}}</ref> "[[:en:amfAR, The Foundation for AIDS Research|amfAR]]",<ref>{{Cite web|title = Xu weizhou attendede amfAR|url=http://weibo.com/5392863813/EBtAKePPC|website = weibo.com|access-date = 2017-03-25}}</ref> "[[World Book Day]] - Read to Lead" by the [[Xinhua News Agency]],<ref>{{Cite web|title = Xu weizhou joined Read to Lead project of Xinhua News Agency|url=http://www.weibo.com/1797270765/EFP6TD5uB|website = weibo.com|access-date = 2017-04-23}}</ref> "Love the Earth" ႁင်း the New Media Exhibition of Global Sustainable Development,<ref>{{Cite web|title = Xu weizhou joined Love the Earth project of New Media Exhibition of Global Sustainable Development|url=http://www.weibo.com/6107668819/F3FKVc5il|website = weibo.com|access-date = 2017-05-18}}</ref> "Youth Attitudes - One Hundred Thousand Young People" ဢၼ် [[:en:NetEase|NetEase]],<ref>{{Cite web|title = Xu weizhou joined Youth attitudes project|url=http://weibo.com/5392863813/F4rS4scLE|website = weibo.com|access-date = 2017-05-23}}</ref> "Child Welfare & Protection Week" ဢၼ် the [[:en:Ministry of Civil Affairs|China Ministry of Civil Affairs]] လႄႈ [[:en:UNICEF|UNICEF]],<ref>{{Cite web|title = Xu weizhou joined Child Welfare & Protection Week charity|url=http://weibo.com/5796731205/F5yhvq6WR|website = weibo.com|access-date = 2017-05-30}}</ref><ref>{{Cite web|title = Xu Weizhou interactive scene with children playing games called for the protection of children|url = http://www.top-news.top/news-12975716.html|website = top-news.top|access-date = 2017-06-01|accessdate = 2021-03-22|archivedate = 2020-05-17|archiveurl = https://web.archive.org/web/20200517023505/http://www.top-news.top/news-12975716.html}} {{Cite web |title=Archive copy |url=http://www.top-news.top/news-12975716.html |accessdate=2021-03-22 |archivedate=2020-05-17 |archiveurl=https://web.archive.org/web/20200517023505/http://www.top-news.top/news-12975716.html }}</ref> "Release An Aquatic Animal to Protect Natural Resources" ဢၼ် ၾွင်ႇတေးသျိၼ်း [[:en:Alibaba Group|Alibaba]] ,<ref>{{Cite web|title = Xu weizhou joined the campaign of Alibaba Foundation|url = http://aliyuer.aligames.com/star/index/id/2?from=groupmessage&isappinstalled=1|website = aliyuer.aligames.com|access-date = 2017-08-01}}{{Dead link|date=August 2021 |bot=InternetArchiveBot |fix-attempted=yes }}</ref><ref>{{Cite web|title = Xu weizhou joined the campaign of Alibaba Foundation|url=https://weibo.cn/1866863440/4137870153271567|website = weibo.com|access-date = 2017-08-05}}</ref> "Caring for People with A Spinal Cord Injury" ဢၼ် WeiboFit, ၾွင်ႇတေးသျိၼ်းၶႄႇ တႃႇၵူၼ်းလၵ်ႉၶၼႃႇဢမ်ႇတဵမ်ထူၼ်ႈ လႄႈ ဢေႇၵျႅၼ်ႇၸီႇ ၶၢဝ်ႇ သိၼ်ႇႁႂႃႇ ၊<ref>{{Cite web|title = Xu weizhou joined the campaign of Caring for People with A Spinal Cord Injury|url=http://weibo.com/1797270765/Fh6aYmmhv|website = weibo.com|access-date = 2017-08-14}}</ref> "Make A Promise - Lockit Series" ဢၼ် [[:en:Louis Vuitton|Louis Vuitton]] လႄႈ [[:en:UNICEF|UNICEF]],<ref>{{Cite web|title = Xu weizhou joined the campaign of Make A Promise - Lockit Series|url=https://mp.weixin.qq.com/s/9eBk0w58yUUOgk1M8J3YWA|website = mp.weixin.qq.com|access-date = 2017-09-20}}</ref> လႄႈ "Cat & Dog Daily - Adopt pets" ဢၼ် [[:en:NetEase|NetEase]] သေၵေႃႈ လႆႈ မၼ်းသိုပ်ႇႁဵတ်းသၢင်ႈ လွင်ႈသႂ်ႇႁႅင်းၼိူဝ် ၵၢၼ်ၵမ်ႉထွၵ်ႈၸွႆႈထႅမ်မႃးယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou joined the campaign of Cat & Dog Daily - Adopt pets|url=https://weibo.com/1797270765/FsDfr7GCH|website = weibo.com|access-date = 2017-10-29}}</ref> လိူဝ်သေၼၼ်ႉဢမ်ႇၵႃး မၼ်းယၢမ်ႈပဵၼ်မႃး ၽွင်းတၢင်တူဝ် တႃႇ "Adopt A Green Plant for Green Earth" ဢၼ် Campus Public Welfare Foundation ၊<ref>{{Cite web|title = Xu weizhou as ambassador for Adopt A Green Plant for Green Earth project of Campus Public Welfare Foundation|url=http://www.weibo.com/3161835662/EClVE4Jgr|website = weibo.com|access-date = 2017-03-31}}</ref> "Caring for Disabled Children" ဢၼ် ၾွင်ႇတေးသျိၼ်းသျင်ႇႁၢႆး တႃႇၵူၼ်းလၵ်ႉၶၼႃႇဢမ်ႇတဵမ်ထူၼ်ႈ ၊<ref>{{Cite web|title = Xu weizhou as ambassador for Caring for Disabled Children of Beijing Foundation for Disabled Person |url=http://weibo.com/5392863813/4109807324222933|website = weibo.com|access-date = 2017-05-21}}</ref> "Caring for Blind Children" ဢၼ် [[:en: Sina Corp|Sina]] Micro-Philanthropy,<ref>{{Cite web|title = Xu weizhou as ambassador for Caring for Blind Children|url=https://weibo.cn/1797270765/4133013471656567|website = weibo.com|access-date = 2017-07-24}}</ref> "Boiling Point Public Welfare" ဢၼ် [[:en:Baidu|Baidu]],<ref>{{Cite web|title = Xu weizhou was appointed as a charity ambassador for Baidu Boiling Point Public Welfare|url=https://weibo.cn/2375071555/4139874665508878|website = weibo.com|access-date = 2017-08-12}}</ref> လႄႈ "I want to go to school" ဢၼ် ရေႇတီႇယူဝ်ႇ ၽဵင်းၵႂၢမ်း - [[:en:China National Radio|China National Radio (CNR)]] လႄႈ the China Children and Teenagers' Fund (CCTF) ၸိူဝ်းၼႆႉယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou was appointed as a charity ambassador for I want to go to school charity project of China National Radio|url = http://www.ricedonate.com/page/activity/adygl/2017/?uid=AU2xC6GyNJhEX&s_sc=weibo|website = ricedonate.com|access-date = 2017-09-15|accessdate = 2021-03-22|archivedate = 2021-02-05|archiveurl = https://web.archive.org/web/20210205092328/http://www.ricedonate.com/page/activity/adygl/2017/?uid=AU2xC6GyNJhEX&s_sc=weibo}} {{Cite web |title=Archive copy |url=http://www.ricedonate.com/page/activity/adygl/2017/?uid=AU2xC6GyNJhEX&s_sc=weibo |accessdate=2021-03-22 |archivedate=2021-02-05 |archiveurl=https://web.archive.org/web/20210205092328/http://www.ricedonate.com/page/activity/adygl/2017/?uid=AU2xC6GyNJhEX&s_sc=weibo }}</ref> ဝၢႆးလင် ၵျူႇလၢႆႇၼၼ်ႉ လုၵ်ႉတီႈ China Charities Aid Foundation for Children လႆႈပိုၼ်ၽၢဝ် လွင်ႈယိုၼ်ႈဢၢပ်ႇ သျီႇ ပဵၼ်ၼင်ႇ ၽွင်းတၢင်တူဝ် ၵၢၼ်ၵမ်ႉထွၵ်ႈၸွႆႈထႅမ် တႃႇ ပရေႃးၵျႅတ်ႉ "Hope For Home For Children" တႃႇၶၢဝ်းတၢင်းသွင်ပီ ၼႆယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou was appointed as a charity ambassador for China Charities Aid Foundation for children|url=https://weibo.cn/2462184090/4134803454966633|website = weibo.com|access-date = 2017-07-29}}</ref> ဢွၵ်ႇထူဝ်ႇပႃႇ 20 ၊ လုၵ်ႉတီႈ ႁွင်ႈၵၢၼ်လူင် ၽၢႆႇၵႅတ်ႇၵင်ႈၽေးၽႆး သျင်ႇႁၢႆး လႆႈယိုၼ်ႈဢၢပ်ႈမၼ်းပဵၼ် ၽွင်းတၢင်တူဝ် ၵူၼ်းၵႅတ်ႇၵင်ႈၽေးၽႆး ပဵၼ်တၢင်းၵၢၼ်သေ တႃႇႁႂ်ႈယုင်ႈယွင်ႈပၼ် ၵၢၼ်တူင်ႉၼိုင်ႈၽၢႆႇၼွၵ်ႈ လႄႈ ၵၢၼ်ၸွႆႈသၢင်ႈၶဝ်ၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou was appointed as a firefighter ambassador for Shanghai fire department|url=https://weibo.cn/2294165474/4164870642064105|website = weibo.com|access-date = 2017-10-20}}</ref> ၼႂ်းၼူဝ်ႇဝႅမ်ႇပႃႇ၊ မၼ်းလႆႈထုၵ်ႇ ယိုၼ်ႈဢၢပ်ႈပဵၼ် ၽွင်းတၢင်တူဝ် Ice and Snow တွၼ်ႈတႃႇ ၶွင်ႉသွၼ်ၵၢၼ်လဵၼ်ႈႁႅင်း SINA ယဝ်ႉ။<ref>{{Cite web|title = Xu weizhou was appointed as Ice and Snow ambassador for SINA's sport classroom|url=https://weibo.com/3082736390/Fv1CVkkMe|website = weibo.com|access-date = 2017-11-14}}</ref> လိူဝ်သေၼၼ်ႉဢမ်ႇၵႃး [[:en:Sina Weibo|Sina Weibo]] လႆႈပိုၼ်ၽၢဝ်ႇမွၵ်ႇလၢတ်ႈဝႃႈ လွင်ႈတူင်ႉၼိုင် ၵၢၼ်ၸွႆႈထႅမ်လူႇတၢၼ်း ဢၼ်သျီႇႁဵတ်းၼၼ်ႉ လႆႈပဵၼ်မႃး ႁူဝ်ၶေႃႈ ဢၼ်ႁူမ်ႈငမ်းလွင်ႈၵၢၼ်ၸွႆႈထႅမ်သေပိူၼ်ႈ ၼႂ်းၵႃႈ ထႅၼ်ႈ 10 ဢၼ် ၼႂ်းပီ 2017 ၼၼ်ႉ ၼႆယဝ်ႉ။<ref>{{Cite web|title = Xu's charity activities become one of 10 most influential charitable topics of the year|url=https://weibo.com/2089358175/FDpKHthcy|website = weibo.com|access-date = 2018-01-08}}</ref> === 2018 === ၼႂ်းပီ 2018 ၼၼ်ႉ သျီႇ ပဵၼ် ၽွင်းတၢင်တူဝ်သေ လႆႈၶဝ်ႈႁူမ်ႈတင်း ၶပ်ႉမၢႆလွင်ႈလူႇတၢၼ်း ၶွင် Netease တွၼ်ႈတႃႇ ပရေႃးၵျႅတ်ႉ လူႇတၢၼ်းပပ်ႉ တႃႇ လုၵ်ႈဢွၼ်ႇ ၸိူဝ်းမီးတီႈ ဝၢၼ်ႈၼွၵ်ႈၼႃးပၢင်ႇၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu joined Netease's charity program|url=https://m.weibo.cn/5392863813/4231703846829089|website = weibo.cn|access-date = 2018-04-22}}</ref> ၼႂ်းလိူၼ်ဢေႃးၵၢတ်ႉၼၼ်ႉ မၼ်းထုၵ်ႇယိုၼ်ႈဢၢပ်ႈပဵၼ် ၽွင်းတၢင်တူဝ် ပဵၼ်တၢင်းၵၢၼ် တႃႇယုၵ်ႉယွင်ႈ ၵၢၼ်လဵၼ်ႈႁႅင်းၶၢဝ်းၵတ်းၸိုင်ႈမိူင်း တွၼ်ႈတႃႇ [[:en:2022 Winter Olympics|2022 Winter Olympics]] တီႈ ပေႇၵျိင်းၼၼ်ႉယဝ်ႉ။<ref>{{Cite web|title = Xu was appointed as National Winter Sports promotion ambassador for 2022|url=https://m.weibo.cn/1797270765/4272551214168584|website = weibo.cn|access-date = 2018-08-13}}</ref> ၼႂ်းတီႇသႅမ်ႇပႃႇ၊ သျီႇ လႆႈပဵၼ်မႃး ၽွင်းတၢင်တူဝ် [[:en:Pink ribbon|Pink ribbon]] ၶွင် TRENDSHEALTH သေ ပဵၼ်တွၼ်ႈတႃႇ ႁႂ်ႈဝႆႉသတိၽၢင်ႉမႅၼ်ႈၺႃး ၶႅၼ်ႇသႃႇၼူမ်း ၼၼ်ႉယဝ်ႉ။ ၼႂ်းလိူၼ်ဢွၵ်ႇထူဝ်ႇပႃႇ ၼၼ်ႉ မၼ်းထုၵ်ႇ [[:en:European Travel Commission|The European Travel Commission]] (ETC) ဢၼ် [[:en:European Union|European Union]] ၶဝ်တႄႇတင်ႈဝႆႉၼၼ်ႉ ယိုၼ်ႈဢၢပ်ႈမၼ်းပဵၼ် ၽွင်းတၢင်တူဝ် ပီထွင်ႈတဵဝ်း ဢီးယူႇ-မိူင်းၶႄႇ တွၼ်ႈတႃႇယုၵ်ႉယွင်ႈ ၵၢၼ်ထွင်ႈတဵဝ်း တီႈ EU ၼႆယဝ်ႉ။ === 2019 === ၼႂ်းပီ 2019 ၼၼ်ႉ ၸွမ်းၼင်ႇ Annual China Entertainment Index သေ ၼႂ်းၵႃႈ သဵၼ်ႈမၢႆ ထႅၼ်ႈၸဝ်ႈပၢႆးမွၼ်းၸၢႆး 10 ၵေႃႉ ဢၼ်မီးလွင်ႈႁူမ်ႇငမ်းၼိူဝ် ၵၢၼ်ၸွႆႈထႅမ်ၵူၼ်းတင်းၼမ် တႃႇ ပီ 2018 ၼၼ်ႉ သျီႇၼႆႉ လႆႈမီးတီႈ ၸၼ်ႉ သီႇယဝ်ႉ။ လိူၼ်မၢတ်ႉၶျ် 18၊ သျီႇ ထုၵ်ႇယိုၼ်ႈဢၢပ်ႈပဵၼ် ၽွင်းတၢင်တူဝ် China's science fiction တွၼ်ႈတႃႇ လွင်ႈၸိုဝ်ႈလိုဝ်းလင် ပၢႆးသၢႆးယႅၼ်ႉၸိုင်ႈမိူင်းၼၼ်ႉယဝ်ႉ။ မၢတ်ႉၶျ် 30 ၼၼ်ႉ မၼ်းၶိုၼ်ႈႁွတ်ႈ Lights-Out of Earth Hour ဢၼ်ပဵၼ် ၶပ်ႉမၢႆလွင်ႈၵွင်ႉသိုပ်ႇၵမ်ႇၽႃႇလူႇတၢၼ်း တွၼ်ႈတႃႇ ယုၵ်ႉယွင်ႈ လွင်ႈၵႅတ်ႇၵင်ႈ သိူင်ႇဝႅတ်ႉလွမ်ႉၼၼ်ႉယဝ်ႉ။ ၼႂ်းလိူၼ်မေႇၼၼ်ႉ မၼ်းထုၵ်ႇလိူၵ်ႈတႃႇပဵၼ် ၽွင်းတၢင်တူဝ် ႁင်း "Sunshine of Love" ဢၼ်ပဵၼ် ပရေႃးၵျႅတ်ႉ တႃႇၵူၼ်းၸိူဝ်းပဵၼ်တုၵ်ႉၶိတ တီႈၼႂ်းမိူင်းၶႄႇၼၼ်ႉယဝ်ႉ။ ==Filmography== ===Films=== {| class="wikitable plainrowheaders sortable" |- !ပီ !! ႁူဝ်ၶေႃႈ !! ႁူဝ်ၶေႃႈ ၶႄႇ !! Role!! မၢႆတွင်း !! ၽိုၼ်ဢိင် |- | 2015 || ''Gaming Madness'' || 电竞也疯狂 || Yue Hongsheng || Short film || |- | 2016 || ''[[:en:Big Fish & Begonia|Big Fish & Begonia]]'' || 大鱼海棠 || Kun ||Voice role|| <ref>{{Cite web|title = Big Fish & Begonia|url=https://www.hollywoodreporter.com/review/big-fish-begonia-1099011|website = hollywoodreporter.com |access-date = 2018-04-06}}</ref> |- | 2019 || ''[[:en:The Rookies (2019 film)|The Rookies]]'' || 素人特工 || Ding Shan || Support role || <ref>{{Cite web|title = Milla Jovovich set to light up screens on the mainland|url=http://www.china.org.cn/arts/2019-06/25/content_74919629.htm|website = china.org.cn|access-date = 2019-06-25}}</ref> |- |} ===Television series=== {|class="wikitable plainrowheaders sortable" |- ! ပီ !! ႁူဝ်ၶေႃႈ ဢိင်းၵလဵတ်ႈ !! ႁူဝ်ၶေႃႈ ၶႄႇ !! Role !! Network !! မၢႆတွင်း !! ၽိုၼ်ဢိင် |- | 2016 || ''[[:en:Addicted (web series)|Addicted]]'' || 上瘾 || Bai Luoyin || [[:en:iQiyi|iQiyi]], [[YouTube]]|| Lead role || <ref>{{Cite web|title = 《上瘾许魏洲 为培养默契与黄景瑜同睡|url = http://www.5669.com/star/xuweizhou/180818.shtml|website = 5669.com|access-date = 2019-07-05|accessdate = 2021-03-22|archivedate = 2020-03-24|archiveurl = https://web.archive.org/web/20200324040947/http://www.5669.com/star/xuweizhou/180818.shtml}} {{Cite web |title=Archive copy |url=http://www.5669.com/star/xuweizhou/180818.shtml |accessdate=2021-03-22 |archivedate=2020-03-24 |archiveurl=https://web.archive.org/web/20200324040947/http://www.5669.com/star/xuweizhou/180818.shtml }}</ref> |- | 2018 || ''[[:en:The Evolution of Our Love|The Evolution of Our Love]]'' || 爱情进化论 || Ding Yuyang || [[:en:Zhejiang Television|Zhejiang TV]], [[:en:Dragon Television|Shanghai TV]]|| Support role || <ref>{{Cite web|title = 《爱情进化论》许魏洲张若昀"土味告白"张天爱|url=http://ent.sina.com.cn/v/m/2018-07-26/doc-ihfvkitw7110054.shtml|website = sina.com.cn |access-date = 2019-07-05}}</ref> |- | 2019 || ''[[:en:My Girlfriend (TV series)|My Girlfriend]]'' || 我不能恋爱的女朋友 || Chi Xin || [[:en:Youku|Youku]] || rowspan=5 |Lead role || <ref>{{cite web|url=https://ent.163.com/19/0923/14/EPP00T2N000380EN.html|title=《我不能恋爱的女朋友》定档 许魏洲乔欣"心动"来袭|date=September 23, 2019|website=Netease|language=zh}}</ref> |- | Rowspan ="2" | 2020 || ''[[:en:Midsummer Is Full of Hearts|Midsummer Is Full of Hearts]]'' || 仲夏满天心 || Jin Zeyi || [[:en:Tencent Video|Tencent Video]] || <ref>{{Cite web|title = 《仲夏满天心》无锡开机 杨超越许魏洲首次携手|url=https://k.sina.com.cn/article_1686546714_6486a91a02000pwun.html|website = sina.com.cn |access-date = 2019-07-08}}</ref> |- | ''[[:en:Dear Mayang Street|Dear Mayang Street]]'' || 亲爱的麻洋街 || Ou Xiaojian || Youku || <ref>{{cite web|url=https://k.sina.com.cn/article_5305757517_13c3f6f4d02000nqzz.html|title=《亲爱的麻洋街》谭松韵、许魏洲、牛骏峰谱写八十年代之歌|date=August 5, 2019|work=Sina|language=zh}}</ref> |- | Rowspan ="2" | 2021 || ''Weaving a Tale of Love'' || 风起霓裳 || Pei Xingjian || [[:en:Hunan Television|Hunan TV]], Youku || <ref>{{Cite web|title =《大唐明月》娜扎合作许魏洲诠释大唐爱情,近期开机|url=http://www.bjnews.com.cn/ent/2020/05/07/724691.html|date=May 7, 2020|website=Beijing News|language=zh}}</ref> |- | ''[[:en:Ping Pong (Chinese drama)|Ping Pong]]'' || 荣耀乒乓 ||Yu Kenan|| iQiyi ||<ref>{{Cite web|title = 《乒乓》开机致敬国乒 许魏洲白敬亭点燃乒乓之旅|url=http://sports.sina.com.cn/others/pingpang/2018-11-21/doc-ihmutuec2139902.shtml|website = sina.com.cn |access-date = 2019-07-05}}</ref> |- | Rowspan ="2" | TBA || ''The Founding of the Republic '' || 光辉的旗帜 || || Rowspan ="2"|TBA || cameo || |- | ''City of Streamer'' || 流光之城 || Rong Jiashang || Lead role || |} ===Documentary=== {| class="wikitable plainrowheaders sortable" |- !ပီ !! ႁူဝ်ၶေႃႈ !! ႁူဝ်ၶေႃႈ ၽၢႆႇၶႄႇ !! Role !! Network !! မၢႆတွင်း !! ၽိုၼ်ဢိင် |- | 2017 || ''Shadow of Light'' || 光之影 || Himself || YouTube ||{{small|2016 First Light Asia Tour Concert Documentary}} ||<ref>{{Cite web|title = Timmy Xu WeiZhou "2016 Asia Tour Concert" Documentary《Shadow of Light》Complete Version|url=https://www.youtube.com/watch?v=fHwSoEqmE-A|website = youtube.com |access-date = 2019-07-05}}</ref> |- | 2018 || ''Documentary of the Xu Weizhou Birthday Concert'' || 许魏洲生日演唱会纪录片 || Himself || iQiyi || {{small|2018 Final Light Beijing Birthday Concert Documentary}} ||<ref>{{Cite web|title = 独家:许魏洲生日演唱会全程纪录片 摇滚精神就是做自己喜欢的|url=https://www.iqiyi.com/v_19rr369lqo.html|website = iqiyi.com |access-date = 2019-09-10}}</ref> |- |} ===သျူဝ်း ၵူႈမဵဝ်းမဵဝ်း=== {|class="wikitable plainrowheaders sortable" |- ! ပီ ! ႁူဝ်ၶေႃႈ ဢိင်းၵလဵတ်ႈ ! ႁူဝ်ၶေႃႈ ၶႄႇ ! Role ! Network ! မၢႆတွင်း ! ၽိုၼ်ဢိင် |- | rowspan ="2" | 2017 | ''Intangible Her'' | 触不到的TA | Cast member | [[:en:Tencent Video|Tencent Video]] | Episode 8 | <ref>{{Cite web|title = 触不到的TA》完整版:[第8期]许魏洲卖萌砍价,与大妈尬舞反被催婚:快找女朋友!|url=https://www.youtube.com/watch?v=n10OI5lWQj4 |access-date = 2017-03-14}}</ref> |- | ''Global Chinese Music Chart'' | 全球中文音乐榜上榜 | rowspan ="2" |Guest | [[:en:China Central Television|CCTV-15]] | | |- | rowspan ="3" | 2018 | ''Give Me Five'' | 高能少年团 | [[:en:Zhejiang Television|Zhejiang TV]] | Season 2, episode 2 & 3 | <ref>{{Cite web|title = 【第2期】王俊凯张一山攀岩大PK 王大陆成表情包制造机"紫山组合"互怼模式笑呆众人《高能少年团2》 20180505 [浙江卫视官方HD]|url=https://www.youtube.com/watch?v=M5C3I_rrheg|website = Youtube|access-date = 2018-05-05}}</ref><ref>{{Cite web|title = 【第3期】王俊凯许魏洲少年力爆膨 上演灌篮大PK!张一山恶整杨紫"紫山组合"分道扬镳!《高能少年团2》 20180512 [浙江卫视官方HD]|url=https://www.youtube.com/watch?v=YRVF-RZB9co|website = Youtube|access-date = 2018-05-12}}</ref> |- | ''[[:en:Shake It Up (Chinese TV series)|Shake It Up]]'' | 新舞林大会 | Contestant | [[:en:Dragon Television|Shanghai TV]] | | <ref>{{Cite web|title = 许魏洲承包周末王牌综艺 《新舞林大会》"惨遭"赛制套路|url=http://news.sina.com.cn/o/2018-07-31/doc-ihhacrce0639333.shtml|website = sina.com |access-date = 2019-06-30}}</ref> |- | ''[[:en:Happy Camp (TV series)|Happy Camp]]'' | 快乐大本营 | rowspan ="5" |Guest | [[:en:Hunan Television|Hunan TV]] | Ep. 1053, 1063, 1074 | <ref>{{Cite web|title = 《快乐大本营》20180728期:吴尊郑元畅魅力熟男组合 梁靖康许魏洲"男友力"爆棚 宋茜鞠婧祎变身"野蛮女友"Happy Camp【湖南卫视官方频道】|url=https://www.youtube.com/watch?v=uHvDJVzryww|website = Youtube |access-date = 2018-07-28}}</ref><ref>{{Cite web|title = 《快乐大本营》20181006期:钟汉良许魏洲舞林高手大对决 孙怡变身时尚达人惊艳来袭 Happy Camp【湖南卫视官方频道】|url=https://www.youtube.com/watch?v=VcAmrbixNrs|website = Youtube |access-date = 2018-10-06}}</ref><ref>{{Cite web|title = 181222期:许魏洲彭昱畅上演兄弟互怼|url=https://www.youtube.com/watch?v=pK-tQVkn8B0|website = Youtube |access-date = 2018-12-22}}</ref> |- | rowspan = "5" | 2019 | ''Everlasting Classics'' | 经典咏流传 | [[:en:CCTV-1|CCTV-1]] | Season 2, episode 9 | <ref>{{Cite web|title = 《经典咏流传第二季》 许魏洲《沁园春·雪》抒发青年意气 "华语流行音乐教父"鲍比达深情演绎《游子吟》感恩中国血脉 20190420 |url=https://www.youtube.com/watch?v=OkZl7LwdnHo|website = Youtube |access-date = 2019-04-20}}</ref> |- | ''[[:en:Day Day Up|Day Day Up]]'' | 天天向上 | rowspan ="2"|Hunan TV | | <ref>{{Cite web|title = 《天天向上》20190421期:李光洁许魏洲乔欣组"想上天真相团" 众星集结致敬中国航天人 Day Day Up【湖南卫视官方HD】|url=https://www.youtube.com/watch?v=Tj41aZlEf7w|website = Youtube |access-date = 2019-04-21}}</ref> |- | ''Happy Camp'' | 快乐大本营 | | <ref>{{Cite web|title = 《快乐大本营》20191102期:李光洁许魏洲尝试另类美食形象"秒崩" 王子异秀惊人弹跳力 Happy Camp【湖南卫视官方HD】|url=https://www.youtube.com/watch?v=_rCjbTnqD-U|website = Youtube |access-date = 2019-11-03}}</ref> |- | ''Meet at Temple of Heaven'' | 遇见天坛 | [[:en:Beijing Television|Beijing TV]] | Episode 7 | |- | ''Young Forever'' | 我们的歌 | Contestant | rowspan ="2"| Shanghai TV | | |- | rowspan = "8" | 2020 | ''We Are On The Way'' | 我们在行动 | rowspan ="3" |Guest | Season 4, episode 7 & 8 | <ref>{{Cite web|title = 第7期:许魏洲大秀厨艺被当地大娘直接"催婚",穿着传统青绣服装开直播的薇娅你们见过吗?{{!}}《我们在行动4》We Are On The Way S4 EP7【东方卫视官方频道】|url=https://www.youtube.com/watch?v=YDZAbh1EYkk|website = Youtube|access-date = 2020-01-21}}</ref><ref>{{Cite web|title = 第8期:许魏洲手气爆棚疯抢签名 薇娅直播"带货"秒光惊呆众人 洲洲助力青绣show实在是太赞了 {{!}}《我们在行动4》We Are On The Way S4 EP8【东方卫视官方频道】|url=https://www.youtube.com/watch?v=84wdzzdMW-g|website = Youtube|access-date = 2020-02-11}}</ref> |- | ''Happy Camp'' | 快乐大本营 | rowspan ="2" | Hunan TV | | <ref>{{Cite web|title = 【ENG SUB】《快乐大本营》20200307期:宋祖儿曝料吴磊同窗趣事 许魏洲分享宅家生活 Happy Camp【湖南卫视官方HD】|url=https://www.youtube.com/watch?v=nPUW037v_Xw|website = Youtube |access-date = 2020-03-08}}</ref> |- | ''[[:en:Singer 2020|Singer 2020]]'' | 歌手 | Season 8, episode 12 | |- | ''Life is Beautiful'' | 让生活好看 | Cast member | Tencent Video | | |- | ''[[:en:Back to Field|Back to Field]]'' | 向往的生活 | rowspan ="5" | Guest | Hunan TV | Season 4, episode 5 & 6 | |- | ''Hi! Relax'' | 亲爱的请放松 | [[:en:Mango TV|Mango TV]] | Episode 5 | |- | ''Everlasting Classics'' | 经典咏流传 | CCTV-1 | Season 3, episode 7 | |- | ''Crossover Singer'' | 跨界歌王 | Beijing TV | Season 5, episode 7 | |- | 2021 | ''Marvelous City'' | 奇妙之城 | Youku | Episode 5 | |- |} ==ၽိုၼ်ဢိင်== {{Reflist}} [[ပိူင်ထၢၼ်ႈ:ၸဝ်ႈပၢႆးမွၼ်းၶႄႇ]] [[ပိူင်ထၢၼ်ႈ:ၸၢႆးငဝ်းၶႄႇ]] [[ပိူင်ထၢၼ်ႈ:ၸၢႆးငဝ်း တႄႇလီဝေးသျိၼ်းၶႄႇ]] cz6nqs0frbw8vzrkeit8p6akqfgelhh ထၢၼ်ၽွင်းလူင် ၵၢၼ်ၵႅတ်ႇၵင်ႈ မိူင်းမျၢၼ်ႇမႃႇ 0 20807 126488 44172 2026-06-13T23:59:57Z InternetArchiveBot 2342 Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 126488 wikitext text/x-wiki {{Infobox government agency | agency_name = Ministry of Defence | type = ထၢၼ်ၽွင်းလူင် | nativename_a = {{my|ကာကွယ်ရေးဝန်ကြီးဌာန}} | nativename_r = | seal =Seal of MOD.jpeg | seal_width = | seal_caption =မိၵ်ႈမၢႆ ဢၼ် ထၢၼ်ၽွင်းလူင် ၵၢၼ်ၵႅတ်ႇၵင်ႈ မိူင်းမျၢၼ်ႇမႃႇ ၸႂ်ႉဝႆႉ | logo = | logo_width = | logo_caption = | picture = | picture_width = | picture_caption = | formed = *1937 ဢေႇပရႄႇ 1{{small|(ႁွင်ႈၵၢၼ်လူင် ၵၢၼ်ၵႅတ်ႇၵင်ႈ)}} *1948 မေႇ 8{{small|(လုမ်းသိုၵ်း)}} *{{Start date and age|df=yes|1956|01|01}}{{small|(ထၢၼ်ၽွင်းလူင်)}}<!-- {{Start date|df=yes|YYYY|MM|DD}} OR {{Start date and age|df=yes|YYYY|MM|DD}} --> | preceding1 = | preceding2 = <!-- up to |preceding6= --> | dissolved = | superseding = | agency_type = ထၢၼ်ၽွင်းလူင် | jurisdiction = [[မျၢၼ်ႇမႃႇ]] | headquarters = မၢႆလုမ်း (24)၊[[ၼေႇပျီႇတေႃႇ]] | latd = | latm = | lats = | latNS = | longd = | longm = | longs = | longEW = | region_code = | coordinates = <!-- {{coord|LATITUDE|LONGITUDE|type:landmark_region:US|display=inline,title}} --> | motto = | employees = | budget = {{USD|2.289 billion}} (2013) | minister1_name =[[မျႃႉထုၼ်းဢူး|ၸွမ်သိုၵ်းမျႃႉထုၼ်းဢူး]] | minister1_pfo = | minister2_name = | minister2_pfo = <!-- up to |minister7_name= --> | deputyminister1_name = | deputyminister1_pfo = | deputyminister2_name = | deputyminister2_pfo = <!-- up to |deputyminister7_name= --> | parent_department = | parent_agency = | child1_agency = Myanmar Economic Corporation | child2_agency = Union of Myanmar Economic Holdings | keydocument1 = <!-- up to |keydocument6= --> | website = {{url|mod.gov.mm}} | map = | map_width = | map_caption = | footnotes = | embed = }} တီႈ [[ထၢၼ်ၽွင်းလူင်]] မိူင်းမျၢၼ်ႇမႃႇၼၼ်ႉ ၵပ်းၵၢႆႇလူၺ်ႈ ၵၢၼ်ၵႅတ်ႇၵင်ႈသေ မီးဝႆႉ ထၢၼ်ၽွင်းလူင် ၵၢၼ်ၵႅတ်ႇၵင်ႈယဝ်ႉ။ ဢၼ်ပဵၼ် ၽွင်းလူင်မိူင်းႁူမ်ႈတုမ်ယၢမ်းလဵဝ်ၼႆႉ ပဵၼ် [[မျႃႉထုၼ်းဢူး (ၸွမ်သိုၵ်း)|ၸွမ်သိုၵ်းမျႃႉထုၼ်းဢူး]]ယဝ်ႉ။ ၶုၼ်ၼၢမ်းၵၢၼ် ထၢၼ်ၽွင်းလူင် ၵၢၼ်ၵႅတ်ႇၵင်ႈ ယၢမ်းလဵဝ်ၼႆႉ ပဵၼ် ၸွမ်ႁၢၼ်ဢွင်ႇၵျေႃႇႁူဝ်းယဝ်ႉ။<ref>{{Cite web |url=https://news-eleven.com/article/111625 |title=Archive copy |access-date=2021-03-23 |archive-date=2019-10-12 |archive-url=https://web.archive.org/web/20191012074831/https://news-eleven.com/article/111625 |url-status=dead }}</ref> ==ၽွင်းလူင်== {| class="wikitable" |rowspan=2|မၢႆၶပ်ႉ |rowspan=2|ၸိုဝ်ႈ !colspan=2|ၶၢဝ်း |- !တႄႇ !တေႃႇထိုင် |- |1 |ၶုၼ်သိုၵ်းလႅတ်ႉၵျႃႇ |1-8-1947 |13-9-1948 |- |2 |ဢူးၼု |14-9-1948 |3-4-1949 |- |3 |ၸွမ်ႁၢၼ် ၼေႇဝိၼ်း |4-4-1949 |9-9-1950 |- |4 |ဢူးဝိၼ်း |18-9-1950 |15-3-1952 |- |5 |ဢူးပႃႉသူၺ်ႇ |16-3-1952 |4-6-1958 |- |6 |ၸဝ်ႈႁၢၼ် ဢွင်ႇ |9-6-1958 |28-9-1958 |- |7 |ၸွမ်သိုၵ်းလူင် ၼေႇဝိၼ်း |29-9-1958 |15-3-1960 |- |8 |ဢူးၼု |16-3-1960 |2-3-1962 |- |9 |ၸွမ်သိုၵ်းလူင် ၼေႇဝိၼ်း |3-3-1962 |20-4-1972 |- |10 |ၸွမ်သိုၵ်းလူင် ၸၢၼ်းယု |21-4-1972 |7-3-1974 |- |11 |ၸွမ်သိုၵ်းလူင် တိၼ်ႇဢူး |8-3-1974 |6-3-1976 |- |12 |ၸွမ်သိုၵ်းလူင် တူႇရၵျေႃႇထိၼ်ႇ |7-3-1976 |27-7-1988 |- |13 |ၸွမ်ပွင်သိုၵ်း ၸေႃးမွင်ႇ |28-7-1988 |19-3-1992 |- |14 |[[တၢၼ်းသူၺ်ႇ၊ (ၸွမ်ပွင်သိုၵ်း)|ၸွမ်သိုၵ်းလူင် တၢၼ်းသူၺ်ႇ]] {{small|(ဝၢႆးလင် ပဵၼ် ၸွမ်ပွင်သိုၵ်း)}} |20-3-1992 |29-3-2011 |- |15 |ၸွမ်သိုၵ်း လႃႉမိၼ်း |30-3-2011 |7-9-2012 |- |16 |ၸွမ်သိုၵ်း ဝူၺ်ႇလႂိၼ်ႇ |8-9-2012 |12-8-2015 |- |17 |ၸွမ်သိုၵ်း ၸဵင်ႇဝိၼ်း |25-8-2015 |1-2-2021 |- |18 |[[မျႃႉထုၼ်းဢူး (ၸွမ်သိုၵ်း)|ၸွမ်သိုၵ်းလူင် မျႃႉထုၼ်းဢူး]] |1-2-2021 |တေႃႇယၢမ်းလဵဝ် |} ===ၸွမ်ပွင်ၵၢၼ်သိုၵ်း / ၽူႈၸိူဝ်းႁၢပ်ႇၵၢၼ် ပုၼ်ၽွၼ်းၸွမ်ပွင်ၵၢၼ်သိုၵ်းတပ်ႉမတေႃႇ လႄႈ ၽွင်းလူင် ၵၢၼ်ၵႅတ်ႇၵင်ႈ ႁူမ်ႈၵၼ်=== တႄႇဢဝ် ၸွမ်သိုၵ်းလူင်ၼေႇဝိၼ်း တေႃႇ ၸွမ်ပွင်သိုၵ်းတၢၼ်းသူၺ်ႇၼၼ်ႉ ၽူႈၸိူဝ်းႁၢပ်ႇၵၢၼ် ၸွမ်ပွင်ၵၢၼ်သိုၵ်း/ၸွမ်ပွင်ၵၢၼ်သိုၵ်း တပ်ႉမတေႃႇ ၼႆႉ မီးမႃး 6 ၵေႃႉသေ ၶဝ် 6 ၵေႃႉၼၼ်ႉ လႆႈႁၢပ်ႇၵၢၼ်ပႃး ပုၼ်ႈၽွင်း ၽွင်းလူင် ၵၢၼ်ၵႅတ်ႇၵင်ႈယဝ်ႉ။ ၸွမ်ပွင်ၵၢၼ်သိုၵ်း 6 ၵေႃႉ ၸိူဝ်းႁၢပ်ႇၵၢၼ်ပႃး ပုၼ်ၽွင်းၽွင်းလူင် ၵၢၼ်ၵႅတ်ႇၵင်ႈၼၼ်ႉ မီးၼင်ႇၽၢႆႇတႂ်ႈၼႆႉယဝ်ႉ။ {| class="wikitable" |rowspan=2|မၢႆၶပ်ႉ |rowspan=2|ၸိုဝ်ႈ !colspan=2|ၶၢဝ်း |- !တႄႇ !တေႃႇထိုင် |- |1 |ၸွမ်သိုၵ်းလူင် ၼေႇဝိၼ်း |2 - 3 - 1962 |20 - 4 - 1972 |- |2 |ၸွမ်သိုၵ်းလူင် ၸၢၼ်းယု |21 - 4 - 1972 |7 - 3 - 1974 |- |3 |ၸွမ်သိုၵ်းလူင် တိၼ်ႇဢူး |8 - 3 - 1974 |6 - 3 - 1976 |- |4 |ၸွမ်သိုၵ်းလူင် တူႇရၵျေႃႇထိၼ်ႇ |7 - 3 - 1976 |27 - 7 - 1988 |- |5 |ၸွမ်ပွင်သိုၵ်း ၸေႃးမွင်ႇ |28 - 7 - 1988 |19 - 3 - 1992 |- |6 |ၸွမ်ပွင်သိုၵ်း တၢၼ်းသူၺ်ႇ |20 - 3 - 1992 |29 - 3 - 2011 |} == ပိူင်ၽွတ်ႈႁႅၼ်း == ထၢၼ်ၽွင်းလူင် ၵၢၼ်ၵႅတ်ႇၵင်ႈၼႆႉ ပိူင်ၽွတ်ႈႁႅၼ်းမၼ်း ဢမ်ႇမိူၼ်ၼင်ႇ ထၢၼ်ၽွင်းလူင်တၢင်ႇဢၼ်သေ ပႅၵ်ႇပိူင်ႈပိူၼ်ႈဝႆႉယူႇယဝ်ႉ။ တီႈထၢၼ်ၽွင်းလူင် တၢင်ႇဢၼ်ၼႆႉ ၸိူဝ်းပဵၼ် ႁွင်ႈၵၢၼ်လူင်၊ ၵေႃႇပူဝ်ႇရေးသျိၼ်း၊ ၸုမ်းပူတ်ႉ ၼၼ်ႉ ဝႆႉတႂ်ႈမိူဝ်းမၼ်းသေ လုၵ်ႉတီႈ ထၢၼ်ၽွင်းလူင်း ဢုပ်ႉပိူင်ႇၵမ်းသိုဝ်ႈယဝ်ႉ။ ထၢၼ်ၽွင်းလူင် ၵၢၼ်ၵႅတ်ႇၵင်ႈၸမ်ႉ ပဵၼ်ထၢၼ်ၽွင်းလူင်ဢၼ်ႁူမ်ႈၵၼ်ဝႆႉတင်း လုမ်းၽွင်းလူင်၊ လုမ်းႁွင်ႈၵၢၼ် ၽၢႆႇ ၵွင်း၊ ၼမ်ႉ၊ ၵၢင်ႁၢဝ်၊ ယေး၊ ထွၵ်ႉ ၸိူဝ်းၼႆႉ လႄႈ ၶဝ်ႈပႃး လုမ်းၶုၼ်ပွင်ၵၢၼ်ၽူႈႁၢပ်ႇၵၢၼ် ၸိူဝ်းၼႆႉယဝ်ႉ။ လိူဝ်သေၼၼ်ႉဢမ်ႇၵႃး ၸိူဝ်းပဵၼ်လုမ်းၽူႈႁၢပ်ႇၵၢၼ် ဢၼ်မီးတီႈၼႂ်း ထၢၼ်ၽွင်းလူင်ၼႆႉ ပေႃးႁဵတ်းၵၢၼ်ၼႆ လုမ်းတေႃႇလုမ်း လႆႈငူပ်ႉငိၵၼ်သေ ႁဵတ်းသၢင်ႈယဝ်ႉ။ တႄႇဢဝ် ပီ 2011 မႃးသေ လႆႈဢဝ် [[တပ်ႉမတေႃႇ]] ၼႆႉ ဝႆႉတႂ်ႈမိုဝ်း [[လုမ်းၸွမ်ပွင်ၵၢၼ်သိုၵ်း]] ၵမ်းသိုဝ်ႈသေ ဢၼ်ပဵၼ် ထၢၼ်ၽွင်းလူင် ၵၢၼ်ၵႅတ်ႇၵင်ႈၼႆႉ လႆႈၸတ်းၵၢၼ် လွင်ႈတပ်ႉ ဢၼ်ၵပ်းၵၢႆႇလူၺ်ႈတင်း လူင်ပွင်ၸိုင်ႈၼၼ်ႉယဝ်ႉ။ ၸွမ်းလူၺ်ႈလၵ်းမိူင်း 2008 သေ တပ်ႉမတေႃႇၼႆႉ မီးသုၼ်ႇၸတ်းၵၢၼ်လွတ်ႈလွတ်ႈလႅဝ်းလႅဝ်းသေတႃႉ တီႈတႂ်ႈမိုဝ်း [[ၶွင်ႇၸီႇၵၢၼ်ႁူမ်ႇလူမ်ႈ လႄႈ ၵၢၼ်ၵႅတ်ႇၵင်ႈ ၸိူဝ်ႉၸၢတ်ႈ]] ဢၼ် ၶဝ်ႈပႃး 11 ၵေႃႉ ဢၼ် [[ၸွမ်ၸိုင်ႈမိူင်း မိူင်းမျၢၼ်ႇမႃႇ|ၸဝ်ႈၸွမ်ၸိုင်ႈ]] ဢွၼ်ႁူဝ်ၼၼ်ႉတႄႉ လႆႈႁပ်ႉဢဝ် လွင်ႈၵုမ်းၵမ်ယူႇ။ == တႃႇလဵပ်ႈႁဵၼ်းတၢင်ႇၸိူဝ်း == * [[လုမ်းၸွမ်ပွင်ၵၢၼ်သိုၵ်းတပ်ႉမတေႃႇ]] ==ၽိုၼ်ဢိင်== {{Reflist}} [[ပိူင်ထၢၼ်ႈ:ထၢၼ်ၽွင်းလူင် ၶွင် မိူင်းမျၢၼ်ႇမႃႇ]] aslsya7jpfd596bf9n5kfo6294d825t မေႃႇၵျူး:Routemap 828 24328 126480 49976 2026-06-13T11:59:23Z Saimawnkham 5 126480 Scribunto text/plain local i18n = { errors = { ["parameter-missing"] = "Missing parameter!", ["collapsible-block-not-closed"] = "Collapsible section not closed properly!", ["collapsible-block-not-open"] = "Missing start-Collapsible markup!", ["collapsible-block-empty"] = "Collapsible section must not be empty!", ["collapsible-block-no-first-row"] = "Invalid first row of collapsible section!", ["collapsible-block-no-replacement"] = "Invalid collapsible replacement row!", ["colspan-less-rows-than-set"] = "Invalid colspan set!", }, ["error-categories"] = { default = '[[Category:Pages with errors of Module Routemap]]', ["text-images"] = '[[Category:Pages using Routemap with text images]]', ["separate-navbar"] = '[[Category:Pages using Routemap with a separate navbar template]]', ["missing-text-values"] = '[[Category:Pages using BSto or BSsrws with missing text values]]', ["br-tags"] = '[[Category:Pages using BSto, BSsplit, BSsrws or BScvt with br tags]]', ["srws"] = '[[Category:Pages using BSsplit instead of BSsrws]]', ["rmr-error"] = '[[Category:Pages with bad value for RoutemapRoute template]]' }, text = { navbar_mini = false, -- for navbar pos 2 only navbar_text = 'This diagram:', -- for navbar pos 2 only legend_text = 'Legend', legend = { default = '[[Template:Railway line legend', track = '[[Template:Railway track legend', bus = '[[Template:Bus route legend', canal = '[[Template:Waterways legend', water = '[[Template:Waterways legend', waterway = '[[Template:Waterways legend', foot = '[[Template:Trails legend', footpath = '[[Template:Trails legend', walkway = '[[Template:Trails legend' } }, html = { ["cell-icon-fmt"] = '<div style="%s">[[File:BSicon_%s.svg|x20px|link=%s|alt=|%s]]%s</div>', ["cell-overlapicon-fmt"] = '<div class="RMic" style="%s">[[File:BSicon_%s.svg|x20px|link=%s|alt=|%s]]</div>', ["cell-icon-fmt-with-overlap"] = '<div style="%s"><div class="RMov">%s</div><div%s>[[File:BSicon_%s.svg|x20px|link=|alt=|%s]]%s</div></div>', ["cell-text-fmt"] = '<div class="RMtx RM%s" style="%s"><div%s style="%s" title="%s">%s%s%s%s%s%s</div></div>', ["cell-overlaptext-fmt"] = '<div class="RMtx RM%s" style="%s"><div%s style="%s" title="%s">%s%s%s%s%s</div></div>', ["cell-text-fmt-with-overlap"] = '<div class="RM%s" style="%s"><div class="RMov">%s</div><div class="RMtx RM%s" style="%s"><div%s style="%s" title="%s">%s%s%s%s%s%s</div></div></div>', ["cell-empty-fmt"] = '<div class="RM%s" style="%s">%s</div>', ["cell-empty-fmt-with-overlap"] = '<div style="%s"><div class="RMov">%s</div><div class="RMsp RM%s" style="%s">%s</div></div>', ["cell-filler-fmt"] = '<div class="RMf_" style="%s"><div class="RMfm" style="background:%s"></div></div>', ["cell-filler-empty-fmt"] = '<div class="RMf_ RM%s" style="%s"></div>', ["row-linfo4-fmt"] = '\ |class="RMl4" style="%s"|<div class="RMsi">%s</div>',-- parameters:linfo4-width, linfo4 ["row-linfo3-fmt"] = '<div class="RMsi">%s</div> ', ["row-rinfo3-fmt"] = ' <div class="RMsi">%s</div>', ["row-rinfo4-fmt"] = '\ |class="RMr4" style="%s"|<div class="RMsi">%s</div>',-- parameters:rinfo4-width, rinfo4 ["row-general-fmt"] = '\ |- %s\ |class="RMl" colspan="%s" style="%s"|%s\ |%s style="%s"|<div class="RMsi">%s</div>\ |class="RMir" style="%s"|%s\ |%s style="%s"|<div class="RMsi">%s</div>\ |class="RMr" colspan="%s" style="%s"|%s%s',-- parameters: linfo4-fmt, colspan-left, linfo3+2-width, linfo3+2, linfo1-pad, linfo1-width, linfo1, bg, cells, rinfo1-pad, rinfo1-width, rinfo1, colspan-right, rinfo2+3-width, rinfo2+3, rinfo4-fmt ["row-collapsible-begin-fmt"] = '\ |- style="line-height:1"\ |colspan="7" style="padding:0 !important;background:%s"|\ {|class="RMcollapse %s%s" style="%s"',-- parameters: bg, "collapsible "/"mw-collapsible mw-", collapse-state, "float:right" / "" ["row-collapsible-end-fmt"] = '\n|}', ["row-collapsible-left-button-width"] = '45px',-- 50px is the minimal width for [показать] / [скрыть] button. Use 40px for [show] / [hide] ["row-collapsible-left-button-fmt"] = '\n! style="padding-right:3px;min-width:%s;%s" |',--parameters: left-button-width, linfo4-width ["row-collapsible-left-linfo4+3+2-fmt"] = '\ {|cellspacing="0" cellpadding="0" style="line-height:1;width:100%%;padding:0 !important;margin:0 !important"\ |style="padding:0 3px 0 1px;text-align:left"|<div class="RMsi">%s</div>\ |style="text-align:right"| %s\ |}',-- parameters: linfo4, linfo3+2 ["row-collapsible-right-button-width"] = '45px',-- 72px is the minimal width for [развернуть] / [свернуть] button at 90%. Use 58px for [expand] / [collapse] ["row-collapsible-right-rinfo2+3+4-fmt"] = '\ {|cellspacing="0" cellpadding="0" style="line-height:1;width:100%%;padding:0 !important;margin:0 !important"\ |style="text-align:left"| %s\ |style="padding:0 1px 0 3px;text-align:right"|<div class="RMsi">%s</div>\ |}',-- parameters: rinfo2+3, linfo4 ["row-collapsible-right-button-fmt"] = '\n| style="padding-left:3px;font-size:90%%;min-width:%s;%s" |',--parameters: right-button-width, rinfo4-width ["row-collapsible-replace-begin-fmt"] = '\ |- style="line-height:1"\ |colspan="7" style="padding:0 %s"|<div style="position:relative">\ {| class="RMreplace" style="%sbackground:%s"',-- parameters: "right-button-width 0 0" / "0 0 left-button-width", "right:0px" / "", bg ["row-collapsible-replace-end-fmt"] = '\n|}</div>', ["colspan-fmt"] = '%s\n|-\n| colspan="7" style="background:%s;text-align:%s;%s"|\n%s', ["empty-row-fmt"] = '\n|-\n|style="padding:0 3px 0 0;%s"|\n|style="%s"|\n|%s style="%s"|\n|\n|%s style="%s"|\n|style="%s"|\n|style="padding:0 0 0 3px;%s"|' } } local p,q={},{} local getArgs = require('Module:Arguments').getArgs local function makeInvokeFunction(funcName) -- makes a function that can be returned from #invoke, using -- [[Module:Arguments]]. return function (frame) local args = getArgs(frame, {parentOnly = true}) return p[funcName](args) end end local function formaterror(key,param) local result = string.format(i18n.html['colspan-fmt'], '', '', '', '', '<span class="error">' .. string.format(i18n.errors[key] or (tostring(key) .. ' %s'), tostring(param or '')) .. '</span>') if mw.site.namespaces[mw.title.getCurrentTitle().namespace].isContent then result = result .. (i18n['error-categories'][key] or i18n['error-categories'].default or '') end return result end local function RGBbyCode(code)-- RGB codes for BSicon sets at Commons:Category:Icons for railway descriptions/other colors local colors = {-- Any changes should be discussed at Commons:Talk:BSicon/Colors bahn = 'BE2D2C', ex = 'D77F7E', u = '003399', uex = '6281C0', f = '008000', fex = '64B164', g = '2CA05A', gex = '7EC49A', azure = '3399FF', ex_azure = '99CCFF', black = '000000', ex_black = '646464', blue = '0078BE', ex_blue = '64ACD6', brown = '8D5B2D', ex_brown = 'B89A7F', carrot = 'ED9121', ex_carrot = 'F1BA76', excarrot = 'F1BA76', ex_excarrot = 'F3D2A9', cerulean = '1A8BB9', ex_cerulean = '73B7D3', cyan = '40E0D0', ex_cyan = '8AEAE1', deepsky = '00BFFF', ex_deepsky = '7FDFFF', denim = '00619F', ex_denim = '649EC3', fuchsia = 'B5198D', ex_fuchsia = 'D173B8', golden = 'D7C447', ex_golden = 'E5DA8E', green = '2DBE2C', ex_green = '7FD67E', grey = '999999', ex_grey = 'C0C0C0', jade = '53B147', ex_jade = '95CE8E', lavender = '9999FF', ex_lavender = 'C0C0FF', lime = '99CC00', ex_lime = 'D1E681', maroon = '800000', ex_maroon = 'B16464', ochre = 'CC6600', ex_ochre = 'DEA164', olive = '837902', ex_olive = 'B2AC64', orange = 'FF6600', ex_orange = 'FF9955', pink = 'F0668D', ex_pink = 'F4A1B8', purple = '8171AC', ex_purple = 'B1A8CB', red = 'EF161E', ex_red = 'F37176', ruby = 'CC0066', ex_ruby = 'DE64A1', exruby = 'DE64A1', ex_exruby = 'E89FC4', saffron = 'FFAB2E', ex_saffron = 'FFC969', sky = '069DD3', ex_sky = '67C2E3', steel = 'A1B3D4', ex_steel = 'C4CFE3', teal = '339999', ex_teal = '82C0C0', exteal = '82C0C0', ex_exteal = 'B1D6D6', violet = '800080', ex_violet = 'B164B1', yellow = 'FFD702', ex_yellow = 'FFEB81', } return colors[code] or colors.bahn end p.RGBbyCode = makeInvokeFunction('_RGBbyCode') function p._RGBbyCode(args) return RGBbyCode(args[1]) end local function properties(str) --str is a combination of properties with following syntax: --property name=value,property name1=value1,property name2=value2 and so on local result = {} for i, v in ipairs(mw.text.split(str, ',')) do if v then local t = mw.text.split(v, '=') if string.find(v, '=') then t[1] = mw.text.trim(t[1]) --trim parameter names table.insert(result, t[1]) result[t[1]] = t[2] or '' --fill table with pairs "property"="value" elseif result[result[i - 1]] then table.insert(result, result[i - 1]) result[result[i]] = result[result[i]]..','..t[1] --if no equals sign then tack t[1] onto the previous result else table.insert(result, '~~') end else table.insert(result, '~~') end end return result end local function positive(x) if not x then return nil else x = string.lower(x) end if x == 'yes' or x == 'y' or x == '1' or x == 'true' then return 1 end end local function negative(x) if not x then return nil else x = string.lower(x) end if x == 'no' or x == 'n' or x == '0' or x == 'false' then return 0 end end local function alignment(x, y, z) if not x then return nil end local directions = { ['inherit-left'] = {'l', 'left',}, ['inherit-right'] = {'r', 'right',}, ['top-inherit'] = {'a', 't', 'top',}, ['bottom-inherit'] = {'e', 'b', 'bottom',}, ['top-left'] = {'la', 'tl', 'c4', 'nw', 'top-left', 'topleft',}, ['top-right'] = {'ra', 'tr', 'c1', 'ne', 'top-right', 'topright',}, ['bottom-left'] = {'le', 'bl', 'c3', 'sw', 'bottom-left', 'bottomleft',}, ['bottom-right'] = {'re', 'br', 'c2', 'se', 'bottom-right', 'bottomright',}, ['inherit-center'] = {'c', 'center', 'centre',}, ['middle-inherit'] = {'m', 'middle',}, ['top-center'] = {'ma', 'tc', 'top-center', 'top-centre', 'topcenter', 'topcentre',}, ['bottom-center'] = {'me', 'bc', 'bottom-center', 'bottom-centre', 'bottomcenter', 'bottomcentre',}, ['middle-left'] = {'lm', 'ml', 'middle-left', 'middleleft',}, ['middle-right'] = {'rm', 'mr', 'middle-right', 'middleright',}, ['middle-center'] = {'cm', 'mc', 'middle-center', 'middle-centre', 'middlecenter', 'middlecentre',}, } for k, v in pairs(directions) do for _, name in ipairs(v) do if x:lower() == name then local values = mw.text.split(k, '-') if values[1] == 'inherit' then values[1] = y end if values[2] == 'inherit' then values[2] = z end return values end end end return {y, z} end local function cell(icon,overlapIcons,rowProps)--[[ Icon handling. Each icon is defined as in the following example: icon ID!~overlap icon ID!@image link target Values for an icon ID containing "*" are treated as text, with the letter(s) before "*" as width prefix(es). No limit on overlapping icons or text; just separate them by "!~". Parameters can be added after every object, separated to the left by "!_". This, if there is a link, must be after the link. Parameters for individual objects in an overlapping stack can also be added, separated to the left by "__". Unless a link is provided, each cell will have mouseover text indicating its contents. ]] local tmp, tmp2, cellProps, iconProps, overlapProps, tmp_sep, link, tracking, icontext, iconpre = {}, {}, {}, {}, {}, '', '', '' if #overlapIcons > 0 then tmp = mw.text.split(overlapIcons[#overlapIcons], '!_') if #tmp > 1 then overlapIcons[#overlapIcons], cellProps = tmp[1], properties(tmp[2]) end tmp = mw.text.split(overlapIcons[#overlapIcons], '!@') overlapIcons[#overlapIcons] = tmp[1] if #tmp > 1 then link = tmp[2] end tmp = mw.text.split(icon, '__') icon = tmp[1] if #tmp > 1 then iconProps = properties(tmp[2]) end for i, v in ipairs(overlapIcons) do tmp = mw.text.split(v, '__') overlapIcons[i] = mw.text.trim(tmp[1]) if #tmp > 1 then overlapProps[i] = properties(tmp[2]) else overlapProps[i] = {} end end else tmp = mw.text.split(icon, '[!_]_') if #tmp > 1 then icon, cellProps = tmp[1], properties(tmp[2]) end tmp = mw.text.split(icon, '!@') icon = mw.text.trim(tmp[1]) if #tmp > 1 then link = tmp[2] end end if #overlapIcons > 0 and icon ~= '' then tmp_sep = '; ' end local icontip = mw.text.nowiki(mw.text.unstripNoWiki(icon..tmp_sep..table.concat(overlapIcons, '; '))) local textspl = string.find(icon, '%*') if textspl then icontext = mw.text.trim(mw.ustring.sub(icon, textspl + 1)) if textspl ~= 1 then iconpre = mw.text.trim(mw.ustring.sub(icon, 1, textspl - 1)) end end cellProps.class = '' if cellProps.style then cellProps.style = ';'..cellProps.style else cellProps.style = '' end cellProps.bg = cellProps.bg or cellProps.background or cellProps.bgcolor if cellProps.bg then cellProps.style = cellProps.style..';background:'..cellProps.bg end if #overlapIcons > 0 or icontext then cellProps._before, cellProps._after = rowProps._before or '', rowProps._after or '' cellProps.color = cellProps.color or cellProps.colour ; cellProps.bold = cellProps.bold or cellProps.b ; cellProps.italic = cellProps.italic or cellProps.i or cellProps.it if cellProps.color then cellProps.style = cellProps.style..';color:'..cellProps.color end if positive(cellProps.italic) then cellProps.style = cellProps.style..';font-style:italic' end if positive(cellProps.bold) then cellProps.style = cellProps.style..';font-weight:bold' end if not cellProps.fontsize or rowProps.fontsize or cellProps.fontsize == 'info' then elseif cellProps.fontsize == 'cmt' or cellProps.fontsize == 'comment' then cellProps._before, cellProps._after = '<div class="RMsi">', '</div>' else cellProps.style = cellProps.style..';font-size:'..cellProps.fontsize end if cellProps.align or rowProps.align then rowProps.align = rowProps.align or {'middle', 'center'} cellProps.align = alignment(cellProps.align, rowProps.align[1], rowProps.align[2]) or rowProps.align cellProps.style, cellProps.textfmt = cellProps.style..';text-align:'..cellProps.align[2], ';vertical-align:'..cellProps.align[1] else cellProps.textfmt = '' end end if #overlapIcons > 0 then tmp = {} for i, v in ipairs(overlapIcons) do local thislink = link if i ~= #overlapIcons then thislink = '' end if thislink and thislink ~= '' then icontip = thislink end if overlapProps[i].style then overlapProps.style = ';'..overlapProps[i].style else overlapProps.style = '' end overlapProps[i].bg = overlapProps[i].bg or overlapProps[i].background or overlapProps[i].bgcolor if overlapProps[i].bg then overlapProps.style = overlapProps.style..';background:'..overlapProps[i].bg end local tmp_textspl = string.find(v, '%*') if tmp_textspl then overlapProps.class = '' local tmp_icontext, tmp_iconpre = mw.text.trim(mw.ustring.sub(v, tmp_textspl + 1)), '' if tmp_textspl ~= 1 then tmp_iconpre = mw.text.trim(mw.ustring.sub(v, 1, tmp_textspl - 1)) end overlapProps._before, overlapProps._after = cellProps._before, cellProps._after overlapProps[i].color = overlapProps[i].color or overlapProps[i].colour ; overlapProps[i].bold = overlapProps[i].bold or overlapProps[i].b ; overlapProps[i].italic = overlapProps[i].italic or overlapProps[i].i or overlapProps[i].it if overlapProps[i].color then overlapProps.style = overlapProps.style..';color:'..overlapProps[i].color end if positive(overlapProps[i].italic) then overlapProps.style = overlapProps.style..';font-style:italic' end if positive(overlapProps[i].bold) then overlapProps.style = overlapProps.style..';font-weight:bold' end if rowProps.fontsize or cellProps.fontsize or overlapProps[i].fontsize == 'info' then elseif not overlapProps[i].fontsize then overlapProps.class = ' class="RMts"' elseif overlapProps[i].fontsize == 'cmt' or overlapProps[i].fontsize == 'comment' then overlapProps._before, overlapProps._after = '<div class="RMsi">', '</div>' else overlapProps.style = overlapProps.style..';font-size:'..overlapProps[i].fontsize end if overlapProps[i].align or cellProps.align then cellProps.align = cellProps.align or {'middle', 'center'} overlapProps.align = alignment(overlapProps[i].align, cellProps.align[1], cellProps.align[2]) or cellProps.align overlapProps.style, overlapProps.textfmt = overlapProps.style..';text-align:'..overlapProps.align[2], ';vertical-align:'..overlapProps.align[1] else overlapProps.style, overlapProps.textfmt = overlapProps.style..';text-align:center', ';vertical-align:middle' end if overlapProps[i].abbr then overlapProps.tag = {'<abbr title="'..string.gsub(overlapProps[i].abbr, '"', '&quot;')..'">', '</abbr>'} else overlapProps.tag = {'', ''} end table.insert(tmp, string.format(i18n.html['cell-overlaptext-fmt'], (tmp_iconpre and tmp_iconpre ~= '' and tmp_iconpre or '_'), overlapProps.style, overlapProps.class, overlapProps.textfmt, icontip, overlapProps.tag[1], overlapProps._before, tmp_icontext, overlapProps._after, overlapProps.tag[2])) else v = mw.text.trim(v) if string.find(v, 'num') then if not string.find(v, 'numN%d+') then tracking = tracking..(i18n['error-categories']['text-images'] or i18n['error-categories'].default) end end table.insert(tmp, string.format(i18n.html['cell-overlapicon-fmt'], overlapProps.style, v, thislink, icontip)) end end if iconProps.style then tmp2[1] = true else iconProps.style = '' end iconProps.bg = iconProps.bg or iconProps.background or iconProps.bgcolor if iconProps.bg then iconProps.style = iconProps.style..';background:'..iconProps.bg end if string.match(icon, '^[%+_]?o?c?d?b?s?w?$') then if tmp2[1] then iconProps.style = ';'..iconProps.style end return string.format(i18n.html['cell-empty-fmt-with-overlap'], cellProps.style, mw.text.trim(table.concat(tmp)), (string.match(icon, '^.+$') or '_'), iconProps.style, tracking) elseif icontext then iconProps.class = '' iconProps._before, iconProps._after = cellProps._before, cellProps._after iconProps.color = iconProps.color or iconProps.colour ; iconProps.bold = iconProps.bold or iconProps.b ; iconProps.italic = iconProps.italic or iconProps.i or iconProps.it if iconProps.color then iconProps.style = iconProps.style..';color:'..iconProps.color end if positive(iconProps.italic) then iconProps.style = iconProps.style..';font-style:italic' end if positive(iconProps.bold) then iconProps.style = iconProps.style..';font-weight:bold' end if rowProps.fontsize or cellProps.fontsize or iconProps.fontsize == 'info' then elseif not iconProps.fontsize then iconProps.class = ' class="RMts"' elseif iconProps.fontsize == 'cmt' or iconProps.fontsize == 'comment' then iconProps._before, iconProps._after = '<div class="RMsi">', '</div>' else iconProps.style = iconProps.style..';font-size:'..iconProps.fontsize end if iconProps.align or cellProps.align then cellProps.align = cellProps.align or {'middle', 'center'} iconProps.align = alignment(iconProps.align, cellProps.align[1], cellProps.align[2]) or cellProps.align iconProps.style, iconProps.textfmt = iconProps.style..';text-align:'..iconProps.align[2], ';vertical-align:'..iconProps.align[1] else iconProps.style, iconProps.textfmt = iconProps.style..';text-align:center', ';vertical-align:middle' end if iconProps.abbr then iconProps.tag = {'<abbr title="'..string.gsub(iconProps.abbr, '"', '&quot;')..'">', '</abbr>'} else iconProps.tag = {'', ''} end if tmp2[1] then iconProps.style = ';'..iconProps.style end return string.format(i18n.html['cell-text-fmt-with-overlap'], (iconpre and iconpre ~= '' and iconpre or '_'), cellProps.style, mw.text.trim(table.concat(tmp)), (iconpre and iconpre ~= '' and iconpre or '_'), iconProps.style, iconProps.class, iconProps.textfmt, icontip, iconProps.tag[1], iconProps._before, icontext, iconProps._after, tracking, iconProps.tag[2]) else if iconProps.style ~= '' then iconProps.style = string.gsub(' style="'..iconProps.style..'"', '";', '"', 1) end if string.find(icon, 'num') then if not string.find(icon, 'numN%d+') then tracking = tracking..(i18n['error-categories']['text-images'] or i18n['error-categories'].default) end end return string.format(i18n.html['cell-icon-fmt-with-overlap'], cellProps.style, mw.text.trim(table.concat(tmp)), iconProps.style, icon, icontip, tracking) end end if string.match(icon, '^[%+_]?o?c?d?b?s?w?$') then return string.format(i18n.html['cell-empty-fmt'], (string.match(icon, '^.+$') or '_'), cellProps.style, tracking) else if link and link ~= '' then icontip = link end if icontext then if not cellProps.fontsize and not rowProps.fontsize then cellProps.class = ' class="RMts"' end if cellProps.abbr then cellProps.tag = {'<abbr title="'..string.gsub(cellProps.abbr, '"', '&quot;>')..'">', '</abbr>'} else cellProps.tag = {'', ''} end return string.format(i18n.html['cell-text-fmt'], (iconpre and iconpre ~= '' and iconpre or '_'), cellProps.style, cellProps.class, cellProps.textfmt, icontip, cellProps.tag[1], cellProps._before, icontext, cellProps._after, tracking, cellProps.tag[2]) else if string.find(icon, 'num') then if not string.find(icon, 'numN%d+') then tracking = tracking..(i18n['error-categories']['text-images'] or i18n['error-categories'].default) end end return string.format(i18n.html['cell-icon-fmt'], cellProps.style, icon, link, icontip, tracking) end end end local function fillercell(code, height) --Creates a 5px-high row. --Values in icon pattern can only be [blank], d, [BSicon color] or #[hex triplet]. height = mw.text.trim(height) if height ~= '' then if tonumber(height) then height = height..'px' end height = 'height:'..height..';min-height:'..height end if string.match(code, '^[%+_]?o?c?d?b?s?w?$') then return string.format(i18n.html['cell-filler-empty-fmt'], (string.match(code, '^.+$') or '_'), height) elseif mw.ustring.sub(code,1,1) == '#' then return string.format(i18n.html['cell-filler-fmt'], height, code) else return string.format(i18n.html['cell-filler-fmt'], height, '#'..RGBbyCode(code)) end end local function row(pattern,noformatting,filler)--[[ Row handling. Each row looks like the following: row properties~~linfo4~~linfo3~~linfo2~~linfo1! !(icon pattern)~~rinfo1~~rinfo2~~rinfo3~~rinfo4~~row properties ]] local result = {['linfo4'] = '', ['linfo3+2'] = '', ['linfo1'] = '', rowstyle = '', ['cells'] = {}, ['rinfo1'] = '', ['rinfo2+3'] = '', ['rinfo4'] = '', ['rowProp'] = {}} local lcolspan, rcolspan, linfo4_fmt, rinfo4_fmt = '2', '2', '', '' local left, right, icons, overlapIcons, tmp = {}, {}, {}, {}, mw.text.split(pattern, '! !') if #tmp > 1 then--splitting the pattern by '! !' left = tmp[1] ; right = tmp[2] else left = '' ; right = tmp[1] or '' end tmp = mw.text.split(left, '~~')--analysing the left part if #tmp > 1 then--if there are several ~~ result['linfo1'] = mw.getCurrentFrame():preprocess(mw.text.trim(tmp[#tmp])) result['linfo3+2'] = mw.text.trim(tmp[#tmp - 1]) if #tmp > 2 then tmp[#tmp - 2] = mw.text.trim(tmp[#tmp - 2]) if tmp[#tmp - 2] ~= '' then result['linfo3+2'] = string.format(i18n.html['row-linfo3-fmt'], tmp[#tmp - 2]) .. result['linfo3+2'] end if #tmp > 3 then tmp[#tmp - 3] = mw.text.trim(tmp[#tmp - 3]) if tmp[#tmp - 3] ~= '' then result['linfo4'] = mw.getCurrentFrame():preprocess(tmp[#tmp - 3]) lcolspan = '1' linfo4_fmt = string.format(i18n.html['row-linfo4-fmt'], '', result['linfo4']) end if #tmp > 4 then result.rowProp = properties(mw.text.trim(tmp[#tmp - 4])) end end end else--assume only linfo2 was provided. result['linfo3+2'] = mw.text.trim(tmp[1]) end result['linfo3+2'] = mw.getCurrentFrame():preprocess(result['linfo3+2'])--expand possible templates in info. tmp = mw.text.split(right, '~~')--analysing the right part if #tmp > 2 then result['rinfo1'] = mw.getCurrentFrame():preprocess(mw.text.trim(tmp[2])) result['rinfo2+3'] = mw.text.trim(tmp[3]) if #tmp > 3 then tmp[4] = mw.text.trim(tmp[4]) if tmp[4] ~= '' then result['rinfo2+3'] = result['rinfo2+3'] .. string.format(i18n.html['row-rinfo3-fmt'], tmp[4]) end if #tmp > 4 then tmp[5] = mw.text.trim(tmp[5]) if tmp[5] ~= '' then result['rinfo4'] = mw.getCurrentFrame():preprocess(tmp[5]) rcolspan = '1' rinfo4_fmt = string.format(i18n.html['row-rinfo4-fmt'], '', result['rinfo4']) end if #tmp > 5 then result.rowProp = properties(mw.text.trim(tmp[6])) end end end else--assume only rinfo2 was provided. result['rinfo2+3'] = mw.text.trim(tmp[2] or '') end result['rinfo2+3'] = mw.getCurrentFrame():preprocess(result['rinfo2+3']) -- The below parameter functions are passed through to the cells. if result.rowProp.fontsize == 'cmt' or result.rowProp.fontsize == 'comment' then result.rowProp._before, result.rowProp._after = '<div class="RMsi">', '</div>' end if result.rowProp.align then result.rowProp.align = alignment(result.rowProp.align, 'middle', 'center') or {'middle', 'center'} end icons = mw.text.split(tmp[1], '\\')--splitting the string of icons first by "\" if type(filler) == 'string' then result.style = ';font-size:0px' for i, v in ipairs(icons) do table.insert(result['cells'], fillercell(v, filler)) end--no !@ or !~ for filler row else result.style = '' for i, v in ipairs(icons) do tmp = mw.text.split(v, '!~') icons[i] = tmp[1] table.remove(tmp, 1) table.insert(overlapIcons, tmp) end for i, v in ipairs(icons) do table.insert(result['cells'], cell(v, overlapIcons[i], result.rowProp)) end end result['cells'] = table.concat(result['cells']) if result.rowProp.style then result.style = result.style..';'..result.rowProp.style end result.rowProp.bg = result.rowProp.bg or result.rowProp.background or result.rowProp.bgcolor ; result.rowProp.color = result.rowProp.color or result.rowProp.colour ; result.rowProp.bold = result.rowProp.bold or result.rowProp.b ; result.rowProp.italic = result.rowProp.italic or result.rowProp.i or result.rowProp.it if result.rowProp.bg then result.style = result.style..';background:'..result.rowProp.bg end if result.rowProp.color then result.style = result.style..';color:'..result.rowProp.color end if positive(result.rowProp.italic) then result.style = result.style..';font-style:italic' end if positive(result.rowProp.bold) then result.style = result.style..';font-weight:bold' end if result.rowProp.fontsize and result.rowProp._after == '' and result.rowProp.fontsize ~= 'info' then result.style = result.style..';font-size:'..result.rowProp.fontsize end if noformatting then return result else return string.format(i18n.html['row-general-fmt'], linfo4_fmt, lcolspan, '', result['linfo3+2'], q.linfo1_pad, '', result['linfo1'], result.style, result['cells'], q.rinfo1_pad, '', result['rinfo1'], rcolspan, '', result['rinfo2+3'], rinfo4_fmt) end end --↓ This table handles diagram rows beginning with a hyphen ("-"). q = {collapsibles = -1, text_width = {'', '', '', '', '', ''}, linfo1_pad = 'class="RMl1"', rinfo1_pad = 'class="RMr1"', bg = '#F9F9F9'} q.isKeyword = function(pattern, i, rows, justTest) if mw.ustring.sub(pattern, 1, 1) ~= '-' then if justTest then return false else return nil end end--not a valid keyword local tmp = mw.text.split(string.sub(pattern, 2), '%-') if type(q[tmp[1]])=="function" and tmp[1] ~= 'isKeyword' then if justTest then return tmp[1] else return q[tmp[1]](tmp, i, rows) end--valid keyword else if justTest then return false else return nil end end end q['startCollapsible'] = function(params, i, rows) table.remove(rows, i) local tmp = q.isKeyword(rows[i], i, rows, true) if tmp then if tmp == 'endCollapsible' then return formaterror('collapsible-block-empty') else return formaterror('collapsible-block-no-first-row') .. q.isKeyword(rows[i], i, rows) --no valid keywords that can follow "startCollapsible" end end if q.collapsibles == -1 then q.collapsibles = 1 else q.collapsibles = q.collapsibles + 1 end--q.collapsibles == -1 means there are no collapsibles at all; 0 - all closed; >0 - some not closed local collapsed, replace, props = params[2], params[3] or '', properties(table.concat(params, '-', 4))--params[1] is the keyword name so all indices are shifted by one. if collapsed == nil or collapsed == '' then collapsed = 'collapsed' end if props.bg == nil or props.bg == '' then props.bg = 'transparent' ; props['bg-replace'] = q.bg else props['bg-replace'] = props.bg end local mode, float, result if q.rinfo1_pad == '' then mode = 'collapsible ' ; float = 'float:right;' else mode = 'mw-collapsible mw-' ; float = '' end result = string.format(i18n.html["row-collapsible-begin-fmt"], props.bg, mode, collapsed, float) tmp = row(rows[i], true, nil) local linfo4_3_2_fmt, rinfo2_3_4_fmt = '', '' if q.rinfo1_pad == '' then if tmp['linfo4'] ~= '' or tmp['linfo3+2'] ~= '' then linfo4_3_2_fmt = string.format(i18n.html['row-collapsible-left-linfo4+3+2-fmt'], tmp['linfo4'], tmp['linfo3+2']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-collapsible-left-button-fmt'], i18n.html['row-collapsible-left-button-width'], q.text_width[1]), '1', q.text_width[2], linfo4_3_2_fmt, q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], '', '', '', '1', '', '', string.format(i18n.html['row-rinfo4-fmt'], '', '')) else if tmp['rinfo4'] ~= '' or tmp['rinfo2+3'] ~= '' then rinfo2_3_4_fmt = string.format(i18n.html['row-collapsible-right-rinfo2+3+4-fmt'], tmp['rinfo2+3'], tmp['rinfo4']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-linfo4-fmt'], q.text_width[1], tmp['linfo4']), '1', q.text_width[2], tmp['linfo3+2'], q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], q.rinfo1_pad, q.text_width[4], tmp['rinfo1'], '1', q.text_width[5], rinfo2_3_4_fmt, string.format(i18n.html['row-collapsible-right-button-fmt'], i18n.html['row-collapsible-right-button-width'], q.text_width[6])) end if replace ~= '' then if q.isKeyword(rows[i + 1], i, rows, true) then return result .. formaterror('collapsible-block-no-replacement') end--a plain row needed for replacement table.remove(rows, i) tmp = row(rows[i], true, nil) local padding, right = i18n.html['row-collapsible-right-button-width'] .. ' 0 0', '' if q.rinfo1_pad == '' then padding = '0 0 ' .. i18n.html['row-collapsible-left-button-width'] ; right = 'right:0px;' end result = result .. string.format(i18n.html['row-collapsible-replace-begin-fmt'], padding, right, props['bg-replace']) linfo4_3_2_fmt = '' ; rinfo2_3_4_fmt = '' if q.rinfo1_pad == '' then if tmp['linfo4'] ~= '' or tmp['linfo3+2'] ~= '' then linfo4_3_2_fmt = string.format(i18n.html['row-collapsible-left-linfo4+3+2-fmt'], tmp['linfo4'], tmp['linfo3+2']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-linfo4-fmt'], '', ''), '1', q.text_width[2], linfo4_3_2_fmt, q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], '', '', '', '1', '', '', string.format(i18n.html['row-rinfo4-fmt'], '', '')) else if tmp['rinfo4'] ~= '' or tmp['rinfo2+3'] ~= '' then rinfo2_3_4_fmt = string.format(i18n.html['row-collapsible-right-rinfo2+3+4-fmt'], tmp['rinfo2+3'], tmp['rinfo4']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-linfo4-fmt'], q.text_width[1], tmp['linfo4']), '1', q.text_width[2], tmp['linfo3+2'], q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], q.rinfo1_pad, q.text_width[4], tmp['rinfo1'], '1', q.text_width[5], rinfo2_3_4_fmt, string.format(i18n.html['row-rinfo4-fmt'], '', '')) end result = result .. i18n.html['row-collapsible-replace-end-fmt'] end return result end q['endCollapsible'] = function(params, i, rows) if q.collapsibles > 0 then q.collapsibles = q.collapsibles - 1 return i18n.html['row-collapsible-end-fmt'] else return formaterror('collapsible-block-not-open') end end q['colspan'] = function(params, i, rows) if params[2] == 'end' then return '' end local tmp, j, nrows, props = {}, 0, tonumber(params[2]), properties(table.concat(params, '-', 3)) if nrows ~= 0 then table.remove(rows, i) end if nrows == nil then nrows = #rows - i + 1 end while j < nrows and i <= #rows do j = j + 1 if rows[i] == '-colspan-end' then j = nrows else table.insert(tmp, rows[i]) end if nrows ~= j or i == #rows then table.remove(rows, i) end end if j < nrows then j = formaterror('colspan-less-rows-than-set',j) else j = '' end return string.format(i18n.html['colspan-fmt'], j, props.bg or '', props.align or '', props['style'] or '', mw.getCurrentFrame():preprocess(table.concat(tmp, '\n'))) end q['filler'] = function(params, i, rows) local tmp, height = table.concat(params, '-', 3), (params[2] or '') if #params < 3 or tmp == '' then return formaterror('parameter-missing') end--TODO: specify the name of the parameter if params[2] ~= '' then height = params[2] end return row(tmp, nil, height) end function p.RGBbyCode(frame) return RGBbyCode(mw.text.trim(frame.args[1] or '')) end local function localroute(pattern,ptw,pbg,process) local tmp = {} if mw.text.trim(pbg) ~= '' then q.bg = pbg end tmp = mw.text.split(mw.text.trim(ptw), '%s*,%s*') if #tmp == 6 then for i = 1, 6 do if tmp[i] ~= '' then if tonumber(string.sub(tmp[i],-1)) then q.text_width[i] = 'width:' .. tmp[i] .. 'px;min-width:' .. tmp[i] .. 'px;' else q.text_width[i] = 'width:' .. tmp[i] .. ';min-width:' .. tmp[i] .. ';' end end end if tmp[4] == '' and tmp[5] == '' and tmp[6] == '' then q.rinfo1_pad = ''--padding for rinfo1 column = 0, not 3px elseif tmp[1] == '' and tmp[2] == '' and tmp[3] == '' then q.linfo1_pad = '' end--padding for linfo1 column = 0, not 3px elseif #tmp == 3 then for i = 1, 3 do if tmp[i] ~= '' then if tonumber(string.sub(tmp[i],-1)) then q.text_width[i + 3] = 'width:' .. tmp[i] .. 'px;min-width:' .. tmp[i] .. 'px;' else q.text_width[i + 3] = 'width:' .. tmp[i] .. ';min-width:' .. tmp[i] .. ';' end end end q.linfo1_pad = '' elseif #tmp == 1 and tmp[1] ~= '' then if tonumber(string.sub(tmp[1],-1)) then q.text_width[5] = 'width:' .. tmp[1] .. 'px;min-width:' .. tmp[1] .. 'px;' else q.text_width[5] = 'width:' .. tmp[1] .. ';min-width:' .. tmp[1] .. ';' end q.linfo1_pad = '' end for i = 1, 6 do tmp = tonumber(mw.ustring.match(q.text_width[i], ':([0-9]+%.?[0-9]*)px;')) if tmp then tmp = tmp*3/40 q.text_width[i] = 'width:' .. tmp .. 'em;min-width:' .. tmp .. 'em;' end end tmp = {} local index = 0 local rows = {} if not process or process == '' or negative(process) then pattern = mw.ustring.gsub(pattern, '\n(#[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])', '%1') end for item in pattern:gmatch('([^\n]*)\n?') do item = mw.text.trim(item) if item ~= '' then index = index + 1 rows[index] = item end end if index == 0 then return formaterror('parameter-missing') end for i, v in ipairs(rows) do local keyword = q.isKeyword(v, i, rows) if type(keyword) ~= "string" then table.insert(tmp, row(v, nil, nil)) else table.insert(tmp, keyword) end end if q.collapsibles > 0 then table.insert(tmp, formaterror('collapsible-block-not-closed') .. q['endCollapsible']()) end if q.collapsibles ~= -1 then if q.rinfo1_pad == '' then q.text_width[1] = q.text_width[1] .. 'min-width:' .. i18n.html['row-collapsible-left-button-width'] .. ';' else q.text_width[6] = q.text_width[6] .. 'min-width:' .. i18n.html['row-collapsible-right-button-width'] .. ';' end end -- ↓ empty row to set column widths; ↑ if q.collapsibles ≠ -1 and there are collapsible sections, leftmost or rightmost column should be wide enough to accomodate the button table.insert(tmp, string.format(i18n.html['empty-row-fmt'], q.text_width[1], q.text_width[2], q.linfo1_pad, q.text_width[3], q.rinfo1_pad, q.text_width[4], q.text_width[5], q.text_width[6])) return mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(table.concat(tmp), 'style=";* *', 'style="'), '\n| *style="" *|', '\n|'), ' ?style=""', ''), ' ?colspan="1"', ''), '<div class="RMsi"></div>', ''), 'class="RM%+', 'class="RM_'), '(class="[^"]* RM)%+', '%1_') end local function getArgNums(prefix, args) -- Copied from Module:Infobox on enwiki. -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix were 'data', and -- 'data1', 'data2', and 'data5' existed, this would return {1, 2, 5}. local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end local greatercontrast = require('Module:Color contrast')._greatercontrast local rgb_black = '#252525' -- class .mw-body in Mediawiki:Common.css p.infobox = makeInvokeFunction('_infobox') function p._infobox(args) -- Creates a pretty box. args.map1, args.tw, args['map1-title'], args['map1-collapsible'], args['map1-collapse'] = args.map1 or args.map, args.tw or args['text-width'] or args['text width'], args['map1-title'] or args['map-title'], args['map1-collapsible'] or args['map-collapsible'], args['map1-collapse'] or args['map1-collapsed'] or args['map-collapse'] or args['map-collapsed'] local function map_prefix(x) return 'map'..x end local mapnums, prefix = {} if args[1] and args[1] ~= '' then prefix = tonumber for k, v in pairs(args) do if type(k) == 'number' then table.insert(mapnums, k) end end else prefix = map_prefix mapnums = getArgNums('map', args) table.sort(mapnums) end local classes = {} args['title bg color'] = args['title bg color'] or args['title bg'] or args['title-bg'] or '#27404E' args['title color'] = args['title color'] or args['title-color'] or greatercontrast{args['title bg color'], '#FFF', rgb_black} args.legend = args.legend or '' local navbar = require('Module:Navbar').navbar local navtable = {} if args.navbar then navtable = {args.navbar, mini = i18n.text.navbar_mini, text = i18n.text.navbar_text} args.navbar = navbar(navtable) else args.navbar = '' end local result = '' if args.inline then result = result..'&#32;\n' end result = result..'{|' args.collapse = args.collapse or args.collapsed if args.inline or negative(args.collapsible) then args.collapsible = '0' else table.insert(classes, 'collapsible') if args.collapse then table.insert(classes, 'collapsed') end end args.float = args.float or 'right' if args.float == 'right' then args.margin = 'margin-left:1em;' elseif args.float == 'left' then args.margin = 'margin-right:1em;' else args.margin = '' end args.fontsize2 = 10000/88 if args.inline then table.insert(classes, 'RMinline') args.fontsize = 100 else table.insert(classes, 'RMbox') args.fontsize = 88 -- as above: CSS rule for .infobox in % end args.bg = args.bg or '#F9F9F9' args.style = args.style or '' result = result .. 'class="' .. table.concat(classes, ' ') .. '" cellspacing="0" cellpadding="0" style="float:' .. args.float .. ';clear:' .. args.float .. ';margin-top:0;margin-bottom:1em;' .. args.margin .. 'empty-cells:show;border-collapse:collapse;font-size:' .. args.fontsize .. '%;background:' .. args.bg .. ';' .. args.style .. '"' args.title = args.title or '' if args.inline or args.title == 'no' or args.title == '0' then else result = result .. '\n! style="color:' .. args['title color'] .. ';background:' .. args['title bg color'] .. ';text-align:center;padding:5px"|' if args['navbar pos'] then result = result .. '<div>' else if args.navbar ~= '' then navtable.mini = true navtable.brackets = true navtable.style = 'float:left;margin-right:5px;white-space:nowrap' navtable.fontstyle = 'font-size:'..args.fontsize2..'%;color:' .. args['title color'] args.navbar = navbar(navtable) .. '<div style="margin-left:55px">' else args.navbar = '<div>' end result = result .. args.navbar end result = result .. '<div style="white-space:nowrap;' if args.collapsible == '0' and (args['navbar pos'] or args.navbar == '<div>') then else result = result .. 'margin-right:55px;' if args['navbar pos'] or args.navbar == '<div>' then result = result .. 'margin-left:55px;' end end result = result .. 'font-size:'..args.fontsize2..'%">' .. args.title .. '</div></div>' end args.top = args.top or args['on top'] if args.top then result = result .. '\n|-\n|style="padding:0px 5px;text-align:center;'..(args.topstyle or '')..'"|' .. args.top end result = result .. '\n|-\n|style="line-height:normal;padding:4px 5px"|' if args.navbar ~= '' and args['navbar pos'] == '1' then if not positive(args['navbar long']) and not negative(args['navbar mini']) then navtable.mini = true; args.navbar = navbar(navtable) end result = result .. '<div style="float:left;padding-right:5px">' .. args.navbar .. '</div>' end args.legend2 = mw.ustring.lower(args.legend) if args.legend2 ~= 'no' and args.legend2 ~= '0' then args.legend = i18n.text.legend[args.legend2] or ((args.legend2 ~= '') and ('[['..args.legend) or i18n.text.legend.default) args.legend = args.legend .. '|' .. (args['legend alt'] or i18n.text.legend_text) .. ']]' result = result .. '<div class="selfreference noprint" style="text-align:right;font-size:97%">' .. args.legend .. '</div>' end if args.inline then args.padding2 = '0px' else args.padding2 = '0px 6px' end for k, v in ipairs(mapnums) do if not mapnums[k + 1] then if not args.inline then args.padding2 = '0px 6px 6px' end end args.ending = '' if args['map'..v..'-title'] then args.header_margin = '0' if k == 1 then args.border_header = 'border-bottom: 5px solid '..args.bg..';' else args.border_header = 'border-top: 5px solid '..args.bg..';border-bottom: 5px solid '..args.bg..';' end if positive(args['map'..v..'-collapsible']) then args.header_margin = '0 55px' args.ending = '\n|}' if positive(args['map'..v..'-collapse']) or positive(args['map'..v..'-collapsed']) then args.map_collapsed = ' mw-collapsed autocollapse' else args.map_collapsed = '' end result = result..'\n|-\n|\n{|class="mw-collapsible'..args.map_collapsed..'" cellpadding="0" cellspacing="0" style="display:table;min-width:100%;margin:0 auto"' end if args.inline then args.header_style2 = ' style="line-height:normal"' else args.header_style2 = '' end result = result..'\n|-'..args.header_style2..'\n!style="'..args.border_header..'padding:3px 5px;text-align:center;vertical-align:middle;color:'..rgb_black..';background:#EEEEEE" | <div style="margin:'..args.header_margin..';font-size:'..10000/args.fontsize..'%">'..args['map'..v..'-title']..'</div>' args.border_top = '' else if k == 1 then args.border_top = '' else args.border_top = 'border-top: 5px solid '..args.bg..';' end end result = result .. '\n|-\n|style="'..args.border_top..'padding:' .. args.padding2 .. '"|\n{|class="nogrid routemap" style="font-size:'..(args.fontsize2 * .95)..'%"\n'..localroute(args[prefix(v)], (args['tw'..v] or args['text-width'..v] or args['text width'..v] or args.tw or ''), args.bg, args.process)..'\n|}'..args.ending end args.bottom = args.bottom or args.footnote if args.bottom then if args.inline then args.padding2 = '6px' else args.padding2 = '0px' end result = result .. '\n|-\n|style="line-height:normal;text-align:right;padding:' .. args.padding2 .. ' 5px 5px;'..(args.bottomstyle or args.footnotestyle or '')..'"|' .. args.bottom if string.find(args.bottom, '&action=edit') then result = result .. (i18n['error-categories']['separate-navbar'] or i18n['error-categories'].default) end end if args.navbar ~= '' and args['navbar pos'] == '2' then if negative(args['navbar long']) or positive(args['navbar mini']) then navtable.mini = true; args.navbar = navbar(navtable) end if args.inline and not args.bottom then args.padding2 = '6px' else args.padding2 = '0px' end result = result .. '\n|-\n|style="line-height:normal;padding:' .. args.padding2 .. ' 5px 3px;text-align:center"|' .. args.navbar end return result .. '\n|}' end local function base(t1,t2,link,stn,italic,it,it2,bold,align,style,bg1,bg2,line,fs1,fs2,lh,v1,swap,inp,bs) --Creates an inline table with two rows of text. Can be used in any Routemap text cell. --Implemented in the BSsplit, BSto, BSsrws and BScvt templates. if not align then if bs == 'cvt' then align = 'right' else align = 'inherit' end end style = style or '' local result = '&#32;<table cellspacing="0" cellpadding="0" style="font-weight:inherit;color:inherit;background:transparent;margin-top:-2px;margin-bottom:-2px;display:inline-table;vertical-align:middle;text-align:'..align if italic or it == 'all' then result = result..';font-style:italic' end if bold then result = result..';font-weight:bold' end local rowstart = '<tr><td style="text-align:inherit;padding:0;line-height:' result = result..';'..style..'">'..rowstart..lh if line then result = result..';border-bottom:1px solid gray' end local bgpad = ';padding-left:.5em;padding-right:.5em' local function bgtext(v) return ';color:'..greatercontrast{v, '#FFF', rgb_black} end if bg1 then result = result..bgpad..bgtext(bg1)..';background:'..bg1 elseif bg2 then result = result..bgpad end if fs1 then result = result..';font-size:'..fs1 end result = result..'">' if not t1 or string.find(t1, '^%s*$') then if not t2 then t2 = '' end if string.find(t2, '<br ?/?>') == nil then t1 = '&nbsp;' end end if not t2 or string.find(t2, '^%s*$') then if not t1 then t1 = '' end if string.find(t1, '<br ?/?>') == nil then t2 = '&nbsp;' end end if bs == 'srws' then if stn then link = t1..' '..t2..' '..stn else link = ' railway station'..t1..' '..t2 end elseif bs == 'cvt' then local split, floor, outp, v2, mult = mw.text.split, math.floor local function trim(x) return string.gsub(x, '%s', '') end local cvt = { -- conversion values ['mi'] = 1.609344, ['ch'] = 20.1168, ['mi;ch'] = 80, ['m'] = 1 / .9144, ['yd'] = .9144, ['ft'] = .3048, } local sf = { -- 10 ^ floor(log10(cvt[inp]) + .5); or 10 ^ floor(log10(cvt[inps[1]] * cvt[inp]) + .5) for dual-unit inputs. this corrects the accuracy of result so that it usually has same significant figures ['mi'] = 1, ['ch'] = 10, ['mi;ch'] = .01, ['m'] = 1, ['yd'] = 1, ['ft'] = .1, } if not inp then inp = 'mi' end inp = string.lower(trim(inp)) if inp == 'ch' or inp == 'yd' or inp == 'ft' then -- output unit outp = 'm' elseif inp == 'm' then outp = 'yd' else if inp ~= 'mi;ch' then inp = 'mi' end outp = 'km' end local pos = string.find(v1, '%.') if not pos then mult = 1 else mult = 10 ^ (string.len(v1) - pos) end local inps = string.find(inp, ';') if inps then inps = split(inp, ';') if swap then t1 = v1..'&nbsp;'..outp v1 = tonumber(v1) t2 = floor(v1 / cvt[inps[1]])..'&nbsp;'..inps[1]..'&nbsp;'..floor(v1 % cvt[inps[1]] / cvt[inps[1]] * cvt[inp] * mult * sf[inp] + .5) / mult / sf[inp]..'&nbsp;'..inps[2] else v1 = split(trim(v1), ';') t1 = v1[1]..'&nbsp;'..inps[1]..'&nbsp;'..v1[2]..'&nbsp;'..inps[2] t2 = floor((tonumber(v1[1]) * cvt[inps[1]] + tonumber(v1[2]) * cvt[inps[1]] / cvt[inp]) * mult / sf[inp] + .5) / mult * sf[inp]..'&nbsp;'..outp end else if swap then v2 = floor(tonumber(v1) / cvt[inp] * mult * sf[inp] + .5) / mult / sf[inp] inp, outp = outp, inp else v2 = floor(tonumber(v1) * cvt[inp] * mult / sf[inp] + .5) / mult * sf[inp] end t1 = v1..'&nbsp;'..inp t2 = v2..'&nbsp;'..outp end end if t1 then if link then result = result..'[['..link..'|'..t1..']]' else result = result..t1 end end local rowend = '</td></tr>' result = result..rowend..rowstart..lh if bg2 then result = result..bgpad..bgtext(bg2)..';background:'..bg2 elseif bg1 then result = result..bgpad end if fs2 then result = result..';font-size:'..fs2 end if (it ~= 'off' and bs == 'to') or it2 == 'italic' then result = result..';font-style:italic' elseif it == 'off' then result = result..';font-style:normal' end result = result..'">' if t2 then if link then result = result..'[['..link..'|'..t2..']]' else result = result..t2 end end result = result..rowend..'</table>&#32;' if bs == 'to' or bs == 'srws' then if t1 == '&nbsp;' or t2 == '&nbsp;' then result = result..(i18n['error-categories']['missing-text-values'] or i18n['error-categories'].default) end end if string.find(t1, '<br ?/?>') ~= nil or string.find(t2, '<br ?/?>') ~= nil then result = result..(i18n['error-categories']['br-tags'] or i18n['error-categories'].default) end if bs == 'split' then if link and t1 and t2 then if string.find(link, '^'..t1..' '..t2..' ') then result = result..(i18n['error-categories']['srws'] or i18n['error-categories'].default) end end end return result end p.BSto = makeInvokeFunction('_BSto') function p._BSto(args) args[3] = args[3] or args.L args[4] = args[4] or args.it or args.i args[5] = args[5] or args.b return base(args[1],args[2],args[3],nil,nil,args[4],nil,args[5],args.align,args.style,args.bg1,args.bg2,args.line,'105%','inherit','.9',nil,nil,nil,'to') end p.BSsplit = makeInvokeFunction('_BSsplit') function p._BSsplit(args) args[3] = args[3] or args.L args[4] = args[4] or args.it or args.i args[5] = args[5] or args.b return base(args[1],args[2],args[3],nil,args[4],nil,nil,args[5],args.align,args.style,args.bg1,args.bg2,args.line,'inherit','inherit','.9',nil,nil,nil,'split') end p.BSsrws = makeInvokeFunction('_BSsrws') function p._BSsrws(args) args[3] = args[3] or args.S args[4] = args[4] or args.it or args.i args[5] = args[5] or args.b return base(args[1],args[2],nil,args[3],args[4],nil,nil,args[5],args.align,args.style,args.bg1,args.bg2,args.line,'inherit','inherit','.9',nil,nil,nil,'srws') end p.BScvt = makeInvokeFunction('_BScvt') function p._BScvt(args) return base(nil,nil,nil,nil,nil,nil,args.alt,nil,args.align,args.style,args.bg1,args.bg2,args.line,'inherit','inherit','.9',args[1],args[2],args['in'],'cvt') end p.rmri = makeInvokeFunction('_rmri') function p._rmri(args)--[[ Displays a blue arrow pointing in one of eight directions. Implemented in the RoutemapRouteIcon template. ]] local directions, result = { ['Up'] = {'u', 'up'}, ['Down'] = {'d', 'dn', 'down'}, ['Left'] = {'l', 'left'}, ['Right'] = {'r', 'right'}, ['UpperRight'] = {'ur', 'ne', 'c1', 'upperright'}, ['LowerRight'] = {'lr', 'se', 'c2', 'lowerright'}, ['LowerLeft'] = {'ll', 'sw', 'c3', 'lowerleft'}, ['UpperLeft'] = {'ul', 'nw', 'c4', 'upperleft'}, } local d, link, size = args[1], args[2], args[3] if not d then if args[4] ~= ' ' then d, link, size = args[2], args[3], 's' end end for k, v in pairs(directions) do for _, name in ipairs(v) do if d:lower() == name then if size == 's' then size = '7' elseif not size then size = '10' end if not link then link = '' end result = '[[File:Arrow Blue '..k..' 001.svg|'..size..'px|alt='..k..' arrow|link='..link..']]' end end end if not result then return '<span style="color:#f00">Invalid [[Template:RoutemapRoute]] arrow value "<span style="font-style:italic">'..d..'</span>".</span>'..(i18n['error-categories']['rmr-error'] or i18n['error-categories'].default) else return result end end p.rmr = makeInvokeFunction('_rmr') function p._rmr(args)--[[ Displays text between two blue arrows (or to the left/right side of one). Text can be split with an en dash if entered in both first and second numbered parameters. Implemented in the RoutemapRoute template. ]] args.l = args.l or args.Licon or args.licon or args.L args.r = args.r or args.Ricon or args.ricon or args.R if args.l then args.l = p._rmri{args.l,args.llink,(args.lsize or args.size),' '}..'&nbsp;' else args.l = '' end if args.r then args.r = '&nbsp;'..p._rmri{args.r,args.rlink,(args.rsize or args.size),' '} else args.r = '' end if args[1] then if args[2] then args[1] = args[1]..'&nbsp;–&nbsp;'..args[2] end else args[1] = args[2] or '' end if args[1] == '' or args.enclosed == 'no' then args.b1, args.b2 = '', '' else args.b1, args.b2 = '(', ')' end return args.b1..args.l..args[1]..args.r..args.b2 end function p.BSrow(frame) local args = getArgs(frame, { parentOnly = true, removeBlanks = false, }) return p._BSrow(args) end function p._BSrow(args)--[[ Creates Routemap syntax for a diagram row based on parameters. Implemented in the RDTr template. ]] args.n = tonumber(args.n or '') if not args.n then local icontotal = getArgNums('', args) table.sort(icontotal) args.n = icontotal[#icontotal] or 1 end local count, icons, overlaps, overlapCalc = tonumber(args['$count']) or 1, {}, {}, math.log10(args.n) local text = (args.text and '*') or '' if overlapCalc == math.floor(overlapCalc) then overlapCalc = 10^(overlapCalc) else overlapCalc = 10^(math.floor(overlapCalc) + 1) end while count <= args.n do local cellparams, overlapn = {}, (string.match(count/overlapCalc, '%.(0+)') or '')..count table.insert(icons, (text..(args[count] or ''))) if args['O'..overlapn] then local iconparams, overlapparams, overlapt = {}, {}, {} for k, v in pairs({bg = (args['O'..overlapn..'0-bg'] or args['O'..overlapn..'0-background'] or args['O'..overlapn..'0-bgcolor']), color = (args['O'..overlapn..'0-color'] or args['O'..overlapn..'0-colour']), b = (args['O'..overlapn..'0-b'] or args['O'..overlapn..'0-bold']), i = (args['O'..overlapn..'0-i'] or args['O'..overlapn..'0-it'] or args['O'..overlapn..'0-italic']), align = args['O'..overlapn..'0-align'], fontsize = args['O'..overlapn..'0-fontsize'], abbr = args['O'..overlapn..'0-abbr'], style = args['O'..overlapn..'0-style']}) do if v then table.insert(iconparams, k..'='..v) end end if iconparams[1] then icons[count] = icons[count]..'__'..table.concat(iconparams, ',') end for k, v in pairs({bg = (args['O'..overlapn..'-bg'] or args['O'..overlapn..'-background'] or args['O'..overlapn..'-bgcolor']), color = (args['O'..overlapn..'-color'] or args['O'..overlapn..'-colour']), b = (args['O'..overlapn..'-b'] or args['O'..overlapn..'-bold']), i = (args['O'..overlapn..'-i'] or args['O'..overlapn..'-it'] or args['O'..overlapn..'-italic']), align = args['O'..overlapn..'-align'], fontsize = args['O'..overlapn..'-fontsize'], abbr = args['O'..overlapn..'-abbr'], style = args['O'..overlapn..'-style']}) do if v then table.insert(overlapparams, k..'='..v) end end if overlapparams[1] then args['O'..overlapn] = args['O'..overlapn]..'__'..table.concat(overlapparams, ',') end overlaps = getArgNums('O'..overlapn, args) or {} table.sort(overlaps) if overlaps[1] then for i, v in ipairs(overlaps) do overlapparams = {} for k, v2 in pairs({bg = (args['O'..overlapn..v..'-bg'] or args['O'..overlapn..v..'-background'] or args['O'..overlapn..v..'-bgcolor']), color = (args['O'..overlapn..v..'-color'] or args['O'..overlapn..v..'-colour']), b = (args['O'..overlapn..v..'-b'] or args['O'..overlapn..v..'-bold']), i = (args['O'..overlapn..v..'-i'] or args['O'..overlapn..v..'-it'] or args['O'..overlapn..v..'-italic']), align = args['O'..overlapn..v..'-align'], fontsize = args['O'..overlapn..v..'-fontsize'], abbr = args['O'..overlapn..v..'-abbr'], style = args['O'..overlapn..v..'-style']}) do if v2 then table.insert(overlapparams, k..'='..v2) end end if overlapparams[1] then args['O'..overlapn..v] = args['O'..overlapn..v]..'__'..table.concat(overlapparams, ',') end table.insert(overlapt, text..args['O'..overlapn..v]) end overlaps = '!~'..text..args['O'..overlapn]..'!~'..table.concat(overlapt, '!~') else overlaps = '!~'..text..args['O'..overlapn] end icons[count] = icons[count]..overlaps else if args[count..'-abbr'] then table.insert(cellparams, 'abbr='..args[count..'-abbr']) end end if args[count..'-link'] then icons[count] = icons[count]..'!@'..args[count..'-link'] end for k, v in pairs({bg = (args[count..'-bg'] or args[count..'-background'] or args[count..'-bgcolor']), color = (args[count..'-color'] or args[count..'-colour']), b = (args[count..'-b'] or args[count..'-bold']), i = (args[count..'-i'] or args[count..'-it'] or args[count..'-italic']), align = args[count..'-align'], fontsize = args[count..'-fontsize'], style = args[count..'-style']}) do if v then table.insert(cellparams, k..'='..v) end end if cellparams[1] then icons[count] = icons[count]..'!_'..table.concat(cellparams, ',') end count = count + 1 end local row, rowparams, left, right = table.concat(icons, '\\'), {} for k, v in pairs({bg = (args.bg or args.background or args.bgcolor), color = (args.color or args.colour), b = (args.b or args.bold), i = (args.i or args.it or args.italic), align = args.align, fontsize = args.fontsize, style = args.style}) do if v then table.insert(rowparams, k..'='..v) end end if rowparams[1] then args.R5 = table.concat(rowparams, ',') end for i, v in ipairs({'R1', 'R2', 'R3', 'R4', 'R5', 'L1', 'L2', 'L3', 'L4'}) do if not args[v] or string.find(args[v], '^%s*$') then args[v] = nil end end if args.R5 then right = {(args.R1 or ' '), (args.R2 or ' '), (args.R3 or ' '), (args.R4 or ' '), args.R5} elseif args.R4 then right = {(args.R1 or ' '), (args.R2 or ' '), (args.R3 or ' '), args.R4} elseif args.R3 then right = {(args.R1 or ' '), (args.R2 or ' '), args.R3} elseif args.R1 then right = {args.R1, (args.R2 or '')} elseif args.R2 then right = {args.R2} end if right then row = row..'~~'..table.concat(right, '~~') end if args.L4 then left = {args.L4, (args.L3 or ' '), (args.L2 or ' '), (args.L1 or '')} elseif args.L3 then left = {args.L3, (args.L2 or ' '), (args.L1 or '')} elseif args.L1 then left = {(args.L2 or ''), args.L1} elseif args.L2 then left = {args.L2} end if left then row = table.concat(left, '~~')..'! !'..row end return row end function p.BSrow_lite(frame) local args = getArgs(frame, { removeBlanks = false, }) return p._BSrow_lite(args) end function p._BSrow_lite(args)--[[ Creates Routemap syntax for a diagram row based on parameters. Intended to be used to substitute legacy templates. Note that for compatibility the link and sidebar parameter names are different. ]] args.n = tonumber(args.n or '') if not args.n then local icontotal = getArgNums('', args) table.sort(icontotal) args.n = icontotal[#icontotal] or 1 end local count, icons, overlaps, overlapCalc = tonumber(args['$count']) or 1, {}, {}, math.log10(args.n) local text = (args.text and '*') or '' if overlapCalc == math.floor(overlapCalc) then overlapCalc = 10^(overlapCalc) else overlapCalc = 10^(math.floor(overlapCalc) + 1) end while count <= args.n do local cellparams, overlapn = {}, (string.match(count/overlapCalc, '%.(0+)') or '')..count table.insert(icons, (text..(args[count] or ''))) if args['O'..overlapn] then local overlapt = {} overlaps = getArgNums('O'..overlapn, args) or {} table.sort(overlaps) if overlaps[1] then for i, v in ipairs(overlaps) do table.insert(overlapt, text..args['O'..overlapn..v]) end overlaps = '!~'..text..args['O'..overlapn]..'!~'..table.concat(overlapt, '!~') else overlaps = '!~'..text..args['O'..overlapn] end icons[count] = icons[count]..overlaps end if args['L'..count] then icons[count] = icons[count]..'!@'..args['L'..count] end count = count + 1 end local row, rowparams, left, right = table.concat(icons, '\\'), {} for k, v in pairs({bg = (args.bg or args.background or args.bgcolor), style = args.style}) do if v then table.insert(rowparams, k..'='..v) end end if rowparams[1] then args.r5 = table.concat(rowparams, ',') end for i, v in ipairs({'r1', 'r2', 'r3', 'r4', 'r5', 'l1', 'l2', 'l3', 'l4'}) do if not args[v] or string.find(args[v], '^%s*$') then args[v] = nil end end if args.r5 then right = {(args.r1 or ' '), (args.r2 or ' '), (args.r3 or ' '), (args.r4 or ' '), args.r5} elseif args.r4 then right = {(args.r1 or ' '), (args.r2 or ' '), (args.r3 or ' '), args.r4} elseif args.r3 then right = {(args.r1 or ' '), (args.r2 or ' '), args.r3} elseif args.r1 then right = {args.r1, (args.r2 or '')} elseif args.r2 then right = {args.r2} end if right then row = row..'~~'..table.concat(right, '~~') end if args.l4 then left = {args.l4, (args.l3 or ' '), (args.l2 or ' '), (args.l1 or '')} elseif args.l3 then left = {args.l3, (args.l2 or ' '), (args.l1 or '')} elseif args.l1 then left = {(args.l2 or ''), args.l1} elseif args.l2 then left = {args.l2} end if left then row = table.concat(left, '~~')..'! !'..row end return row end local function pre_block(text) -- Pre tags returned by a module do not act like wikitext <pre>...</pre>. return '<pre>' .. mw.text.nowiki(text) .. (text:sub(-1) == '\n' and '' or '\n') .. '</pre>\n' end function p.convertbs(frame)--[[ Converts a legacy route diagram into Routemap format. Code to be used is displayed in preview mode or after saving the page, above the original code. {{#invoke:Routemap|convertbs|<nowiki> (Original diagram) </nowiki>}} ]] local org = mw.text.unstripNoWiki(frame.args[1] or 'Paste legacy RDT markup between nowiki tags') local res = org res = string.gsub(res, '{{[Bb][Ss]%-?map', '{{Routemap') -- "%-" is an escape for hyphen which is used as "between" in pattern. res = string.gsub(res, '{|%s?{{[Rr]ailway line header}}', '{{Routemap') res = string.gsub(res, '{{[Bb][Ss]%-header%d?|', '{{safesubst:BS-header/safesubst|') -- "%d?" means optional digit in case use of variant template like BS-header3. res = string.gsub(res, '{{[Bb][Ss]%-table%d?}}', '|map =') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)|', '{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-replace|', '!replace{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-startCollapsible|', '-startCollapsible-collapsed\n{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-sc|', '-startCollapsible-collapsed\n{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%text|', '{{safesubst:BS%1%2text/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-2|', '{{safesubst:BS%1%2-2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-2replace|', '!replace{{safesubst:BS%1%2-2|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-2sc|', '-startCollapsible-collapsed\n{{safesubst:BS%1%2-2|') res = string.gsub(res, '{{!}}}', '-endCollapsible-') res = string.gsub(res, '{{[Ee]nd}}', '-endCollapsible-') res = string.gsub(res, '|}\n?|}', '}}') -- Replace ending of Railway line header map setup. res = string.gsub(res, '{{[Bb][Ss]%-colspan}}\n{{safesubst', '{{safesubst') -- BS-colspan is unnecessary and would cause error in Routemap. res = string.gsub(res, '{{[Bb][Ss]%-colspan}}\n%-%-%-%-', '-colspan-2\n----') res = string.gsub(res, '&lt;', '<') res = string.gsub(res, '&gt;', '>') if string.find(res, '!replace') or string.find(res, '|%s*bg%s*=') then local restable = mw.text.split(res, '\n') for i, v in ipairs(restable) do if string.find(v, '!replace') then restable[i] = string.gsub(restable[i], '!replace', '') restable[i-2] = string.gsub(restable[i-2], 'collapsed', 'collapsed-replace') end if (string.find(v, '|%s*bg%s*=%s*#?[a-zA-Z0-9]+') or string.find(v, '|%s*bg%s*=%s*#?{{[^{}]+}}%s*|') or string.find(v, '|%s*bg%s*=%s*#?{{[^{}]+}}%s*}}')) and string.find(restable[i-1], '^-startCollapsible') then local bg = string.match(v, '|%s*bg%s*=%s*(#?[a-zA-Z0-9]+)') or string.find(v, '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*|') or string.find(v, '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*}}') restable[i] = string.gsub(restable[i], '|%s*bg%s*=%s*'..bg, '') restable[i-1] = string.gsub(restable[i-1], '%-?$', '--bg=')..bg if string.find(restable[i+1], '!replace') then restable[i+1] = string.gsub(restable[i+1], '!replace', '') restable[i-1] = string.gsub(restable[i-1], 'collapsed%-', 'collapsed-replace') if (string.find(restable[i+1], '|%s*bg%s*=%s*#?[a-zA-Z0-9]+') or string.find(restable[i+1], '|%s*bg%s*=%s*#?{{[^{}]+}}%s*|') or string.find(restable[i+1], '|%s*bg%s*=%s*#?{{[^{}]+}}%s*}}')) then local bg2 = string.match(restable[i+1], '|%s*bg%s*=%s*(#?[a-zA-Z0-9]+)') or string.find(restable[i+1], '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*|') or string.find(restable[i+1], '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*}}') if bg2 == bg then restable[i+1] = string.gsub(restable[i], '|%s*bg%s*=%s*'..bg2, '') end end end end end res = table.concat(restable, '\n') end return "\n'''Safe substitution''':\n" .. pre_block(res) .. "'''''Original''''':\n" .. pre_block(org) end return p t34e9m7wp5ln3sf7yo9uk19gq40u7f5 126481 126480 2026-06-13T12:01:11Z Saimawnkham 5 126481 Scribunto text/plain local i18n = { errors = { ["parameter-missing"] = "Missing parameter!", ["collapsible-block-not-closed"] = "Collapsible section not closed properly!", ["collapsible-block-not-open"] = "Missing start-Collapsible markup!", ["collapsible-block-empty"] = "Collapsible section must not be empty!", ["collapsible-block-no-first-row"] = "Invalid first row of collapsible section!", ["collapsible-block-no-replacement"] = "Invalid collapsible replacement row!", ["colspan-less-rows-than-set"] = "Invalid colspan set!", }, ["error-categories"] = { default = '[[Category:Pages with errors of Module Routemap]]', ["text-images"] = '[[Category:Pages using Routemap with text images]]', ["separate-navbar"] = '[[Category:Pages using Routemap with a separate navbar template]]', ["missing-text-values"] = '[[Category:Pages using BSto or BSsrws with missing text values]]', ["br-tags"] = '[[Category:Pages using BSto, BSsplit, BSsrws or BScvt with br tags]]', ["srws"] = '[[Category:Pages using BSsplit instead of BSsrws]]', ["rmr-error"] = '[[Category:Pages with bad value for RoutemapRoute template]]' }, text = { navbar_mini = false, -- for navbar pos 2 only navbar_text = 'This diagram:', -- for navbar pos 2 only legend_text = 'Legend', legend = { default = '[[Template:Railway line legend', track = '[[Template:Railway track legend', bus = '[[Template:Bus route legend', canal = '[[Template:Waterways legend', water = '[[Template:Waterways legend', waterway = '[[Template:Waterways legend', foot = '[[Template:Trails legend', footpath = '[[Template:Trails legend', walkway = '[[Template:Trails legend' } }, html = { ["cell-icon-fmt"] = '<div style="%s">[[File:BSicon_%s.svg|x20px|link=%s|alt=|%s]]%s</div>', ["cell-overlapicon-fmt"] = '<div class="RMic" style="%s">[[File:BSicon_%s.svg|x20px|link=%s|alt=|%s]]</div>', ["cell-icon-fmt-with-overlap"] = '<div style="%s"><div class="RMov">%s</div><div%s>[[File:BSicon_%s.svg|x20px|link=|alt=|%s]]%s</div></div>', ["cell-text-fmt"] = '<div class="RMtx RM%s" style="%s"><div%s style="%s" title="%s">%s%s%s%s%s%s</div></div>', ["cell-overlaptext-fmt"] = '<div class="RMtx RM%s" style="%s"><div%s style="%s" title="%s">%s%s%s%s%s</div></div>', ["cell-text-fmt-with-overlap"] = '<div class="RM%s" style="%s"><div class="RMov">%s</div><div class="RMtx RM%s" style="%s"><div%s style="%s" title="%s">%s%s%s%s%s%s</div></div></div>', ["cell-empty-fmt"] = '<div class="RM%s" style="%s">%s</div>', ["cell-empty-fmt-with-overlap"] = '<div style="%s"><div class="RMov">%s</div><div class="RMsp RM%s" style="%s">%s</div></div>', ["cell-filler-fmt"] = '<div class="RMf_" style="%s"><div class="RMfm" style="background:%s"></div></div>', ["cell-filler-empty-fmt"] = '<div class="RMf_ RM%s" style="%s"></div>', ["row-linfo4-fmt"] = '\ |class="RMl4" style="%s"|<div class="RMsi">%s</div>',-- parameters:linfo4-width, linfo4 ["row-linfo3-fmt"] = '<div class="RMsi">%s</div> ', ["row-rinfo3-fmt"] = ' <div class="RMsi">%s</div>', ["row-rinfo4-fmt"] = '\ |class="RMr4" style="%s"|<div class="RMsi">%s</div>',-- parameters:rinfo4-width, rinfo4 ["row-general-fmt"] = '\ |- %s\ |class="RMl" colspan="%s" style="%s"|%s\ |%s style="%s"|<div class="RMsi">%s</div>\ |class="RMir" style="%s"|%s\ |%s style="%s"|<div class="RMsi">%s</div>\ |class="RMr" colspan="%s" style="%s"|%s%s',-- parameters: linfo4-fmt, colspan-left, linfo3+2-width, linfo3+2, linfo1-pad, linfo1-width, linfo1, bg, cells, rinfo1-pad, rinfo1-width, rinfo1, colspan-right, rinfo2+3-width, rinfo2+3, rinfo4-fmt ["row-collapsible-begin-fmt"] = '\ |- style="line-height:1"\ |colspan="7" style="padding:0 !important;background:%s"|\ {|class="RMcollapse %s%s" style="%s"',-- parameters: bg, "collapsible "/"mw-collapsible mw-", collapse-state, "float:right" / "" ["row-collapsible-end-fmt"] = '\n|}', ["row-collapsible-left-button-width"] = '45px',-- 50px is the minimal width for [показать] / [скрыть] button. Use 40px for [show] / [hide] ["row-collapsible-left-button-fmt"] = '\n! style="padding-right:3px;min-width:%s;%s" |',--parameters: left-button-width, linfo4-width ["row-collapsible-left-linfo4+3+2-fmt"] = '\ {|cellspacing="0" cellpadding="0" style="line-height:1;width:100%%;padding:0 !important;margin:0 !important"\ |style="padding:0 3px 0 1px;text-align:left"|<div class="RMsi">%s</div>\ |style="text-align:right"| %s\ |}',-- parameters: linfo4, linfo3+2 ["row-collapsible-right-button-width"] = '45px',-- 72px is the minimal width for [развернуть] / [свернуть] button at 90%. Use 58px for [expand] / [collapse] ["row-collapsible-right-rinfo2+3+4-fmt"] = '\ {|cellspacing="0" cellpadding="0" style="line-height:1;width:100%%;padding:0 !important;margin:0 !important"\ |style="text-align:left"| %s\ |style="padding:0 1px 0 3px;text-align:right"|<div class="RMsi">%s</div>\ |}',-- parameters: rinfo2+3, linfo4 ["row-collapsible-right-button-fmt"] = '\n| style="padding-left:3px;font-size:90%%;min-width:%s;%s" |',--parameters: right-button-width, rinfo4-width ["row-collapsible-replace-begin-fmt"] = '\ |- style="line-height:1"\ |colspan="7" style="padding:0 %s"|<div style="position:relative">\ {| class="RMreplace" style="%sbackground:%s"',-- parameters: "right-button-width 0 0" / "0 0 left-button-width", "right:0px" / "", bg ["row-collapsible-replace-end-fmt"] = '\n|}</div>', ["colspan-fmt"] = '%s\n|-\n| colspan="7" style="background:%s;text-align:%s;%s"|\n%s', ["empty-row-fmt"] = '\n|-\n|style="padding:0 3px 0 0;%s"|\n|style="%s"|\n|%s style="%s"|\n|\n|%s style="%s"|\n|style="%s"|\n|style="padding:0 0 0 3px;%s"|' } } local p,q={},{} local getArgs = require('Module:Arguments').getArgs local function makeInvokeFunction(funcName) -- makes a function that can be returned from #invoke, using -- [[Module:Arguments]]. return function (frame) local args = getArgs(frame, {parentOnly = true}) return p[funcName](args) end end local function formaterror(key,param) local result = string.format(i18n.html['colspan-fmt'], '', '', '', '', '<span class="error">' .. string.format(i18n.errors[key] or (tostring(key) .. ' %s'), tostring(param or '')) .. '</span>') if mw.site.namespaces[mw.title.getCurrentTitle().namespace].isContent then result = result .. (i18n['error-categories'][key] or i18n['error-categories'].default or '') end return result end local function RGBbyCode(code)-- RGB codes for BSicon sets at Commons:Category:Icons for railway descriptions/other colors local colors = {-- Any changes should be discussed at Commons:Talk:BSicon/Colors bahn = 'BE2D2C', ex = 'D77F7E', u = '003399', uex = '6281C0', f = '008000', fex = '64B164', g = '2CA05A', gex = '7EC49A', azure = '3399FF', ex_azure = '99CCFF', black = '000000', ex_black = '646464', blue = '0078BE', ex_blue = '64ACD6', brown = '8D5B2D', ex_brown = 'B89A7F', carrot = 'ED9121', ex_carrot = 'F1BA76', excarrot = 'F1BA76', ex_excarrot = 'F3D2A9', cerulean = '1A8BB9', ex_cerulean = '73B7D3', cyan = '40E0D0', ex_cyan = '8AEAE1', deepsky = '00BFFF', ex_deepsky = '7FDFFF', denim = '00619F', ex_denim = '649EC3', fuchsia = 'B5198D', ex_fuchsia = 'D173B8', golden = 'D7C447', ex_golden = 'E5DA8E', green = '2DBE2C', ex_green = '7FD67E', grey = '999999', ex_grey = 'C0C0C0', jade = '53B147', ex_jade = '95CE8E', lavender = '9999FF', ex_lavender = 'C0C0FF', lime = '99CC00', ex_lime = 'D1E681', maroon = '800000', ex_maroon = 'B16464', ochre = 'CC6600', ex_ochre = 'DEA164', olive = '837902', ex_olive = 'B2AC64', orange = 'FF6600', ex_orange = 'FF9955', pink = 'F0668D', ex_pink = 'F4A1B8', purple = '8171AC', ex_purple = 'B1A8CB', red = 'EF161E', ex_red = 'F37176', ruby = 'CC0066', ex_ruby = 'DE64A1', exruby = 'DE64A1', ex_exruby = 'E89FC4', saffron = 'FFAB2E', ex_saffron = 'FFC969', sky = '069DD3', ex_sky = '67C2E3', steel = 'A1B3D4', ex_steel = 'C4CFE3', teal = '339999', ex_teal = '82C0C0', exteal = '82C0C0', ex_exteal = 'B1D6D6', violet = '800080', ex_violet = 'B164B1', yellow = 'FFD702', ex_yellow = 'FFEB81', } return colors[code] or colors.bahn end p.RGBbyCode = makeInvokeFunction('_RGBbyCode') function p._RGBbyCode(args) return RGBbyCode(args[1]) end local function properties(str) --str is a combination of properties with following syntax: --property name=value,property name1=value1,property name2=value2 and so on local result = {} for i, v in ipairs(mw.text.split(str, ',')) do if v then local t = mw.text.split(v, '=') if string.find(v, '=') then t[1] = mw.text.trim(t[1]) --trim parameter names table.insert(result, t[1]) result[t[1]] = t[2] or '' --fill table with pairs "property"="value" elseif result[result[i - 1]] then table.insert(result, result[i - 1]) result[result[i]] = result[result[i]]..','..t[1] --if no equals sign then tack t[1] onto the previous result else table.insert(result, '~~') end else table.insert(result, '~~') end end return result end local function positive(x) if not x then return nil else x = string.lower(x) end if x == 'yes' or x == 'y' or x == '1' or x == 'true' then return 1 end end local function negative(x) if not x then return nil else x = string.lower(x) end if x == 'no' or x == 'n' or x == '0' or x == 'false' then return 0 end end local function alignment(x, y, z) if not x then return nil end local directions = { ['inherit-left'] = {'l', 'left',}, ['inherit-right'] = {'r', 'right',}, ['top-inherit'] = {'a', 't', 'top',}, ['bottom-inherit'] = {'e', 'b', 'bottom',}, ['top-left'] = {'la', 'tl', 'c4', 'nw', 'top-left', 'topleft',}, ['top-right'] = {'ra', 'tr', 'c1', 'ne', 'top-right', 'topright',}, ['bottom-left'] = {'le', 'bl', 'c3', 'sw', 'bottom-left', 'bottomleft',}, ['bottom-right'] = {'re', 'br', 'c2', 'se', 'bottom-right', 'bottomright',}, ['inherit-center'] = {'c', 'center', 'centre',}, ['middle-inherit'] = {'m', 'middle',}, ['top-center'] = {'ma', 'tc', 'top-center', 'top-centre', 'topcenter', 'topcentre',}, ['bottom-center'] = {'me', 'bc', 'bottom-center', 'bottom-centre', 'bottomcenter', 'bottomcentre',}, ['middle-left'] = {'lm', 'ml', 'middle-left', 'middleleft',}, ['middle-right'] = {'rm', 'mr', 'middle-right', 'middleright',}, ['middle-center'] = {'cm', 'mc', 'middle-center', 'middle-centre', 'middlecenter', 'middlecentre',}, } for k, v in pairs(directions) do for _, name in ipairs(v) do if x:lower() == name then local values = mw.text.split(k, '-') if values[1] == 'inherit' then values[1] = y end if values[2] == 'inherit' then values[2] = z end return values end end end return {y, z} end local function cell(icon,overlapIcons,rowProps)--[[ Icon handling. Each icon is defined as in the following example: icon ID!~overlap icon ID!@image link target Values for an icon ID containing "*" are treated as text, with the letter(s) before "*" as width prefix(es). No limit on overlapping icons or text; just separate them by "!~". Parameters can be added after every object, separated to the left by "!_". This, if there is a link, must be after the link. Parameters for individual objects in an overlapping stack can also be added, separated to the left by "__". Unless a link is provided, each cell will have mouseover text indicating its contents. ]] local tmp, tmp2, cellProps, iconProps, overlapProps, tmp_sep, link, tracking, icontext, iconpre = {}, {}, {}, {}, {}, '', '', '' if #overlapIcons > 0 then tmp = mw.text.split(overlapIcons[#overlapIcons], '!_') if #tmp > 1 then overlapIcons[#overlapIcons], cellProps = tmp[1], properties(tmp[2]) end tmp = mw.text.split(overlapIcons[#overlapIcons], '!@') overlapIcons[#overlapIcons] = tmp[1] if #tmp > 1 then link = tmp[2] end tmp = mw.text.split(icon, '__') icon = tmp[1] if #tmp > 1 then iconProps = properties(tmp[2]) end for i, v in ipairs(overlapIcons) do tmp = mw.text.split(v, '__') overlapIcons[i] = mw.text.trim(tmp[1]) if #tmp > 1 then overlapProps[i] = properties(tmp[2]) else overlapProps[i] = {} end end else tmp = mw.text.split(icon, '[!_]_') if #tmp > 1 then icon, cellProps = tmp[1], properties(tmp[2]) end tmp = mw.text.split(icon, '!@') icon = mw.text.trim(tmp[1]) if #tmp > 1 then link = tmp[2] end end if #overlapIcons > 0 and icon ~= '' then tmp_sep = '; ' end local icontip = mw.text.nowiki(mw.text.unstripNoWiki(icon..tmp_sep..table.concat(overlapIcons, '; '))) local textspl = string.find(icon, '%*') if textspl then icontext = mw.text.trim(mw.ustring.sub(icon, textspl + 1)) if textspl ~= 1 then iconpre = mw.text.trim(mw.ustring.sub(icon, 1, textspl - 1)) end end cellProps.class = '' if cellProps.style then cellProps.style = ';'..cellProps.style else cellProps.style = '' end cellProps.bg = cellProps.bg or cellProps.background or cellProps.bgcolor if cellProps.bg then cellProps.style = cellProps.style..';background:'..cellProps.bg end if #overlapIcons > 0 or icontext then cellProps._before, cellProps._after = rowProps._before or '', rowProps._after or '' cellProps.color = cellProps.color or cellProps.colour ; cellProps.bold = cellProps.bold or cellProps.b ; cellProps.italic = cellProps.italic or cellProps.i or cellProps.it if cellProps.color then cellProps.style = cellProps.style..';color:'..cellProps.color end if positive(cellProps.italic) then cellProps.style = cellProps.style..';font-style:italic' end if positive(cellProps.bold) then cellProps.style = cellProps.style..';font-weight:bold' end if not cellProps.fontsize or rowProps.fontsize or cellProps.fontsize == 'info' then elseif cellProps.fontsize == 'cmt' or cellProps.fontsize == 'comment' then cellProps._before, cellProps._after = '<div class="RMsi">', '</div>' else cellProps.style = cellProps.style..';font-size:'..cellProps.fontsize end if cellProps.align or rowProps.align then rowProps.align = rowProps.align or {'middle', 'center'} cellProps.align = alignment(cellProps.align, rowProps.align[1], rowProps.align[2]) or rowProps.align cellProps.style, cellProps.textfmt = cellProps.style..';text-align:'..cellProps.align[2], ';vertical-align:'..cellProps.align[1] else cellProps.textfmt = '' end end if #overlapIcons > 0 then tmp = {} for i, v in ipairs(overlapIcons) do local thislink = link if i ~= #overlapIcons then thislink = '' end if thislink and thislink ~= '' then icontip = thislink end if overlapProps[i].style then overlapProps.style = ';'..overlapProps[i].style else overlapProps.style = '' end overlapProps[i].bg = overlapProps[i].bg or overlapProps[i].background or overlapProps[i].bgcolor if overlapProps[i].bg then overlapProps.style = overlapProps.style..';background:'..overlapProps[i].bg end local tmp_textspl = string.find(v, '%*') if tmp_textspl then overlapProps.class = '' local tmp_icontext, tmp_iconpre = mw.text.trim(mw.ustring.sub(v, tmp_textspl + 1)), '' if tmp_textspl ~= 1 then tmp_iconpre = mw.text.trim(mw.ustring.sub(v, 1, tmp_textspl - 1)) end overlapProps._before, overlapProps._after = cellProps._before, cellProps._after overlapProps[i].color = overlapProps[i].color or overlapProps[i].colour ; overlapProps[i].bold = overlapProps[i].bold or overlapProps[i].b ; overlapProps[i].italic = overlapProps[i].italic or overlapProps[i].i or overlapProps[i].it if overlapProps[i].color then overlapProps.style = overlapProps.style..';color:'..overlapProps[i].color end if positive(overlapProps[i].italic) then overlapProps.style = overlapProps.style..';font-style:italic' end if positive(overlapProps[i].bold) then overlapProps.style = overlapProps.style..';font-weight:bold' end if rowProps.fontsize or cellProps.fontsize or overlapProps[i].fontsize == 'info' then elseif not overlapProps[i].fontsize then overlapProps.class = ' class="RMts"' elseif overlapProps[i].fontsize == 'cmt' or overlapProps[i].fontsize == 'comment' then overlapProps._before, overlapProps._after = '<div class="RMsi">', '</div>' else overlapProps.style = overlapProps.style..';font-size:'..overlapProps[i].fontsize end if overlapProps[i].align or cellProps.align then cellProps.align = cellProps.align or {'middle', 'center'} overlapProps.align = alignment(overlapProps[i].align, cellProps.align[1], cellProps.align[2]) or cellProps.align overlapProps.style, overlapProps.textfmt = overlapProps.style..';text-align:'..overlapProps.align[2], ';vertical-align:'..overlapProps.align[1] else overlapProps.style, overlapProps.textfmt = overlapProps.style..';text-align:center', ';vertical-align:middle' end if overlapProps[i].abbr then overlapProps.tag = {'<abbr title="'..string.gsub(overlapProps[i].abbr, '"', '&quot;')..'">', '</abbr>'} else overlapProps.tag = {'', ''} end table.insert(tmp, string.format(i18n.html['cell-overlaptext-fmt'], (tmp_iconpre and tmp_iconpre ~= '' and tmp_iconpre or '_'), overlapProps.style, overlapProps.class, overlapProps.textfmt, icontip, overlapProps.tag[1], overlapProps._before, tmp_icontext, overlapProps._after, overlapProps.tag[2])) else v = mw.text.trim(v) if string.find(v, 'num') then if not string.find(v, 'numN%d+') then tracking = tracking..(i18n['error-categories']['text-images'] or i18n['error-categories'].default) end end table.insert(tmp, string.format(i18n.html['cell-overlapicon-fmt'], overlapProps.style, v, thislink, icontip)) end end if iconProps.style then tmp2[1] = true else iconProps.style = '' end iconProps.bg = iconProps.bg or iconProps.background or iconProps.bgcolor if iconProps.bg then iconProps.style = iconProps.style..';background:'..iconProps.bg end if string.match(icon, '^[%+_]?o?c?d?b?s?w?$') then if tmp2[1] then iconProps.style = ';'..iconProps.style end return string.format(i18n.html['cell-empty-fmt-with-overlap'], cellProps.style, mw.text.trim(table.concat(tmp)), (string.match(icon, '^.+$') or '_'), iconProps.style, tracking) elseif icontext then iconProps.class = '' iconProps._before, iconProps._after = cellProps._before, cellProps._after iconProps.color = iconProps.color or iconProps.colour ; iconProps.bold = iconProps.bold or iconProps.b ; iconProps.italic = iconProps.italic or iconProps.i or iconProps.it if iconProps.color then iconProps.style = iconProps.style..';color:'..iconProps.color end if positive(iconProps.italic) then iconProps.style = iconProps.style..';font-style:italic' end if positive(iconProps.bold) then iconProps.style = iconProps.style..';font-weight:bold' end if rowProps.fontsize or cellProps.fontsize or iconProps.fontsize == 'info' then elseif not iconProps.fontsize then iconProps.class = ' class="RMts"' elseif iconProps.fontsize == 'cmt' or iconProps.fontsize == 'comment' then iconProps._before, iconProps._after = '<div class="RMsi">', '</div>' else iconProps.style = iconProps.style..';font-size:'..iconProps.fontsize end if iconProps.align or cellProps.align then cellProps.align = cellProps.align or {'middle', 'center'} iconProps.align = alignment(iconProps.align, cellProps.align[1], cellProps.align[2]) or cellProps.align iconProps.style, iconProps.textfmt = iconProps.style..';text-align:'..iconProps.align[2], ';vertical-align:'..iconProps.align[1] else iconProps.style, iconProps.textfmt = iconProps.style..';text-align:center', ';vertical-align:middle' end if iconProps.abbr then iconProps.tag = {'<abbr title="'..string.gsub(iconProps.abbr, '"', '&quot;')..'">', '</abbr>'} else iconProps.tag = {'', ''} end if tmp2[1] then iconProps.style = ';'..iconProps.style end return string.format(i18n.html['cell-text-fmt-with-overlap'], (iconpre and iconpre ~= '' and iconpre or '_'), cellProps.style, mw.text.trim(table.concat(tmp)), (iconpre and iconpre ~= '' and iconpre or '_'), iconProps.style, iconProps.class, iconProps.textfmt, icontip, iconProps.tag[1], iconProps._before, icontext, iconProps._after, tracking, iconProps.tag[2]) else if iconProps.style ~= '' then iconProps.style = string.gsub(' style="'..iconProps.style..'"', '";', '"', 1) end if string.find(icon, 'num') then if not string.find(icon, 'numN%d+') then tracking = tracking..(i18n['error-categories']['text-images'] or i18n['error-categories'].default) end end return string.format(i18n.html['cell-icon-fmt-with-overlap'], cellProps.style, mw.text.trim(table.concat(tmp)), iconProps.style, icon, icontip, tracking) end end if string.match(icon, '^[%+_]?o?c?d?b?s?w?$') then return string.format(i18n.html['cell-empty-fmt'], (string.match(icon, '^.+$') or '_'), cellProps.style, tracking) else if link and link ~= '' then icontip = link end if icontext then if not cellProps.fontsize and not rowProps.fontsize then cellProps.class = ' class="RMts"' end if cellProps.abbr then cellProps.tag = {'<abbr title="'..string.gsub(cellProps.abbr, '"', '&quot;>')..'">', '</abbr>'} else cellProps.tag = {'', ''} end return string.format(i18n.html['cell-text-fmt'], (iconpre and iconpre ~= '' and iconpre or '_'), cellProps.style, cellProps.class, cellProps.textfmt, icontip, cellProps.tag[1], cellProps._before, icontext, cellProps._after, tracking, cellProps.tag[2]) else if string.find(icon, 'num') then if not string.find(icon, 'numN%d+') then tracking = tracking..(i18n['error-categories']['text-images'] or i18n['error-categories'].default) end end return string.format(i18n.html['cell-icon-fmt'], cellProps.style, icon, link, icontip, tracking) end end end local function fillercell(code, height) --Creates a 5px-high row. --Values in icon pattern can only be [blank], d, [BSicon color] or #[hex triplet]. height = mw.text.trim(height) if height ~= '' then if tonumber(height) then height = height..'px' end height = 'height:'..height..';min-height:'..height end if string.match(code, '^[%+_]?o?c?d?b?s?w?$') then return string.format(i18n.html['cell-filler-empty-fmt'], (string.match(code, '^.+$') or '_'), height) elseif mw.ustring.sub(code,1,1) == '#' then return string.format(i18n.html['cell-filler-fmt'], height, code) else return string.format(i18n.html['cell-filler-fmt'], height, '#'..RGBbyCode(code)) end end local function row(pattern,noformatting,filler)--[[ Row handling. Each row looks like the following: row properties~~linfo4~~linfo3~~linfo2~~linfo1! !(icon pattern)~~rinfo1~~rinfo2~~rinfo3~~rinfo4~~row properties ]] local result = {['linfo4'] = '', ['linfo3+2'] = '', ['linfo1'] = '', rowstyle = '', ['cells'] = {}, ['rinfo1'] = '', ['rinfo2+3'] = '', ['rinfo4'] = '', ['rowProp'] = {}} local lcolspan, rcolspan, linfo4_fmt, rinfo4_fmt = '2', '2', '', '' local left, right, icons, overlapIcons, tmp = {}, {}, {}, {}, mw.text.split(pattern, '! !') if #tmp > 1 then--splitting the pattern by '! !' left = tmp[1] ; right = tmp[2] else left = '' ; right = tmp[1] or '' end tmp = mw.text.split(left, '~~')--analysing the left part if #tmp > 1 then--if there are several ~~ result['linfo1'] = mw.getCurrentFrame():preprocess(mw.text.trim(tmp[#tmp])) result['linfo3+2'] = mw.text.trim(tmp[#tmp - 1]) if #tmp > 2 then tmp[#tmp - 2] = mw.text.trim(tmp[#tmp - 2]) if tmp[#tmp - 2] ~= '' then result['linfo3+2'] = string.format(i18n.html['row-linfo3-fmt'], tmp[#tmp - 2]) .. result['linfo3+2'] end if #tmp > 3 then tmp[#tmp - 3] = mw.text.trim(tmp[#tmp - 3]) if tmp[#tmp - 3] ~= '' then result['linfo4'] = mw.getCurrentFrame():preprocess(tmp[#tmp - 3]) lcolspan = '1' linfo4_fmt = string.format(i18n.html['row-linfo4-fmt'], '', result['linfo4']) end if #tmp > 4 then result.rowProp = properties(mw.text.trim(tmp[#tmp - 4])) end end end else--assume only linfo2 was provided. result['linfo3+2'] = mw.text.trim(tmp[1]) end result['linfo3+2'] = mw.getCurrentFrame():preprocess(result['linfo3+2'])--expand possible templates in info. tmp = mw.text.split(right, '~~')--analysing the right part if #tmp > 2 then result['rinfo1'] = mw.getCurrentFrame():preprocess(mw.text.trim(tmp[2])) result['rinfo2+3'] = mw.text.trim(tmp[3]) if #tmp > 3 then tmp[4] = mw.text.trim(tmp[4]) if tmp[4] ~= '' then result['rinfo2+3'] = result['rinfo2+3'] .. string.format(i18n.html['row-rinfo3-fmt'], tmp[4]) end if #tmp > 4 then tmp[5] = mw.text.trim(tmp[5]) if tmp[5] ~= '' then result['rinfo4'] = mw.getCurrentFrame():preprocess(tmp[5]) rcolspan = '1' rinfo4_fmt = string.format(i18n.html['row-rinfo4-fmt'], '', result['rinfo4']) end if #tmp > 5 then result.rowProp = properties(mw.text.trim(tmp[6])) end end end else--assume only rinfo2 was provided. result['rinfo2+3'] = mw.text.trim(tmp[2] or '') end result['rinfo2+3'] = mw.getCurrentFrame():preprocess(result['rinfo2+3']) -- The below parameter functions are passed through to the cells. if result.rowProp.fontsize == 'cmt' or result.rowProp.fontsize == 'comment' then result.rowProp._before, result.rowProp._after = '<div class="RMsi">', '</div>' end if result.rowProp.align then result.rowProp.align = alignment(result.rowProp.align, 'middle', 'center') or {'middle', 'center'} end icons = mw.text.split(tmp[1], '\\')--splitting the string of icons first by "\" if type(filler) == 'string' then result.style = ';font-size:0px' for i, v in ipairs(icons) do table.insert(result['cells'], fillercell(v, filler)) end--no !@ or !~ for filler row else result.style = '' for i, v in ipairs(icons) do tmp = mw.text.split(v, '!~') icons[i] = tmp[1] table.remove(tmp, 1) table.insert(overlapIcons, tmp) end for i, v in ipairs(icons) do table.insert(result['cells'], cell(v, overlapIcons[i], result.rowProp)) end end result['cells'] = table.concat(result['cells']) if result.rowProp.style then result.style = result.style..';'..result.rowProp.style end result.rowProp.bg = result.rowProp.bg or result.rowProp.background or result.rowProp.bgcolor ; result.rowProp.color = result.rowProp.color or result.rowProp.colour ; result.rowProp.bold = result.rowProp.bold or result.rowProp.b ; result.rowProp.italic = result.rowProp.italic or result.rowProp.i or result.rowProp.it if result.rowProp.bg then result.style = result.style..';background:'..result.rowProp.bg end if result.rowProp.color then result.style = result.style..';color:'..result.rowProp.color end if positive(result.rowProp.italic) then result.style = result.style..';font-style:italic' end if positive(result.rowProp.bold) then result.style = result.style..';font-weight:bold' end if result.rowProp.fontsize and result.rowProp._after == '' and result.rowProp.fontsize ~= 'info' then result.style = result.style..';font-size:'..result.rowProp.fontsize end if noformatting then return result else return string.format(i18n.html['row-general-fmt'], linfo4_fmt, lcolspan, '', result['linfo3+2'], q.linfo1_pad, '', result['linfo1'], result.style, result['cells'], q.rinfo1_pad, '', result['rinfo1'], rcolspan, '', result['rinfo2+3'], rinfo4_fmt) end end --↓ This table handles diagram rows beginning with a hyphen ("-"). q = {collapsibles = -1, text_width = {'', '', '', '', '', ''}, linfo1_pad = 'class="RMl1"', rinfo1_pad = 'class="RMr1"', bg = '#F9F9F9'} q.isKeyword = function(pattern, i, rows, justTest) if mw.ustring.sub(pattern, 1, 1) ~= '-' then if justTest then return false else return nil end end--not a valid keyword local tmp = mw.text.split(string.sub(pattern, 2), '%-') if type(q[tmp[1]])=="function" and tmp[1] ~= 'isKeyword' then if justTest then return tmp[1] else return q[tmp[1]](tmp, i, rows) end--valid keyword else if justTest then return false else return nil end end end q['startCollapsible'] = function(params, i, rows) table.remove(rows, i) local tmp = q.isKeyword(rows[i], i, rows, true) if tmp then if tmp == 'endCollapsible' then return formaterror('collapsible-block-empty') else return formaterror('collapsible-block-no-first-row') .. q.isKeyword(rows[i], i, rows) --no valid keywords that can follow "startCollapsible" end end if q.collapsibles == -1 then q.collapsibles = 1 else q.collapsibles = q.collapsibles + 1 end--q.collapsibles == -1 means there are no collapsibles at all; 0 - all closed; >0 - some not closed local collapsed, replace, props = params[2], params[3] or '', properties(table.concat(params, '-', 4))--params[1] is the keyword name so all indices are shifted by one. if collapsed == nil or collapsed == '' then collapsed = 'collapsed' end if props.bg == nil or props.bg == '' then props.bg = 'transparent' ; props['bg-replace'] = q.bg else props['bg-replace'] = props.bg end local mode, float, result if q.rinfo1_pad == '' then mode = 'collapsible ' ; float = 'float:right;' else mode = 'mw-collapsible mw-' ; float = '' end result = string.format(i18n.html["row-collapsible-begin-fmt"], props.bg, mode, collapsed, float) tmp = row(rows[i], true, nil) local linfo4_3_2_fmt, rinfo2_3_4_fmt = '', '' if q.rinfo1_pad == '' then if tmp['linfo4'] ~= '' or tmp['linfo3+2'] ~= '' then linfo4_3_2_fmt = string.format(i18n.html['row-collapsible-left-linfo4+3+2-fmt'], tmp['linfo4'], tmp['linfo3+2']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-collapsible-left-button-fmt'], i18n.html['row-collapsible-left-button-width'], q.text_width[1]), '1', q.text_width[2], linfo4_3_2_fmt, q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], '', '', '', '1', '', '', string.format(i18n.html['row-rinfo4-fmt'], '', '')) else if tmp['rinfo4'] ~= '' or tmp['rinfo2+3'] ~= '' then rinfo2_3_4_fmt = string.format(i18n.html['row-collapsible-right-rinfo2+3+4-fmt'], tmp['rinfo2+3'], tmp['rinfo4']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-linfo4-fmt'], q.text_width[1], tmp['linfo4']), '1', q.text_width[2], tmp['linfo3+2'], q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], q.rinfo1_pad, q.text_width[4], tmp['rinfo1'], '1', q.text_width[5], rinfo2_3_4_fmt, string.format(i18n.html['row-collapsible-right-button-fmt'], i18n.html['row-collapsible-right-button-width'], q.text_width[6])) end if replace ~= '' then if q.isKeyword(rows[i + 1], i, rows, true) then return result .. formaterror('collapsible-block-no-replacement') end--a plain row needed for replacement table.remove(rows, i) tmp = row(rows[i], true, nil) local padding, right = i18n.html['row-collapsible-right-button-width'] .. ' 0 0', '' if q.rinfo1_pad == '' then padding = '0 0 ' .. i18n.html['row-collapsible-left-button-width'] ; right = 'right:0px;' end result = result .. string.format(i18n.html['row-collapsible-replace-begin-fmt'], padding, right, props['bg-replace']) linfo4_3_2_fmt = '' ; rinfo2_3_4_fmt = '' if q.rinfo1_pad == '' then if tmp['linfo4'] ~= '' or tmp['linfo3+2'] ~= '' then linfo4_3_2_fmt = string.format(i18n.html['row-collapsible-left-linfo4+3+2-fmt'], tmp['linfo4'], tmp['linfo3+2']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-linfo4-fmt'], '', ''), '1', q.text_width[2], linfo4_3_2_fmt, q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], '', '', '', '1', '', '', string.format(i18n.html['row-rinfo4-fmt'], '', '')) else if tmp['rinfo4'] ~= '' or tmp['rinfo2+3'] ~= '' then rinfo2_3_4_fmt = string.format(i18n.html['row-collapsible-right-rinfo2+3+4-fmt'], tmp['rinfo2+3'], tmp['rinfo4']) end result = result .. string.format(i18n.html['row-general-fmt'], string.format(i18n.html['row-linfo4-fmt'], q.text_width[1], tmp['linfo4']), '1', q.text_width[2], tmp['linfo3+2'], q.linfo1_pad, q.text_width[3], tmp['linfo1'], tmp.style, tmp['cells'], q.rinfo1_pad, q.text_width[4], tmp['rinfo1'], '1', q.text_width[5], rinfo2_3_4_fmt, string.format(i18n.html['row-rinfo4-fmt'], '', '')) end result = result .. i18n.html['row-collapsible-replace-end-fmt'] end return result end q['endCollapsible'] = function(params, i, rows) if q.collapsibles > 0 then q.collapsibles = q.collapsibles - 1 return i18n.html['row-collapsible-end-fmt'] else return formaterror('collapsible-block-not-open') end end q['colspan'] = function(params, i, rows) if params[2] == 'end' then return '' end local tmp, j, nrows, props = {}, 0, tonumber(params[2]), properties(table.concat(params, '-', 3)) if nrows ~= 0 then table.remove(rows, i) end if nrows == nil then nrows = #rows - i + 1 end while j < nrows and i <= #rows do j = j + 1 if rows[i] == '-colspan-end' then j = nrows else table.insert(tmp, rows[i]) end if nrows ~= j or i == #rows then table.remove(rows, i) end end if j < nrows then j = formaterror('colspan-less-rows-than-set',j) else j = '' end return string.format(i18n.html['colspan-fmt'], j, props.bg or '', props.align or '', props['style'] or '', mw.getCurrentFrame():preprocess(table.concat(tmp, '\n'))) end q['filler'] = function(params, i, rows) local tmp, height = table.concat(params, '-', 3), (params[2] or '') if #params < 3 or tmp == '' then return formaterror('parameter-missing') end--TODO: specify the name of the parameter if params[2] ~= '' then height = params[2] end return row(tmp, nil, height) end function p.RGBbyCode(frame) return RGBbyCode(mw.text.trim(frame.args[1] or '')) end local function localroute(pattern,ptw,pbg,process) local tmp = {} if mw.text.trim(pbg) ~= '' then q.bg = pbg end tmp = mw.text.split(mw.text.trim(ptw), '%s*,%s*') if #tmp == 6 then for i = 1, 6 do if tmp[i] ~= '' then if tonumber(string.sub(tmp[i],-1)) then q.text_width[i] = 'width:' .. tmp[i] .. 'px;min-width:' .. tmp[i] .. 'px;' else q.text_width[i] = 'width:' .. tmp[i] .. ';min-width:' .. tmp[i] .. ';' end end end if tmp[4] == '' and tmp[5] == '' and tmp[6] == '' then q.rinfo1_pad = ''--padding for rinfo1 column = 0, not 3px elseif tmp[1] == '' and tmp[2] == '' and tmp[3] == '' then q.linfo1_pad = '' end--padding for linfo1 column = 0, not 3px elseif #tmp == 3 then for i = 1, 3 do if tmp[i] ~= '' then if tonumber(string.sub(tmp[i],-1)) then q.text_width[i + 3] = 'width:' .. tmp[i] .. 'px;min-width:' .. tmp[i] .. 'px;' else q.text_width[i + 3] = 'width:' .. tmp[i] .. ';min-width:' .. tmp[i] .. ';' end end end q.linfo1_pad = '' elseif #tmp == 1 and tmp[1] ~= '' then if tonumber(string.sub(tmp[1],-1)) then q.text_width[5] = 'width:' .. tmp[1] .. 'px;min-width:' .. tmp[1] .. 'px;' else q.text_width[5] = 'width:' .. tmp[1] .. ';min-width:' .. tmp[1] .. ';' end q.linfo1_pad = '' end for i = 1, 6 do tmp = tonumber(mw.ustring.match(q.text_width[i], ':([0-9]+%.?[0-9]*)px;')) if tmp then tmp = tmp*3/40 q.text_width[i] = 'width:' .. tmp .. 'em;min-width:' .. tmp .. 'em;' end end tmp = {} local index = 0 local rows = {} if not process or process == '' or negative(process) then pattern = mw.ustring.gsub(pattern, '\n(#[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])', '%1') end for item in pattern:gmatch('([^\n]*)\n?') do item = mw.text.trim(item) if item ~= '' then index = index + 1 rows[index] = item end end if index == 0 then return formaterror('parameter-missing') end for i, v in ipairs(rows) do local keyword = q.isKeyword(v, i, rows) if type(keyword) ~= "string" then table.insert(tmp, row(v, nil, nil)) else table.insert(tmp, keyword) end end if q.collapsibles > 0 then table.insert(tmp, formaterror('collapsible-block-not-closed') .. q['endCollapsible']()) end if q.collapsibles ~= -1 then if q.rinfo1_pad == '' then q.text_width[1] = q.text_width[1] .. 'min-width:' .. i18n.html['row-collapsible-left-button-width'] .. ';' else q.text_width[6] = q.text_width[6] .. 'min-width:' .. i18n.html['row-collapsible-right-button-width'] .. ';' end end -- ↓ empty row to set column widths; ↑ if q.collapsibles ≠ -1 and there are collapsible sections, leftmost or rightmost column should be wide enough to accomodate the button table.insert(tmp, string.format(i18n.html['empty-row-fmt'], q.text_width[1], q.text_width[2], q.linfo1_pad, q.text_width[3], q.rinfo1_pad, q.text_width[4], q.text_width[5], q.text_width[6])) return mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(mw.ustring.gsub(table.concat(tmp), 'style=";* *', 'style="'), '\n| *style="" *|', '\n|'), ' ?style=""', ''), ' ?colspan="1"', ''), '<div class="RMsi"></div>', ''), 'class="RM%+', 'class="RM_'), '(class="[^"]* RM)%+', '%1_') end local function getArgNums(prefix, args) -- Copied from Module:Infobox on enwiki. -- Returns a table containing the numbers of the arguments that exist -- for the specified prefix. For example, if the prefix were 'data', and -- 'data1', 'data2', and 'data5' existed, this would return {1, 2, 5}. local nums = {} for k, v in pairs(args) do local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$') if num then table.insert(nums, tonumber(num)) end end table.sort(nums) return nums end local greatercontrast = require('Module:Color contrast')._greatercontrast local rgb_black = '#252525' -- class .mw-body in Mediawiki:Common.css p.infobox = makeInvokeFunction('_infobox') function p._infobox(args) -- Creates a pretty box. args.map1, args.tw, args['map1-title'], args['map1-collapsible'], args['map1-collapse'] = args.map1 or args.map, args.tw or args['text-width'] or args['text width'], args['map1-title'] or args['map-title'], args['map1-collapsible'] or args['map-collapsible'], args['map1-collapse'] or args['map1-collapsed'] or args['map-collapse'] or args['map-collapsed'] local function map_prefix(x) return 'map'..x end local mapnums, prefix = {} if args[1] and args[1] ~= '' then prefix = tonumber for k, v in pairs(args) do if type(k) == 'number' then table.insert(mapnums, k) end end else prefix = map_prefix mapnums = getArgNums('map', args) table.sort(mapnums) end local classes = {} args['title bg color'] = args['title bg color'] or args['title bg'] or args['title-bg'] or '#27404E' args['title color'] = args['title color'] or args['title-color'] or greatercontrast{args['title bg color'], '#FFF', rgb_black} args.legend = args.legend or '' local navbar = require('Module:Navbar').navbar local navtable = {} if args.navbar then navtable = {args.navbar, mini = i18n.text.navbar_mini, text = i18n.text.navbar_text} args.navbar = navbar(navtable) else args.navbar = '' end local result = '' if args.inline then result = result..'&#32;\n' end result = result..'{|' args.collapse = args.collapse or args.collapsed if args.inline or negative(args.collapsible) then args.collapsible = '0' else table.insert(classes, 'collapsible') if args.collapse then table.insert(classes, 'collapsed') end end args.float = args.float or 'right' if args.float == 'right' then args.margin = 'margin-left:1em;' elseif args.float == 'left' then args.margin = 'margin-right:1em;' else args.margin = '' end args.fontsize2 = 10000/88 if args.inline then table.insert(classes, 'RMinline') args.fontsize = 100 else table.insert(classes, 'RMbox') args.fontsize = 88 -- as above: CSS rule for .infobox in % end args.bg = args.bg or '#F9F9F9' args.style = args.style or '' result = result .. 'class="' .. table.concat(classes, ' ') .. '" cellspacing="0" cellpadding="0" style="float:' .. args.float .. ';clear:' .. args.float .. ';margin-top:0;margin-bottom:1em;' .. args.margin .. 'empty-cells:show;border-collapse:collapse;font-size:' .. args.fontsize .. '%;background:' .. args.bg .. ';' .. args.style .. '"' args.title = args.title or '' if args.inline or args.title == 'no' or args.title == '0' then else result = result .. '\n! style="color:' .. args['title color'] .. ';background:' .. args['title bg color'] .. ';text-align:center;padding:5px"|' if args['navbar pos'] then result = result .. '<div>' else if args.navbar ~= '' then navtable.mini = true navtable.brackets = true navtable.style = 'float:left;margin-right:5px;white-space:nowrap' navtable.fontstyle = 'font-size:'..args.fontsize2..'%;color:' .. args['title color'] args.navbar = navbar(navtable) .. '<div style="margin-left:55px">' else args.navbar = '<div>' end result = result .. args.navbar end result = result .. '<div style="white-space:nowrap;' if args.collapsible == '0' and (args['navbar pos'] or args.navbar == '<div>') then else result = result .. 'margin-right:55px;' if args['navbar pos'] or args.navbar == '<div>' then result = result .. 'margin-left:55px;' end end result = result .. 'font-size:'..args.fontsize2..'%">' .. args.title .. '</div></div>' end args.top = args.top or args['on top'] if args.top then result = result .. '\n|-\n|style="padding:0px 5px;text-align:center;'..(args.topstyle or '')..'"|' .. args.top end result = result .. '\n|-\n|style="line-height:normal;padding:4px 5px"|' if args.navbar ~= '' and args['navbar pos'] == '1' then if not positive(args['navbar long']) and not negative(args['navbar mini']) then navtable.mini = true; args.navbar = navbar(navtable) end result = result .. '<div style="float:left;padding-right:5px">' .. args.navbar .. '</div>' end args.legend2 = mw.ustring.lower(args.legend) if args.legend2 ~= 'no' and args.legend2 ~= '0' then args.legend = i18n.text.legend[args.legend2] or ((args.legend2 ~= '') and ('[['..args.legend) or i18n.text.legend.default) args.legend = args.legend .. '|' .. (args['legend alt'] or i18n.text.legend_text) .. ']]' result = result .. '<div class="selfreference noprint" style="text-align:right;font-size:97%">' .. args.legend .. '</div>' end if args.inline then args.padding2 = '0px' else args.padding2 = '0px 6px' end for k, v in ipairs(mapnums) do if not mapnums[k + 1] then if not args.inline then args.padding2 = '0px 6px 6px' end end args.ending = '' if args['map'..v..'-title'] then args.header_margin = '0' if k == 1 then args.border_header = 'border-bottom: 5px solid '..args.bg..';' else args.border_header = 'border-top: 5px solid '..args.bg..';border-bottom: 5px solid '..args.bg..';' end if positive(args['map'..v..'-collapsible']) then args.header_margin = '0 55px' args.ending = '\n|}' if positive(args['map'..v..'-collapse']) or positive(args['map'..v..'-collapsed']) then args.map_collapsed = ' mw-collapsed autocollapse' else args.map_collapsed = '' end result = result..'\n|-\n|\n{|class="mw-collapsible'..args.map_collapsed..'" cellpadding="0" cellspacing="0" style="display:table;min-width:100%;margin:0 auto"' end if args.inline then args.header_style2 = ' style="line-height:normal"' else args.header_style2 = '' end result = result..'\n|-'..args.header_style2..'\n!style="'..args.border_header..'padding:3px 5px;text-align:center;vertical-align:middle;color:'..rgb_black..';background:#EEEEEE" | <div style="margin:'..args.header_margin..';font-size:'..10000/args.fontsize..'%">'..args['map'..v..'-title']..'</div>' args.border_top = '' else if k == 1 then args.border_top = '' else args.border_top = 'border-top: 5px solid '..args.bg..';' end end result = result .. '\n|-\n|style="'..args.border_top..'padding:' .. args.padding2 .. '"|\n{|class="nogrid routemap" style="font-size:'..(args.fontsize2 * .95)..'%"\n'..localroute(args[prefix(v)], (args['tw'..v] or args['text-width'..v] or args['text width'..v] or args.tw or ''), args.bg, args.process)..'\n|}'..args.ending end args.bottom = args.bottom or args.footnote if args.bottom then if args.inline then args.padding2 = '6px' else args.padding2 = '0px' end result = result .. '\n|-\n|style="line-height:normal;text-align:right;padding:' .. args.padding2 .. ' 5px 5px;'..(args.bottomstyle or args.footnotestyle or '')..'"|' .. args.bottom if string.find(args.bottom, '&action=edit') then result = result .. (i18n['error-categories']['separate-navbar'] or i18n['error-categories'].default) end end if args.navbar ~= '' and args['navbar pos'] == '2' then if negative(args['navbar long']) or positive(args['navbar mini']) then navtable.mini = true; args.navbar = navbar(navtable) end if args.inline and not args.bottom then args.padding2 = '6px' else args.padding2 = '0px' end result = result .. '\n|-\n|style="line-height:normal;padding:' .. args.padding2 .. ' 5px 3px;text-align:center"|' .. args.navbar end return result .. '\n|}' end local function base(t1,t2,link,stn,italic,it,it2,bold,align,style,bg1,bg2,line,fs1,fs2,lh,v1,swap,inp,bs) --Creates an inline table with two rows of text. Can be used in any Routemap text cell. --Implemented in the BSsplit, BSto, BSsrws and BScvt templates. if not align then if bs == 'cvt' then align = 'right' else align = 'inherit' end end style = style or '' local result = '&#32;<table cellspacing="0" cellpadding="0" style="font-weight:inherit;color:inherit;background:transparent;margin-top:-2px;margin-bottom:-2px;display:inline-table;vertical-align:middle;text-align:'..align if italic or it == 'all' then result = result..';font-style:italic' end if bold then result = result..';font-weight:bold' end local rowstart = '<tr><td style="text-align:inherit;padding:0;line-height:' result = result..';'..style..'">'..rowstart..lh if line then result = result..';border-bottom:1px solid gray' end local bgpad = ';padding-left:.5em;padding-right:.5em' local function bgtext(v) return ';color:'..greatercontrast{v, '#FFF', rgb_black} end if bg1 then result = result..bgpad..bgtext(bg1)..';background:'..bg1 elseif bg2 then result = result..bgpad end if fs1 then result = result..';font-size:'..fs1 end result = result..'">' if not t1 or string.find(t1, '^%s*$') then if not t2 then t2 = '' end if string.find(t2, '<br ?/?>') == nil then t1 = '&nbsp;' end end if not t2 or string.find(t2, '^%s*$') then if not t1 then t1 = '' end if string.find(t1, '<br ?/?>') == nil then t2 = '&nbsp;' end end if bs == 'srws' then if stn then link = t1..' '..t2..' '..stn else link = 'တႃႈလူတ်ႉလဵၼ်း '..t1..' '..t2 end elseif bs == 'cvt' then local split, floor, outp, v2, mult = mw.text.split, math.floor local function trim(x) return string.gsub(x, '%s', '') end local cvt = { -- conversion values ['mi'] = 1.609344, ['ch'] = 20.1168, ['mi;ch'] = 80, ['m'] = 1 / .9144, ['yd'] = .9144, ['ft'] = .3048, } local sf = { -- 10 ^ floor(log10(cvt[inp]) + .5); or 10 ^ floor(log10(cvt[inps[1]] * cvt[inp]) + .5) for dual-unit inputs. this corrects the accuracy of result so that it usually has same significant figures ['mi'] = 1, ['ch'] = 10, ['mi;ch'] = .01, ['m'] = 1, ['yd'] = 1, ['ft'] = .1, } if not inp then inp = 'mi' end inp = string.lower(trim(inp)) if inp == 'ch' or inp == 'yd' or inp == 'ft' then -- output unit outp = 'm' elseif inp == 'm' then outp = 'yd' else if inp ~= 'mi;ch' then inp = 'mi' end outp = 'km' end local pos = string.find(v1, '%.') if not pos then mult = 1 else mult = 10 ^ (string.len(v1) - pos) end local inps = string.find(inp, ';') if inps then inps = split(inp, ';') if swap then t1 = v1..'&nbsp;'..outp v1 = tonumber(v1) t2 = floor(v1 / cvt[inps[1]])..'&nbsp;'..inps[1]..'&nbsp;'..floor(v1 % cvt[inps[1]] / cvt[inps[1]] * cvt[inp] * mult * sf[inp] + .5) / mult / sf[inp]..'&nbsp;'..inps[2] else v1 = split(trim(v1), ';') t1 = v1[1]..'&nbsp;'..inps[1]..'&nbsp;'..v1[2]..'&nbsp;'..inps[2] t2 = floor((tonumber(v1[1]) * cvt[inps[1]] + tonumber(v1[2]) * cvt[inps[1]] / cvt[inp]) * mult / sf[inp] + .5) / mult * sf[inp]..'&nbsp;'..outp end else if swap then v2 = floor(tonumber(v1) / cvt[inp] * mult * sf[inp] + .5) / mult / sf[inp] inp, outp = outp, inp else v2 = floor(tonumber(v1) * cvt[inp] * mult / sf[inp] + .5) / mult * sf[inp] end t1 = v1..'&nbsp;'..inp t2 = v2..'&nbsp;'..outp end end if t1 then if link then result = result..'[['..link..'|'..t1..']]' else result = result..t1 end end local rowend = '</td></tr>' result = result..rowend..rowstart..lh if bg2 then result = result..bgpad..bgtext(bg2)..';background:'..bg2 elseif bg1 then result = result..bgpad end if fs2 then result = result..';font-size:'..fs2 end if (it ~= 'off' and bs == 'to') or it2 == 'italic' then result = result..';font-style:italic' elseif it == 'off' then result = result..';font-style:normal' end result = result..'">' if t2 then if link then result = result..'[['..link..'|'..t2..']]' else result = result..t2 end end result = result..rowend..'</table>&#32;' if bs == 'to' or bs == 'srws' then if t1 == '&nbsp;' or t2 == '&nbsp;' then result = result..(i18n['error-categories']['missing-text-values'] or i18n['error-categories'].default) end end if string.find(t1, '<br ?/?>') ~= nil or string.find(t2, '<br ?/?>') ~= nil then result = result..(i18n['error-categories']['br-tags'] or i18n['error-categories'].default) end if bs == 'split' then if link and t1 and t2 then if string.find(link, '^'..t1..' '..t2..' ') then result = result..(i18n['error-categories']['srws'] or i18n['error-categories'].default) end end end return result end p.BSto = makeInvokeFunction('_BSto') function p._BSto(args) args[3] = args[3] or args.L args[4] = args[4] or args.it or args.i args[5] = args[5] or args.b return base(args[1],args[2],args[3],nil,nil,args[4],nil,args[5],args.align,args.style,args.bg1,args.bg2,args.line,'105%','inherit','.9',nil,nil,nil,'to') end p.BSsplit = makeInvokeFunction('_BSsplit') function p._BSsplit(args) args[3] = args[3] or args.L args[4] = args[4] or args.it or args.i args[5] = args[5] or args.b return base(args[1],args[2],args[3],nil,args[4],nil,nil,args[5],args.align,args.style,args.bg1,args.bg2,args.line,'inherit','inherit','.9',nil,nil,nil,'split') end p.BSsrws = makeInvokeFunction('_BSsrws') function p._BSsrws(args) args[3] = args[3] or args.S args[4] = args[4] or args.it or args.i args[5] = args[5] or args.b return base(args[1],args[2],nil,args[3],args[4],nil,nil,args[5],args.align,args.style,args.bg1,args.bg2,args.line,'inherit','inherit','.9',nil,nil,nil,'srws') end p.BScvt = makeInvokeFunction('_BScvt') function p._BScvt(args) return base(nil,nil,nil,nil,nil,nil,args.alt,nil,args.align,args.style,args.bg1,args.bg2,args.line,'inherit','inherit','.9',args[1],args[2],args['in'],'cvt') end p.rmri = makeInvokeFunction('_rmri') function p._rmri(args)--[[ Displays a blue arrow pointing in one of eight directions. Implemented in the RoutemapRouteIcon template. ]] local directions, result = { ['Up'] = {'u', 'up'}, ['Down'] = {'d', 'dn', 'down'}, ['Left'] = {'l', 'left'}, ['Right'] = {'r', 'right'}, ['UpperRight'] = {'ur', 'ne', 'c1', 'upperright'}, ['LowerRight'] = {'lr', 'se', 'c2', 'lowerright'}, ['LowerLeft'] = {'ll', 'sw', 'c3', 'lowerleft'}, ['UpperLeft'] = {'ul', 'nw', 'c4', 'upperleft'}, } local d, link, size = args[1], args[2], args[3] if not d then if args[4] ~= ' ' then d, link, size = args[2], args[3], 's' end end for k, v in pairs(directions) do for _, name in ipairs(v) do if d:lower() == name then if size == 's' then size = '7' elseif not size then size = '10' end if not link then link = '' end result = '[[File:Arrow Blue '..k..' 001.svg|'..size..'px|alt='..k..' arrow|link='..link..']]' end end end if not result then return '<span style="color:#f00">Invalid [[Template:RoutemapRoute]] arrow value "<span style="font-style:italic">'..d..'</span>".</span>'..(i18n['error-categories']['rmr-error'] or i18n['error-categories'].default) else return result end end p.rmr = makeInvokeFunction('_rmr') function p._rmr(args)--[[ Displays text between two blue arrows (or to the left/right side of one). Text can be split with an en dash if entered in both first and second numbered parameters. Implemented in the RoutemapRoute template. ]] args.l = args.l or args.Licon or args.licon or args.L args.r = args.r or args.Ricon or args.ricon or args.R if args.l then args.l = p._rmri{args.l,args.llink,(args.lsize or args.size),' '}..'&nbsp;' else args.l = '' end if args.r then args.r = '&nbsp;'..p._rmri{args.r,args.rlink,(args.rsize or args.size),' '} else args.r = '' end if args[1] then if args[2] then args[1] = args[1]..'&nbsp;–&nbsp;'..args[2] end else args[1] = args[2] or '' end if args[1] == '' or args.enclosed == 'no' then args.b1, args.b2 = '', '' else args.b1, args.b2 = '(', ')' end return args.b1..args.l..args[1]..args.r..args.b2 end function p.BSrow(frame) local args = getArgs(frame, { parentOnly = true, removeBlanks = false, }) return p._BSrow(args) end function p._BSrow(args)--[[ Creates Routemap syntax for a diagram row based on parameters. Implemented in the RDTr template. ]] args.n = tonumber(args.n or '') if not args.n then local icontotal = getArgNums('', args) table.sort(icontotal) args.n = icontotal[#icontotal] or 1 end local count, icons, overlaps, overlapCalc = tonumber(args['$count']) or 1, {}, {}, math.log10(args.n) local text = (args.text and '*') or '' if overlapCalc == math.floor(overlapCalc) then overlapCalc = 10^(overlapCalc) else overlapCalc = 10^(math.floor(overlapCalc) + 1) end while count <= args.n do local cellparams, overlapn = {}, (string.match(count/overlapCalc, '%.(0+)') or '')..count table.insert(icons, (text..(args[count] or ''))) if args['O'..overlapn] then local iconparams, overlapparams, overlapt = {}, {}, {} for k, v in pairs({bg = (args['O'..overlapn..'0-bg'] or args['O'..overlapn..'0-background'] or args['O'..overlapn..'0-bgcolor']), color = (args['O'..overlapn..'0-color'] or args['O'..overlapn..'0-colour']), b = (args['O'..overlapn..'0-b'] or args['O'..overlapn..'0-bold']), i = (args['O'..overlapn..'0-i'] or args['O'..overlapn..'0-it'] or args['O'..overlapn..'0-italic']), align = args['O'..overlapn..'0-align'], fontsize = args['O'..overlapn..'0-fontsize'], abbr = args['O'..overlapn..'0-abbr'], style = args['O'..overlapn..'0-style']}) do if v then table.insert(iconparams, k..'='..v) end end if iconparams[1] then icons[count] = icons[count]..'__'..table.concat(iconparams, ',') end for k, v in pairs({bg = (args['O'..overlapn..'-bg'] or args['O'..overlapn..'-background'] or args['O'..overlapn..'-bgcolor']), color = (args['O'..overlapn..'-color'] or args['O'..overlapn..'-colour']), b = (args['O'..overlapn..'-b'] or args['O'..overlapn..'-bold']), i = (args['O'..overlapn..'-i'] or args['O'..overlapn..'-it'] or args['O'..overlapn..'-italic']), align = args['O'..overlapn..'-align'], fontsize = args['O'..overlapn..'-fontsize'], abbr = args['O'..overlapn..'-abbr'], style = args['O'..overlapn..'-style']}) do if v then table.insert(overlapparams, k..'='..v) end end if overlapparams[1] then args['O'..overlapn] = args['O'..overlapn]..'__'..table.concat(overlapparams, ',') end overlaps = getArgNums('O'..overlapn, args) or {} table.sort(overlaps) if overlaps[1] then for i, v in ipairs(overlaps) do overlapparams = {} for k, v2 in pairs({bg = (args['O'..overlapn..v..'-bg'] or args['O'..overlapn..v..'-background'] or args['O'..overlapn..v..'-bgcolor']), color = (args['O'..overlapn..v..'-color'] or args['O'..overlapn..v..'-colour']), b = (args['O'..overlapn..v..'-b'] or args['O'..overlapn..v..'-bold']), i = (args['O'..overlapn..v..'-i'] or args['O'..overlapn..v..'-it'] or args['O'..overlapn..v..'-italic']), align = args['O'..overlapn..v..'-align'], fontsize = args['O'..overlapn..v..'-fontsize'], abbr = args['O'..overlapn..v..'-abbr'], style = args['O'..overlapn..v..'-style']}) do if v2 then table.insert(overlapparams, k..'='..v2) end end if overlapparams[1] then args['O'..overlapn..v] = args['O'..overlapn..v]..'__'..table.concat(overlapparams, ',') end table.insert(overlapt, text..args['O'..overlapn..v]) end overlaps = '!~'..text..args['O'..overlapn]..'!~'..table.concat(overlapt, '!~') else overlaps = '!~'..text..args['O'..overlapn] end icons[count] = icons[count]..overlaps else if args[count..'-abbr'] then table.insert(cellparams, 'abbr='..args[count..'-abbr']) end end if args[count..'-link'] then icons[count] = icons[count]..'!@'..args[count..'-link'] end for k, v in pairs({bg = (args[count..'-bg'] or args[count..'-background'] or args[count..'-bgcolor']), color = (args[count..'-color'] or args[count..'-colour']), b = (args[count..'-b'] or args[count..'-bold']), i = (args[count..'-i'] or args[count..'-it'] or args[count..'-italic']), align = args[count..'-align'], fontsize = args[count..'-fontsize'], style = args[count..'-style']}) do if v then table.insert(cellparams, k..'='..v) end end if cellparams[1] then icons[count] = icons[count]..'!_'..table.concat(cellparams, ',') end count = count + 1 end local row, rowparams, left, right = table.concat(icons, '\\'), {} for k, v in pairs({bg = (args.bg or args.background or args.bgcolor), color = (args.color or args.colour), b = (args.b or args.bold), i = (args.i or args.it or args.italic), align = args.align, fontsize = args.fontsize, style = args.style}) do if v then table.insert(rowparams, k..'='..v) end end if rowparams[1] then args.R5 = table.concat(rowparams, ',') end for i, v in ipairs({'R1', 'R2', 'R3', 'R4', 'R5', 'L1', 'L2', 'L3', 'L4'}) do if not args[v] or string.find(args[v], '^%s*$') then args[v] = nil end end if args.R5 then right = {(args.R1 or ' '), (args.R2 or ' '), (args.R3 or ' '), (args.R4 or ' '), args.R5} elseif args.R4 then right = {(args.R1 or ' '), (args.R2 or ' '), (args.R3 or ' '), args.R4} elseif args.R3 then right = {(args.R1 or ' '), (args.R2 or ' '), args.R3} elseif args.R1 then right = {args.R1, (args.R2 or '')} elseif args.R2 then right = {args.R2} end if right then row = row..'~~'..table.concat(right, '~~') end if args.L4 then left = {args.L4, (args.L3 or ' '), (args.L2 or ' '), (args.L1 or '')} elseif args.L3 then left = {args.L3, (args.L2 or ' '), (args.L1 or '')} elseif args.L1 then left = {(args.L2 or ''), args.L1} elseif args.L2 then left = {args.L2} end if left then row = table.concat(left, '~~')..'! !'..row end return row end function p.BSrow_lite(frame) local args = getArgs(frame, { removeBlanks = false, }) return p._BSrow_lite(args) end function p._BSrow_lite(args)--[[ Creates Routemap syntax for a diagram row based on parameters. Intended to be used to substitute legacy templates. Note that for compatibility the link and sidebar parameter names are different. ]] args.n = tonumber(args.n or '') if not args.n then local icontotal = getArgNums('', args) table.sort(icontotal) args.n = icontotal[#icontotal] or 1 end local count, icons, overlaps, overlapCalc = tonumber(args['$count']) or 1, {}, {}, math.log10(args.n) local text = (args.text and '*') or '' if overlapCalc == math.floor(overlapCalc) then overlapCalc = 10^(overlapCalc) else overlapCalc = 10^(math.floor(overlapCalc) + 1) end while count <= args.n do local cellparams, overlapn = {}, (string.match(count/overlapCalc, '%.(0+)') or '')..count table.insert(icons, (text..(args[count] or ''))) if args['O'..overlapn] then local overlapt = {} overlaps = getArgNums('O'..overlapn, args) or {} table.sort(overlaps) if overlaps[1] then for i, v in ipairs(overlaps) do table.insert(overlapt, text..args['O'..overlapn..v]) end overlaps = '!~'..text..args['O'..overlapn]..'!~'..table.concat(overlapt, '!~') else overlaps = '!~'..text..args['O'..overlapn] end icons[count] = icons[count]..overlaps end if args['L'..count] then icons[count] = icons[count]..'!@'..args['L'..count] end count = count + 1 end local row, rowparams, left, right = table.concat(icons, '\\'), {} for k, v in pairs({bg = (args.bg or args.background or args.bgcolor), style = args.style}) do if v then table.insert(rowparams, k..'='..v) end end if rowparams[1] then args.r5 = table.concat(rowparams, ',') end for i, v in ipairs({'r1', 'r2', 'r3', 'r4', 'r5', 'l1', 'l2', 'l3', 'l4'}) do if not args[v] or string.find(args[v], '^%s*$') then args[v] = nil end end if args.r5 then right = {(args.r1 or ' '), (args.r2 or ' '), (args.r3 or ' '), (args.r4 or ' '), args.r5} elseif args.r4 then right = {(args.r1 or ' '), (args.r2 or ' '), (args.r3 or ' '), args.r4} elseif args.r3 then right = {(args.r1 or ' '), (args.r2 or ' '), args.r3} elseif args.r1 then right = {args.r1, (args.r2 or '')} elseif args.r2 then right = {args.r2} end if right then row = row..'~~'..table.concat(right, '~~') end if args.l4 then left = {args.l4, (args.l3 or ' '), (args.l2 or ' '), (args.l1 or '')} elseif args.l3 then left = {args.l3, (args.l2 or ' '), (args.l1 or '')} elseif args.l1 then left = {(args.l2 or ''), args.l1} elseif args.l2 then left = {args.l2} end if left then row = table.concat(left, '~~')..'! !'..row end return row end local function pre_block(text) -- Pre tags returned by a module do not act like wikitext <pre>...</pre>. return '<pre>' .. mw.text.nowiki(text) .. (text:sub(-1) == '\n' and '' or '\n') .. '</pre>\n' end function p.convertbs(frame)--[[ Converts a legacy route diagram into Routemap format. Code to be used is displayed in preview mode or after saving the page, above the original code. {{#invoke:Routemap|convertbs|<nowiki> (Original diagram) </nowiki>}} ]] local org = mw.text.unstripNoWiki(frame.args[1] or 'Paste legacy RDT markup between nowiki tags') local res = org res = string.gsub(res, '{{[Bb][Ss]%-?map', '{{Routemap') -- "%-" is an escape for hyphen which is used as "between" in pattern. res = string.gsub(res, '{|%s?{{[Rr]ailway line header}}', '{{Routemap') res = string.gsub(res, '{{[Bb][Ss]%-header%d?|', '{{safesubst:BS-header/safesubst|') -- "%d?" means optional digit in case use of variant template like BS-header3. res = string.gsub(res, '{{[Bb][Ss]%-table%d?}}', '|map =') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)|', '{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-replace|', '!replace{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-startCollapsible|', '-startCollapsible-collapsed\n{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-sc|', '-startCollapsible-collapsed\n{{safesubst:BS%1%2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%text|', '{{safesubst:BS%1%2text/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-2|', '{{safesubst:BS%1%2-2/safesubst|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-2replace|', '!replace{{safesubst:BS%1%2-2|') res = string.gsub(res, '{{[Bb][Ss](%d?)(%d?)%-2sc|', '-startCollapsible-collapsed\n{{safesubst:BS%1%2-2|') res = string.gsub(res, '{{!}}}', '-endCollapsible-') res = string.gsub(res, '{{[Ee]nd}}', '-endCollapsible-') res = string.gsub(res, '|}\n?|}', '}}') -- Replace ending of Railway line header map setup. res = string.gsub(res, '{{[Bb][Ss]%-colspan}}\n{{safesubst', '{{safesubst') -- BS-colspan is unnecessary and would cause error in Routemap. res = string.gsub(res, '{{[Bb][Ss]%-colspan}}\n%-%-%-%-', '-colspan-2\n----') res = string.gsub(res, '&lt;', '<') res = string.gsub(res, '&gt;', '>') if string.find(res, '!replace') or string.find(res, '|%s*bg%s*=') then local restable = mw.text.split(res, '\n') for i, v in ipairs(restable) do if string.find(v, '!replace') then restable[i] = string.gsub(restable[i], '!replace', '') restable[i-2] = string.gsub(restable[i-2], 'collapsed', 'collapsed-replace') end if (string.find(v, '|%s*bg%s*=%s*#?[a-zA-Z0-9]+') or string.find(v, '|%s*bg%s*=%s*#?{{[^{}]+}}%s*|') or string.find(v, '|%s*bg%s*=%s*#?{{[^{}]+}}%s*}}')) and string.find(restable[i-1], '^-startCollapsible') then local bg = string.match(v, '|%s*bg%s*=%s*(#?[a-zA-Z0-9]+)') or string.find(v, '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*|') or string.find(v, '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*}}') restable[i] = string.gsub(restable[i], '|%s*bg%s*=%s*'..bg, '') restable[i-1] = string.gsub(restable[i-1], '%-?$', '--bg=')..bg if string.find(restable[i+1], '!replace') then restable[i+1] = string.gsub(restable[i+1], '!replace', '') restable[i-1] = string.gsub(restable[i-1], 'collapsed%-', 'collapsed-replace') if (string.find(restable[i+1], '|%s*bg%s*=%s*#?[a-zA-Z0-9]+') or string.find(restable[i+1], '|%s*bg%s*=%s*#?{{[^{}]+}}%s*|') or string.find(restable[i+1], '|%s*bg%s*=%s*#?{{[^{}]+}}%s*}}')) then local bg2 = string.match(restable[i+1], '|%s*bg%s*=%s*(#?[a-zA-Z0-9]+)') or string.find(restable[i+1], '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*|') or string.find(restable[i+1], '|%s*bg%s*=%s*(#?{{[^{}]+}})%s*}}') if bg2 == bg then restable[i+1] = string.gsub(restable[i], '|%s*bg%s*=%s*'..bg2, '') end end end end end res = table.concat(restable, '\n') end return "\n'''Safe substitution''':\n" .. pre_block(res) .. "'''''Original''''':\n" .. pre_block(org) end return p 7i5jgep2x391a32jrvoa6xv6ng29rjf ထႅမ်းပလဵတ်ႉ:Stnlnk 10 24478 126484 50126 2026-06-13T12:25:22Z Saimawnkham 5 126484 wikitext text/x-wiki {{{{{|safesubst:}}}#if:{{{2|}}}|{{{{{|safesubst:}}}#ifexist:တႃႈလူတ်ႉလဵၼ်း_{{{1}}}_({{{2}}})|[[တႃႈလူတ်ႉလဵၼ်း_{{{1}}} ({{{2}}})|{{{3|{{{1}}}}}}]]|{{{{{|safesubst:}}}#ifexist:တႃႈလူတ်ႉလဵၼ်း_{{{1}}}_({{{2}}})|[[တႃႈလူတ်ႉလဵၼ်း_{{{1}}} ({{{2}}})|{{{3|{{{1}}}}}}]]|{{{{{|safesubst:}}}#ifexist:{{{1}}}_({{{2}}}_station)|[[{{{1}}} ({{{2}}} station)|{{{3|{{{1}}}}}}]]|{{{{{|safesubst:}}}#ifexist:{{{1}}}_station_({{{2}}})|[[{{{1}}} station ({{{2}}})|{{{3|{{{1}}}}}}]]|{{{{{|safesubst:}}}#ifexist:{{{1}}}_({{{2}}})|[[{{{1}}} ({{{2}}})|{{{3|{{{1}}}}}}]]|[[တႃႈလူတ်ႉလဵၼ်း_{{{1}}}၊ {{{2}}}|{{{3|{{{1}}}}}}]]}}}}}}}}}}|[[တႃႈလူတ်ႉလဵၼ်း_{{{1}}}|{{{3|{{{1}}}}}}]]}}<noinclude> {{documentation}}</noinclude> pn1yfosyn83nl8xtrdvm3hy01l2ynh9 ထႅမ်းပလဵတ်ႉ:ၽႅၼ်ႇလိၼ်တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ 10 37270 126482 2026-06-13T12:20:21Z Saimawnkham 5 ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "{{routemap |title = ၽႅၼ်ႇလိၼ်တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ |collapsible = 0 |width = 280px |map = ~~ လၵ်း ~~ တႃႈလူတ်ႉလဵၼ်း \\KBHFa~~၀/၀ ~~[[တႃႈလူတ်ႉလဵၼ်းလူင် တႃႈၵုင်ႈ|တႃႈၵုင်ႈ]] \\HST~~၃၈၅ ၁/၄ ~~ {{rws|တူဝ်..." 126482 wikitext text/x-wiki {{routemap |title = ၽႅၼ်ႇလိၼ်တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ |collapsible = 0 |width = 280px |map = ~~ လၵ်း ~~ တႃႈလူတ်ႉလဵၼ်း \\KBHFa~~၀/၀ ~~[[တႃႈလူတ်ႉလဵၼ်းလူင် တႃႈၵုင်ႈ|တႃႈၵုင်ႈ]] \\HST~~၃၈၅ ၁/၄ ~~ {{rws|တူဝ်းၶျၢၼ်ႇ}} \\HST~~ ၀/၄ ~~ {{rws|ၼိၼ်းသီႇၵူင်း}} \\HST~~ ၇ ၁/၄ ~~ {{rws|တူဝ်းၵျွင်ႇၵလေး}} \\\ABZgl\CONTfq~~{{small|ၸူးတႃႈႁိူဝ်းတီႇလဝႃႇ}} \\exCONTgq\ABZgr\~~ {{small|ၸူးၸၼ်ႉၸွမ်တၵူင်ႇ}} \\\DST\~~၁၂ ၃/၄ ~~{{rws|ယႂႃႇတႃႇၵျီး}} \\\HST\~~၁၆ ~~{{rws|လေးထွင်ႉၵၢၼ်ႇ}} \\\HST\~~၂၂ ၁/၂ ~~{{rws|တႃးပဵင်ႇ}} \\exCONTgq\ABZgr\~~ {{small|ၸူးၼွင်လေႃႇၵႃး}} \\\HST\~~၃၃ ၀/၁ ~~{{rws|ၵျွၵ်ႉတၢၼ်း}} \\\HST\~~၃၈ ၁/၄ ~~{{rws|တႃႇဝ}} \\\HST\~~၄၂ ၁/၂ ~~{{rws|ၽယႃးတူင်းသူႇ}} \\\BHF\~~၄၆ ၁/၂ ~~{{rws|ပႃႇၵိူဝ်}} \\\ABZgl\CONTfq~~{{small|ၸူးမေႃႇလမႅင်ႇ}} \\exCONTgq\ABZgr\~~ {{small|ၸူးတႃႈႁိူဝ်းမိၼ်ႁၢင်းသႃႇဝတီႇ}} \\\HST\~~၅၁ ၃/၄ ~~{{rws|သူၺ်ႇလေႇ}} \\\HST\~~၅၃ ၁/၂ ~~{{rws|သူၺ်ႇတၼ်ႇ}} \\\HST\~~၅၇ ~~{{rws|ၽယႃးၵျီး}} \\\HST\~~၅၉ ၁/၄ ~~{{rws|ၽယႃးၵလေး}} \\\HST\~~ ~~{{rws|ဝၼ်းပႄးဢိၼ်း}} \\\HST\~~၆၄ ၃/၄ ~~{{rws|ပျိၼ်ႇပူင်ႇၵျီး}} \\\HST\~~၆၈ ~~{{rws|ၵျႅၵ်ႉၸၵေႃး}} \\\HST\~~၇၁ ~~{{rws|ၵတူၵ်ႉ}} \\\HST\~~၇၅ ၃/၄ ~~{{rws|ၽွင်ႇတေႃႇတီႇ}} \\\HST\~~၈၁ ၁/၄ ~~{{rws|တၢႆႉဢူး}} \\\HST\~~၈၇ ၃/၄ ~~{{rws|ပျုၼ်ႇတၼ်ႇသႃႇ}} \\\HST\~~၉၀ ၁/၄ ~~{{rws|ငႃးထတ်ႉၵျီး}} \\\HST\~~၉၂ ၃/၄ ~~{{rws|ၺွင်ႇပိၼ်ႇလေး}} \\exCONTgq\ABZgr\~~ {{small|မတွၵ်ႉ}} \\\HST\~~၉၇ ၁/၂ ~~{{rws|တေႃႇဝီႇ}} \\\HST\~~၁၀၀ ၃/၄ ~~{{rws|ပဵင်းၸလူၵ်ႉ}} \\\HST\~~၁၀၆ ~~{{rws|တထေးၵူင်း}} \\\HST\~~၁၀၈ ၃/၄ ~~{{rws|ၵျွၵ်ႉတၶႃး}} \\\HST\~~၁၁၁ ၁/၂ ~~{{rws|ယိၼ်းတၢႆႉၵူင်း}} \\\HST\~~၁၁၄ ၁/၄ ~~{{rws|ပႄးၼွႆႇၵူၺ်း}} \\\HST\~~၁၁၉ ~~{{rws|တေႃးၵျွႆးဢိၼ်း}} \\\HST\~~၁၂၃ ၃/၄ ~~{{rws|ၵၺုတ်ႉၵႂိၼ်း}} \\\HST\~~၁၂၈ ၁/၂ ~~{{rws|ၺွင်ႇပိၼ်ႇတႃႇ}} \\\BHF\~~၁၃၄ ၁/၄ ~~{{rws|ၽျူး}} \\\HST\~~၁၃၈ ၁/၄ ~~{{rws|ၸေႇယဝတီႇ}} \\\HST\~~၁၄၃ ၁/၄ ~~{{rws|ၺွင်ႇၶျေႇထွၵ်ႉ}} \\\HST\~~၁၄၉ ၁/၄ ~~{{rws|ၵျွႆးပွႆး}} \\\HST\~~၁၅၂ ၃/၄ ~~{{rws|ပၢၼ်ႉပူၺ်းၵူင်း}} \\\HST\~~၁၅၈ ၁/၄ ~~{{rws|ဢူၵ်ႉတႂိၼ်း}} \\\HST\~~၁၆၁ ၃/၄ ~~{{rws|တွင်းတၢႆႇၵူင်း}} \\\BHF\~~၁၆၆ ~~{{rws|တွင်ႇဢူႈ}} \\\HST\~~၁၇၁ ၁/၂ ~~{{rws|ၵျေးတေႃး}} \\\HST\~~၁၇၅ ၁/၂ ~~{{rws|ၵျုၼ်းၵူင်း}} \\\HST\~~၁၈၀ ၁/၂ ~~{{rws|ၵေႇတုမတီႇ}} \\\HST\~~၁၈၃ ၁/၄ ~~{{rws|ယေႇတႃႇသျေႇ}} \\\HST\~~၁၈၇ ၁/၄ ~~{{rws|ၵူင်းၵျီး}} \\\HST\~~၁၉၁ ၁/၂ ~~{{rws|သႂႃႇ}} \\\HST\~~၁၉၅ ၁/၂ ~~{{rws|တႃႇၵရ}} \\\HST\~~၁၉၇ ၂/၄ ~~{{rws|တႃႇယႃႇၵူင်း}} \\\HST\~~၂၀၁ ၁/၄ ~~{{rws|မျူဝ်ႉလႃႉ}} \\\HST\~~၂၀၆ ၁/၂ ~~{{rws|ယေႇၼီႇ}} \\\HST\~~၂၁၀ ~~{{rws|တႃႇဝတ်ႉထိ}} \\\HST\~~၂၁၄ ~~{{rws|ထဵင်ႇဢိၼ်း}} \\\HST\~~၂၁၆ ၃/၄ ~~{{rws|ဢေႇလႃႇ}} \\\HST\~~၂၁၉ ၁/၄ ~~{{rws|ပျီႇဝိၼ်ႇ}} \\\BHF\~~၂၂၅ ~~{{rws|ပၢင်မၢၵ်ႇၼႃႉ}} \\\ABZgl\CONTfq~~{{small|ၸူးတွင်ႇတႂိၼ်းၵျီး}} \\\HST\~~၂၃၀ ~~{{rws|ယႂႃႇတေႃႇ}} \\\HST\~~၂၃၃ ~~{{rws|ၼေႇပျီႇတေႃႇ}} \\\HST\~~၂၃၅ ၁/၄ ~~{{rws|ၵျီႇတွင်ႇၵၢၼ်ႇ}} \\\HST\~~၂၄၀ ၁/၂ ~~{{rws|ၽျူၵ်ႉၶႂႄး}} \\\HST\~~၂၄၃ ၁/၂ ~~{{rws|သိၼ်ႇၽျူႇၵျုၼ်း}} \\\HST\~~၂၄၆ ၃/၄ ~~{{rws|သူၺ်ႇမျူဝ်ႉ}} \\\HST\~~၂၅၁ ~~{{rws|သိၼ်ႇတေႇ}} \\exCONTgq\ABZgr\~~ {{small|ၸူးလွႆၶေႃ}} \\\HST\~~၂၅၃ ၁/၂ ~~{{rws|တတ်ႉၵူင်း}} \\\HST\~~၂၅၇ ၁/၂ ~~{{rws|မၵျီးပိၼ်ႇ}} \\\HST\~~၂၆၁ ၁/၂ ~~{{rws|ၺွင်ႇလုၼ်း}} \\\HST\~~၂၆၈ ~~{{rws|ငႅတ်ႉတၢႆႉ}} \\\HST\~~၂၇၀ ၃/၄ ~~{{rws|ဢိၼ်းၵူင်း}} \\\BHF\~~၂၇၄ ၁/၂ ~~{{rws|ယမႄးတိၼ်း}} \\\HST\~~၂၇၈ ၁/၂ ~~{{rws|ဢိၼ်းၵျိၼ်းၵၢၼ်ႇ}} \\\HST\~~၂၈၂ ၁/၂ ~~{{rws|သူၺ်ႇတႃး}} \\\HST\~~၂၈၇ ၁/၂ ~~{{rws|ပျေႃႇပွႆႇ}} \\exCONTgq\ABZgr\~~{{small|ၸူးၽယႃးငႃးသူႇ}} \\\HST\~~၂၉၂ ၃/၄ ~~{{rws|သျၢၼ်းယႂႃႇ}} \\\HST\~~၂၉၉ ၁/၄ ~~{{rws|ၺွင်ႇယၢၼ်း}} \\\HST\~~၃၀၂ ၁/၄ ~~{{rws|ၼထူဝ်း}} \\\BHF\~~၃၀၆ ~~{{rws|တႃႇၸီႇ}} \\\ABZgl\CONTfq~~{{small|ၸူးမဵၵ်ႉထီႇလႃႇ}} \\\ABZgl\CONTfq~~{{small|ၸူးသူၺ်ႇၺွင်ႇ}} \\exCONTgq\ABZgr\~~{{small|ၸူးတၢင်းဝႄႈဝဵင်း တႃႇၸီႇ}} \\\HST\~~၃၁၀ ၁/၂ ~~{{rws|ယႂႃႇပလႄး}} \\\HST\~~၃၁၅ ၁/၂ ~~{{rws|ႁၢၼ်ႇၸၢၼ်း}} \\\HST\~~၃၁၈ ၁/၄ ~~{{rws|တႁတ်ႉတေႃႇ}} \\\HST\~~၃၂၅ ၃/၄ ~~{{rws|ၶိၼ်ႇပၢၼ်း}} \\\HST\~~၃၂၉ ~~{{rws|ၸမူင်ႇ}} \\\HST\~~၃၃၂ ၁/၄ ~~{{rws|ဢူဝ်းထူၵ်ႉၵူင်း}} \\\HST\~~၃၃၆ ၁/၄ ~~{{rws|တပျေႇတွင်း}} \\\HST\~~၃၄၁ ၁/၂ ~~{{rws|ၵူႇမႄး}} \\\HST\~~၃၄၇ ~~{{rws|မျိတ်ႉတႃး}} \\\HST\~~၃၅၉ ၁/၄ ~~{{rws|ၵျွၵ်ႉသႄႇ}} \\\HST\~~၃၆၃ ၁/၂ ~~{{rws|ပႄးလိၼ်း}} \\\HST\~~၃၆၉ ၃/၄ ~~{{rws|ၸိၼ်ႉၵၢႆႇ}} \\\HST\~~၃၇၄ ၁/၄ ~~{{rws|ပလဵၵ်ႉ}} \\\ABZgl\CONTfq~~{{small|ၸူးမျိၼ်းၶျၢၼ်ႇ}} \\\DST\~~၃၇၇ ၁/၄ ~~{{rws|မျိတ်ႉငႄႇ}} \\\HST\~~၃၈၀ ၁/၂ ~~{{rws|တၶုၼ်ႇတၢႆႇ}} \\\HST\~~၃၈၂ ၁/၂ ~~{{rws|မျူဝ်ႉႁွင်း}} \\\ABZgl\CONTfq~~{{small|ၸူးၶူဝ်ၸႄႈၵႅင်း}} \\\ABZgl\CONTfq~~{{small|ၸူးလႃႈသဵဝ်ႈ}} \\\HST\~~၃၈၉ ~~{{rws|သျၢၼ်းၸု}} \\\KBHFe\~~၃၉၀ ၁/၂ ~~{{rws|တႃႈလိူဝ်ႇ}} }} 53v8c9df5dxfn0xzrqgzaogu2qmc5jy တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ 0 37271 126483 2026-06-13T12:20:33Z Saimawnkham 5 ၵေႃႇသၢင်ႈၼႃႈလိၵ်ႈဝႆႉ တင်း "{{Infobox public transit |image=[[File:Myanmar at sunrise on the railway from Yangon to Mandalay.jpg|200px]] |caption=လႆႈႁၼ်သဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ။ |owner=[[လူတ်ႉလဵၼ်းမျၢၼ်ႇမႃႇ]] |locale= တႃႈလူတ်ႉလဵၼ်းလူင် တႃႈၵုင်ႈ-တႃႈ..." 126483 wikitext text/x-wiki {{Infobox public transit |image=[[File:Myanmar at sunrise on the railway from Yangon to Mandalay.jpg|200px]] |caption=လႆႈႁၼ်သဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ။ |owner=[[လူတ်ႉလဵၼ်းမျၢၼ်ႇမႃႇ]] |locale= တႃႈလူတ်ႉလဵၼ်းလူင် တႃႈၵုင်ႈ-တႃႈလူတ်ႉလဵၼ်းလူင် တႃႈလိူဝ်ႇ |stations= |train_length= |track_gauge={{Track gauge|1000mm|lk=on}} |began_operation=ပီ 1889 လိူတ်မၢတ်ႉၶျ် 10 |system_length= 385.5 လၵ်း | map = {{ၽႅၼ်ႇလိၼ်တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ}} }} 0bcwljvk7qv5cry8eeuvqje4npr6bpr 126485 126483 2026-06-13T12:35:32Z Saimawnkham 5 126485 wikitext text/x-wiki {{Infobox public transit |image=[[File:Myanmar at sunrise on the railway from Yangon to Mandalay.jpg|200px]] |caption=လႆႈႁၼ်သဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ။ |owner=[[လူတ်ႉလဵၼ်းမျၢၼ်ႇမႃႇ]] |locale= တႃႈလူတ်ႉလဵၼ်းလူင် တႃႈၵုင်ႈ-တႃႈလူတ်ႉလဵၼ်းလူင် တႃႈလိူဝ်ႇ |stations= |train_length= |track_gauge={{Track gauge|1000mm|lk=on}} |began_operation=ပီ 1889 လိူတ်မၢတ်ႉၶျ် 10 |system_length= 385.5 လၵ်း | map = {{ၽႅၼ်ႇလိၼ်တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ}} }} '''တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ''' ၼႆႉ ပဵၼ်သၢႆသဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်း ဢၼ်ၵွင်ႉသၢၼ်ဝႆႉတင်း ဝဵင်းလူင် မျၢၼ်ႇမႃႇ ၸိူဝ်းပဵၼ် [[ဝဵင်းတႃႈၵုင်ႈ]]၊ [[ၼေႇပျီႇတေႃႇ]] လႄႈ [[ဝဵင်ႈတႃႈလိူဝ်ႇ]] ၸိူဝ်းၼႆႉသေ လုၵ်ႉတီႈ [[လူတ်ႉလဵၼ်းမျၢၼ်ႇမႃႇ]] ၵေႃႉၸတ်းၵၢၼ်ဝႆႉယဝ်ႉ။ တၢင်းယၢဝ်းသဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်းၼႆႉ မီး 385.5 လၵ်းယဝ်ႉ။ ဝၢႆးသေပိုၼ်ႇ [[တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-ပျီႇ]]ယဝ်ႉ သၢႆသဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်းၼႆႉ ပဵၼ်တၢင်းလူတ်ႉလဵၼ်းထူၼ်ႈသွင် ၶွင် မိူင်းမျၢၼ်ႇမႃႇယဝ်ႉ။<ref name=":0">[https://www.florian-grupp.de/rmm/linesCentral.html Railways in Myanmar/Burma, Yangon – Mandalay (C20)](အင်္ဂလိပ်ဘာသာ) </ref> ==ၽိုၼ်ဢိင်== {{Reflist}} ma6olxw95lqc77j341negi4z43zfep9 126486 126485 2026-06-13T12:35:58Z Saimawnkham 5 126486 wikitext text/x-wiki {{Infobox public transit |image=[[File:Myanmar at sunrise on the railway from Yangon to Mandalay.jpg|200px]] |caption=လႆႈႁၼ်သဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ။ |owner=[[လူတ်ႉလဵၼ်းမျၢၼ်ႇမႃႇ]] |locale= တႃႈလူတ်ႉလဵၼ်းလူင် တႃႈၵုင်ႈ-တႃႈလူတ်ႉလဵၼ်းလူင် တႃႈလိူဝ်ႇ |stations= |train_length= |track_gauge={{Track gauge|1000mm|lk=on}} |began_operation=ပီ 1889 လိူတ်မၢတ်ႉၶျ် 10 |system_length= 385.5 လၵ်း | map = {{ၽႅၼ်ႇလိၼ်တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ}} }} '''တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ''' ၼႆႉ ပဵၼ်သၢႆသဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်း ဢၼ်ၵွင်ႉသၢၼ်ဝႆႉတင်း ဝဵင်းလူင် မျၢၼ်ႇမႃႇ ၸိူဝ်းပဵၼ် [[ဝဵင်းတႃႈၵုင်ႈ]]၊ [[ၼေႇပျီႇတေႃႇ]] လႄႈ [[ဝဵင်ႈတႃႈလိူဝ်ႇ]] ၸိူဝ်းၼႆႉသေ လုၵ်ႉတီႈ [[လူတ်ႉလဵၼ်းမျၢၼ်ႇမႃႇ]] ၵေႃႉၸတ်းၵၢၼ်ဝႆႉယဝ်ႉ။ တၢင်းယၢဝ်းသဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်းၼႆႉ မီး 385.5 လၵ်းယဝ်ႉ။ ဝၢႆးသေပိုတ်ႇ [[တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-ပျီႇ]] ယဝ်ႉ သၢႆသဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်းၼႆႉ ပဵၼ်တၢင်းလူတ်ႉလဵၼ်းထူၼ်ႈသွင် ၶွင် မိူင်းမျၢၼ်ႇမႃႇယဝ်ႉ။<ref name=":0">[https://www.florian-grupp.de/rmm/linesCentral.html Railways in Myanmar/Burma, Yangon – Mandalay (C20)](အင်္ဂလိပ်ဘာသာ) </ref> ==ၽိုၼ်ဢိင်== {{Reflist}} mcw6trq73gg91h2pkwniwzdpjosa7yd 126487 126486 2026-06-13T12:36:20Z Saimawnkham 5 126487 wikitext text/x-wiki {{Infobox public transit |image=[[File:Myanmar at sunrise on the railway from Yangon to Mandalay.jpg|200px]] |caption=လႆႈႁၼ်သဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ။ |owner=[[လူတ်ႉလဵၼ်းမျၢၼ်ႇမႃႇ]] |locale= တႃႈလူတ်ႉလဵၼ်းလူင် တႃႈၵုင်ႈ-တႃႈလူတ်ႉလဵၼ်းလူင် တႃႈလိူဝ်ႇ |stations= |train_length= |track_gauge={{Track gauge|1000mm|lk=on}} |began_operation=ပီ 1889 လိူတ်မၢတ်ႉၶျ် 10 |system_length= 385.5 လၵ်း | map = {{ၽႅၼ်ႇလိၼ်တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ}} }} '''တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-တႃႈလိူဝ်ႇ''' ၼႆႉ ပဵၼ်သၢႆသဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်း ဢၼ်ၵွင်ႉသၢၼ်ဝႆႉတင်း ဝဵင်းလူင် မျၢၼ်ႇမႃႇ ၸိူဝ်းပဵၼ် [[ဝဵင်းတႃႈၵုင်ႈ]]၊ [[ၼေႇပျီႇတေႃႇ]] လႄႈ [[ဝဵင်ႈတႃႈလိူဝ်ႇ]] ၸိူဝ်းၼႆႉသေ လုၵ်ႉတီႈ [[လူတ်ႉလဵၼ်းမျၢၼ်ႇမႃႇ]] ၵေႃႉၸတ်းၵၢၼ်ဝႆႉယဝ်ႉ။ တၢင်းယၢဝ်းသဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်းၼႆႉ မီး 385.5 လၵ်းယဝ်ႉ။ ဝၢႆးသေပိုတ်ႇ [[တၢင်းလူတ်ႉလဵၼ်း တႃႈၵုင်ႈ-ပျီႇ]] ယဝ်ႉ သၢႆသဵၼ်ႈတၢင်းလူတ်ႉလဵၼ်းၼႆႉ ပဵၼ်တၢင်းလူတ်ႉလဵၼ်းထူၼ်ႈသွင် ၶွင် မိူင်းမျၢၼ်ႇမႃႇယဝ်ႉ။<ref name=":0">[https://www.florian-grupp.de/rmm/linesCentral.html Railways in Myanmar/Burma, Yangon – Mandalay (C20)](ၽႃႇသႃႇဢိင်းၵလဵတ်ႈ) </ref> ==ၽိုၼ်ဢိင်== {{Reflist}} q9t6w0euxdcu2bxu9kdjtzbmxkno5pc