<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Notepad++ official documentation is online now]]></title><description><![CDATA[<p dir="auto"><a href="https://npp-user-manual.org/" rel="nofollow ugc">https://npp-user-manual.org/</a></p>
]]></description><link>https://community.notepad-plus-plus.org/topic/18172/notepad-official-documentation-is-online-now</link><generator>RSS for Node</generator><lastBuildDate>Wed, 17 Jun 2026 09:45:16 GMT</lastBuildDate><atom:link href="https://community.notepad-plus-plus.org/topic/18172.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Sep 2019 18:28:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Mon, 23 Sep 2019 13:32:57 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> said in <a href="/post/47299">Notepad++ official documentation is online now</a>:</p>
<blockquote>
<p dir="auto">one of your other hook(s),<br />
defines something slightly different and corrupts the message handling</p>
</blockquote>
<p dir="auto">Okay, I will go examine those others and use your way of doing it as the definitive way it should be done.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47324</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47324</guid><dc:creator><![CDATA[Alan Kilborn]]></dc:creator><pubDate>Mon, 23 Sep 2019 13:32:57 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Fri, 20 Sep 2019 20:36:35 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alan-kilborn" aria-label="Profile: Alan-Kilborn">@<bdi>Alan-Kilborn</bdi></a></p>
<p dir="auto">seems my code is correct and works on npp and PS 32bit version.<br />
According to MSDN <a href="https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowlongptrw" rel="nofollow ugc">SetWindowLongPtrW</a> is for x64 and SetWindowLongW for 32bit.<br />
WindowProc callback function returns <a href="https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms633573(v=vs.85)" rel="nofollow ugc">LRESULT</a> which is defined as <code>typedef LONG_PTR LRESULT;</code><br />
the same as LPARAM (wich is also typedef LONG_PTR LPARAM;)<br />
LONG_PTR is defined to be int64 on 64bit and long on 32bit</p>
<pre><code>#if defined(_WIN64)
 typedef __int64 LONG_PTR; 
#else
 typedef long LONG_PTR;
#endif
</code></pre>
<p dir="auto">So I don’t see a problem with my code what means that one of your other hook(s),<br />
defines something slightly different and corrupts the message handling, I guess.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47299</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47299</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Fri, 20 Sep 2019 20:36:35 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Fri, 20 Sep 2019 20:18:22 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alan-kilborn" aria-label="Profile: Alan-Kilborn">@<bdi>Alan-Kilborn</bdi></a></p>
<blockquote>
<p dir="auto">Are you glad I got you involved in this? :)</p>
</blockquote>
<p dir="auto">Yes of course :-D, and actually I do something similar with python3script while handling the<br />
menu items (in PS when you create a script it appears in the script menu - I do the same) so it is important for me as well.</p>
<p dir="auto">If you hook the message queue you need to ensure that data passed and provided do not get mangled in between<br />
because at then end npp needs to handle the messages as well.</p>
<p dir="auto">I actually never tested whether this codes work with 32bit and because of the following</p>
<pre><code>LRESULT = wintypes.LPARAM
CallWindowProc.restype = LRESULT


x86 = platform.architecture()[0] == '32bit'
SetWindowLong = user32.SetWindowLongW if x86 else user32.SetWindowLongPtrW
</code></pre>
<p dir="auto">it might be that I’m doing the wrong thing.<br />
Let me check with a npp 32bit version and msdn.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47298</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47298</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Fri, 20 Sep 2019 20:18:22 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Fri, 20 Sep 2019 20:06:57 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> said in <a href="/post/47293">Notepad++ official documentation is online now</a>:</p>
<blockquote>
<p dir="auto">Do you already have another HOOK registered?</p>
</blockquote>
<p dir="auto">Very likely.  Is this a problem?</p>
<blockquote>
<p dir="auto">Which Npp version and which PS version are you currently running?</p>
</blockquote>
<p dir="auto">7.7.1 32-bit PS1.3.0.0</p>
<p dir="auto">PS1.4.0.0 has a trivial amount of difference from 1.3.0.0 so that’s why.</p>
<blockquote>
<p dir="auto">This part is critical if it is already used but maybe slightly different defined.</p>
</blockquote>
<p dir="auto">This I don’t understand.</p>
<p dir="auto">Are you glad I got you involved in this? :)</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47297</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47297</guid><dc:creator><![CDATA[Alan Kilborn]]></dc:creator><pubDate>Fri, 20 Sep 2019 20:06:57 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Fri, 20 Sep 2019 18:37:56 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alan-kilborn" aria-label="Profile: Alan-Kilborn">@<bdi>Alan-Kilborn</bdi></a></p>
<p dir="auto">Do you already have another HOOK registered?<br />
Which Npp version and which PS version are you currently running?</p>
<p dir="auto">Right, in python3 it is called queue and in python2 it is called Queue.<br />
Removed the code but forgot to remove the import.</p>
<p dir="auto">This part is critical if it is already used but maybe slightly different defined.</p>
<pre><code>LRESULT = wintypes.LPARAM
ULONG_PTR = wintypes.LPVOID

WndProcType = ctypes.WINFUNCTYPE(LRESULT, wintypes.HWND, wintypes.UINT, wintypes.WPARAM, wintypes.LPARAM)

CallWindowProc = user32.CallWindowProcW
CallWindowProc.restype = LRESULT
CallWindowProc.argtypes = [WndProcType, wintypes.HWND, wintypes.UINT, wintypes.WPARAM, wintypes.LPARAM]

x86 = platform.architecture()[0] == '32bit'
SetWindowLong = user32.SetWindowLongW if x86 else user32.SetWindowLongPtrW
SetWindowLong.restype = WndProcType
SetWindowLong.argtypes = [wintypes.HWND, wintypes.INT, WndProcType]
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/47293</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47293</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Fri, 20 Sep 2019 18:37:56 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Fri, 20 Sep 2019 18:10:20 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a></p>
<p dir="auto">So, it <em>does</em> work to achieve the goal, but 2 immediate things were noticed.</p>
<ol>
<li>
<p dir="auto"><code>import queue</code> fails because there is no module <code>queue</code> in the Python that ships with Pythonscript.  However, this isn’t a real problem, because the code doesn’t even use <code>queue</code>.  Easy enough to remove the line.  Done.</p>
</li>
<li>
<p dir="auto">A bigger problem; when exiting Notepad++ after this “new feature” has been added, I get this, every time:</p>
</li>
</ol>
<p dir="auto"><img src="/assets/uploads/files/1569003013087-8e787af3-3493-427e-8d7a-ac34248faafa-image.png" alt="8e787af3-3493-427e-8d7a-ac34248faafa-image.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://community.notepad-plus-plus.org/post/47287</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47287</guid><dc:creator><![CDATA[Alan Kilborn]]></dc:creator><pubDate>Fri, 20 Sep 2019 18:10:20 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Thu, 19 Sep 2019 21:47:06 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/alan-kilborn" aria-label="Profile: Alan-Kilborn">@<bdi>Alan-Kilborn</bdi></a></p>
<p dir="auto">basically you run this once to register your menu items<br />
and the hook. Then every time you right click the tabbar menu you<br />
should see your newly created menu items.<br />
Not sure whether this is the most optimized version but I guess<br />
a good starting point.</p>
<p dir="auto">The critical parts is the notepad.allocateCmdID and passing this value<br />
to the menuitem wID field.</p>
<p dir="auto">MENU_MAPPER holds this id and the function which should get executed.</p>
<pre><code>from threading import Thread
import queue
import time

import ctypes
from ctypes import wintypes  
import platform

user32 = ctypes.WinDLL('user32', use_last_error=True)
MENU_MAPPER = {}

LRESULT = wintypes.LPARAM
ULONG_PTR = wintypes.LPVOID

WndProcType = ctypes.WINFUNCTYPE(LRESULT, wintypes.HWND, wintypes.UINT, wintypes.WPARAM, wintypes.LPARAM)

CallWindowProc = user32.CallWindowProcW
CallWindowProc.restype = LRESULT
CallWindowProc.argtypes = [WndProcType, wintypes.HWND, wintypes.UINT, wintypes.WPARAM, wintypes.LPARAM]

x86 = platform.architecture()[0] == '32bit'
SetWindowLong = user32.SetWindowLongW if x86 else user32.SetWindowLongPtrW
SetWindowLong.restype = WndProcType
SetWindowLong.argtypes = [wintypes.HWND, wintypes.INT, WndProcType]

CONFIGURATION = None

MFS_ENABLED = 0x0
MFS_DISABLED = 0x3
MIIM_STATE = 1
MIIM_ID = 2
MIIM_SUBMENU = 4
MIIM_STRING = 64
MFT_STRING = 0
MFS_ENABLED = 0

class MENUITEMINFO(ctypes.Structure):
    ''' Implements the winapi MENUITEMINFO structure'''
    _fields_ = [('cbSize', wintypes.UINT),
                ('fMask',  wintypes.UINT),
                ('fType',  wintypes.UINT),
                ('fState',  wintypes.UINT),
                ('wID',  wintypes.UINT),
                ('hSubMenu',  wintypes.HMENU),
                ('hbmpChecked',  wintypes.HBITMAP),
                ('hbmpUnchecked', wintypes.HBITMAP),
                ('dwItemData',  ULONG_PTR),
                ('dwTypeData',  wintypes.LPWSTR),
                ('cch',  wintypes.UINT),
                ('hbmpItem',  wintypes.HBITMAP),]


class Hook():

    def __init__(self):
        self.nppHandle = user32.FindWindowW(u'Notepad++', None)

    def register(self):
        self.newWndProc = WndProcType(self.MyWndProc)
        self.prevWndProc = SetWindowLong(self.nppHandle, -4, self.newWndProc)

    def MyWndProc(self, hWnd, msg, wParam, lParam):
        if msg == 273 and wParam in MENU_MAPPER:
            MENU_MAPPER[wParam]()

        # hand control back to npp
        return CallWindowProc(self.prevWndProc, hWnd, msg, wParam, lParam)

def modify_context_menu():
    i = 10
    tabbar_context_menu_hwnd = 0
    while i:
        tabbar_context_menu_hwnd = user32.FindWindowExW(None, None, u'#32768', None)
        if tabbar_context_menu_hwnd:
            menu_handle = user32.SendMessageW(tabbar_context_menu_hwnd, MN_GETHMENU, 0, 0)

            mii = MENUITEMINFO()
            mii.cbSize = ctypes.sizeof(mii)
            mii.fMask = MIIM_ID | MIIM_STRING
            mii.fType = MFT_STRING
            mii.fState = MFS_ENABLED

            startid = notepad.allocateCmdID(2)

            mii.wID = startid
            mii.dwTypeData = "TEST1"
            user32.InsertMenuItemW(menu_handle, 0, True, ctypes.byref(mii))
            MENU_MAPPER[startid] = lambda: console.write('TEST1 clicked\n')

            mii.wID = startid+1
            mii.dwTypeData = "TEST2"
            user32.InsertMenuItemW(menu_handle, 0, True, ctypes.byref(mii))
            MENU_MAPPER[startid+1] = lambda: console.write('TEST2 clicked\n')

            break

        else:
            time.sleep(.1)
            i -= 1

MN_GETHMENU = 0x1E1
t = Thread(target=modify_context_menu)
t.start()
notepad.triggerTabbarContextMenu(0,6)
t.join()
hook = Hook()
hook.register()
print('done')
</code></pre>
]]></description><link>https://community.notepad-plus-plus.org/post/47261</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47261</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Thu, 19 Sep 2019 21:47:06 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Thu, 19 Sep 2019 20:43:40 GMT]]></title><description><![CDATA[<p dir="auto">Just a word of warning - don’t run the current code unmodified as it might<br />
hang npp.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47259</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47259</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Thu, 19 Sep 2019 20:43:40 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Thu, 19 Sep 2019 20:35:53 GMT]]></title><description><![CDATA[<p dir="auto">for testing my notepad wrapper methods I’ve modified the test from the pythonscript plugin</p>
<pre><code>        from threading import Thread
        import queue
        item_count = -1
        def start_monitor(_q):
            MN_GETHMENU = 0x1E1
            i = 10
            tabbar_context_menu_hwnd = 0
            while i:
                tabbar_context_menu_hwnd = user32.FindWindowExW(None, None, '#32768', None)
                log(tabbar_context_menu_hwnd)
                if tabbar_context_menu_hwnd:
                    break
                else:
                    time.sleep(.1)
                    i -= 1

            if tabbar_context_menu_hwnd:
                menu_handle = user32.SendMessageW(tabbar_context_menu_hwnd, MN_GETHMENU, 0, 0)
                global item_count
                item_count = user32.GetMenuItemCount(menu_handle)
                _q.put(item_count)
                user32.SendMessageW(tabbar_context_menu_hwnd, WM_CLOSE, 0, 0)

        q = queue.Queue()
        t = Thread(target=start_monitor, args=(q,))
        t.start()
        self.assertIsNone(notepad.triggerTabbarContextMenu(0,0))
        t.join()
        item_count = q.get()
        self.assertNotEqual(item_count, -1, msg="Can't find popup menu")
        self.assertEqual(item_count, 28, msg=f'Expected 28 menu items but received:{item_count}')
</code></pre>
<p dir="auto">so yes, it is possible to use it as an starting point, I guess.<br />
Let me think about it.</p>
<blockquote>
<p dir="auto">I’m having a hard time believing that.</p>
</blockquote>
<p dir="auto">Then you better don’t check the official python mailing list :-(</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47257</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47257</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Thu, 19 Sep 2019 20:35:53 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Thu, 19 Sep 2019 20:23:38 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> said in <a href="/post/47253">Notepad++ official documentation is online now</a>:</p>
<blockquote>
<p dir="auto">Do you mean adding/removing on the fly aka at runtime?</p>
</blockquote>
<p dir="auto">I suppose I mean somehow achieving with P.S. a way to customize this (tab bar rclick context) menu, much like the regular (editor window rclick) context menu can be customized.  The <em>method</em> would be very different, but the results would be similar.</p>
<blockquote>
<p dir="auto">Lately I learned that my knowledge about python isn’t that good</p>
</blockquote>
<p dir="auto">I’m having a hard time believing that.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47255</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47255</guid><dc:creator><![CDATA[Alan Kilborn]]></dc:creator><pubDate>Thu, 19 Sep 2019 20:23:38 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Thu, 19 Sep 2019 20:20:49 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto">for adding/removing items</p>
</blockquote>
<p dir="auto">Do you mean adding/removing on the fly aka at runtime?<br />
If so, never thought about it.<br />
I assume hooking the window procedure is the way to go. Hmm, interesting.</p>
<blockquote>
<p dir="auto">Eko was certainly a master Pythonscripter</p>
</blockquote>
<p dir="auto">Lately I learned that my knowledge about python isn’t that good :-(</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47253</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47253</guid><dc:creator><![CDATA[Ekopalypse]]></dc:creator><pubDate>Thu, 19 Sep 2019 20:20:49 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Thu, 19 Sep 2019 20:17:31 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> Does the upvote mean you’re going to share something soon? :)</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47252</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47252</guid><dc:creator><![CDATA[Alan Kilborn]]></dc:creator><pubDate>Thu, 19 Sep 2019 20:17:31 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Thu, 19 Sep 2019 19:50:25 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/dinkumoil" aria-label="Profile: dinkumoil">@<bdi>dinkumoil</bdi></a> said:</p>
<blockquote>
<p dir="auto">Please add a chapter about context menu customization.</p>
</blockquote>
<p dir="auto">The old documentation for this is (sort of) <a href="http://web.archive.org/web/20190609210114/http://docs.notepad-plus-plus.org/index.php/Context_Menu" rel="nofollow ugc">here</a>.  Seems like it is not bad; could be used as a basis for something new.</p>
<p dir="auto">Reading it now, I see:</p>
<p dir="auto"><em>The Tab Bar Context Menu</em><br />
For completeness’ sake, there is another menu that would qualify as a context menu. It is the one that pops up when right clicking a tab in any view. However, there isn’t much to say about it here, as it is not configurable. This is not related with its being practical. <em><strong>Plugins can manipulate it.</strong></em></p>
<p dir="auto">The part I bolded got me thinking “I wonder if <a class="plugin-mentions-user plugin-mentions-a" href="/user/ekopalypse" aria-label="Profile: Ekopalypse">@<bdi>Ekopalypse</bdi></a> has some nice Pythonscript code for showing how to do this, for adding/removing items?”. Eko was certainly a master Pythonscripter for getting the Shortcut Mapper to cough up its mappings, so…  :)</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47249</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47249</guid><dc:creator><![CDATA[Alan Kilborn]]></dc:creator><pubDate>Thu, 19 Sep 2019 19:50:25 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Sun, 15 Sep 2019 10:35:40 GMT]]></title><description><![CDATA[<p dir="auto">Please add a chapter about context menu customization.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47145</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47145</guid><dc:creator><![CDATA[dinkumoil]]></dc:creator><pubDate>Sun, 15 Sep 2019 10:35:40 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Thu, 12 Sep 2019 20:47:11 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/allen-bai" aria-label="Profile: Allen-Bai">@<bdi>Allen-Bai</bdi></a> said:</p>
<blockquote>
<p dir="auto">To have the rating of this web page re-evaluated please click here.</p>
</blockquote>
<p dir="auto">it’s a newly-created domain, which is why it matches that “Newly Observed Domain” category.  Not much we can do about that.  You, however, apparently have a link you can click (you didn’t share a clickable link with us), so you should ask them to re-evaluate and determine whether this newly-observed-domain is safe.  (Seems to me, blocking newly created sites by default is a bit rude.)</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47062</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47062</guid><dc:creator><![CDATA[PeterJones]]></dc:creator><pubDate>Thu, 12 Sep 2019 20:47:11 GMT</pubDate></item><item><title><![CDATA[Reply to Notepad++ official documentation is online now on Thu, 12 Sep 2019 15:18:31 GMT]]></title><description><![CDATA[<p dir="auto">blocked…</p>
<p dir="auto">Powered By Fortinet<br />
FortiGuard Web Filtering<br />
blocked<br />
Web Page Blocked!<br />
You have tried to access a web page which is in violation of your internet usage policy.<br />
URL: <a href="https://npp-user-manual.org/" rel="nofollow ugc">https://npp-user-manual.org/</a><br />
Category: Newly Observed Domain<br />
User name:<br />
Group name:</p>
<p dir="auto">To have the rating of this web page re-evaluated please click here.</p>
]]></description><link>https://community.notepad-plus-plus.org/post/47054</link><guid isPermaLink="true">https://community.notepad-plus-plus.org/post/47054</guid><dc:creator><![CDATA[Allen Bai]]></dc:creator><pubDate>Thu, 12 Sep 2019 15:18:31 GMT</pubDate></item></channel></rss>