久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转载】SharpDevelop代码分析

發布時間:2025/5/22 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转载】SharpDevelop代码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【原文地址】http://www.cnblogs.com/passos/archive/2004/10/04/48950.html



??? 最近開始學習.Net,遇到了一個比較不錯的開源的IDE SharpDevelop。這個開發工具是使用C#開發的,比較吸引我的一點就是它是采用了和Eclipse類似的插件技術來實現整個系統的。而這個插件系統是我最感興趣的地方,因此開始了一段代碼的研究。在本篇之后,我會陸續把我研究的心得寫下來。由于是在網吧上網,有諸多不便,因此可能會拖比較長的時間。



一、基本概念

??? 首先,我們先來對 SharpDevelop 有一個比較感性的認識。你可以從這里下載到它的可執行程序和代碼包????http://www.icsharpcode.com/? ,安裝的廢話就不說了,先運行一下看看。感覺跟VS很像吧?不過目前的版本是1.0.0.1550,還有很多地方需要完善。關于代碼和系統結構,SharpDevelop的三個作者寫了一本書,各位看官可以參考一下,不過我看過之后還是有很多地方不太理解。

??? 然后,讓我來解釋一下什么叫插件以及為什么要使用插件系統。我們以往的系統,開發人員編譯發布之后,系統就不允許進行更改和擴充了,如果要進行某個功能的擴充,則必須要修改代碼重新編譯發布。這就給我們帶來了比較大的不方便。解決的方法有很多,例如提供配置等等方法。在解決方案之中,插件是一個比較好的解決方法。大家一定知道PhotoShop、WinAmp吧,他們都有“插件”的概念,允許其他開發人員根據系統預定的接口編寫擴展功能(例如PhotoShop中各種各樣的濾鏡)。所謂的插件就是系統的擴展功能模塊,這個模塊是以一個獨立文件的形式出現的,與系統是相對獨立。在系統設計期間并不知道插件的具體功能,僅僅是在系統中為插件留下預定的接口,系統啟動的時候根據插件的配置尋找插件,根據預定的接口把插件掛接到系統中。

??? 這樣的方式帶來什么樣的優點呢?首先是系統的擴展性大大的增強了,如果我們在系統發布后需要對系統進行擴充,不必重新編譯,只需要修改插件就可以了。其次有利與團隊開發,各個功能模塊由于是以插件的形式表現在系統中,系統的每日構造就很簡單了,不會因為某個模塊的錯誤而導致整個系統的BUILD失敗。失敗的僅僅是一個插件而已。

??? PhotoShop和Winamp的插件系統是比較簡單的,他們首先實現了一個基本的系統,然后在這個系統的基礎上掛接其他擴展的功能插件。而SharpDevelop的插件系統更加強大,它的整個系統的基礎就僅僅是一個插件管理系統,而你看到的所有的界面、功能統統都是以插件的形式掛入的。在這樣的一個插件系統下,我們可以不修改基本系統,僅僅使用插件就構造出各種各樣不同的系統。

??? 現在讓我們來看看它的插件系統。進入到SharpDevelop的安裝目錄中,在Bin目錄下的SharpDevelop.exe 和 SharpDevelop.Core.dll是這個系統的基本的插件系統。在Addins目錄下有兩個后綴是addin的文件,其中一個 SharpDevelopCore.addin 就是它的核心插件的定義(配置)文件,里面定義的各個功能模塊存在于Bin\Sharpdevelop.Base.dll 文件中,另外還有很多其他的插件定義在Addins目錄下的addin文件中。

??? 分析SharpDevelop的代碼,首先要弄清楚幾個基本的概念,這些概念和我以前的預想有一些區別,我深入了代碼之后才發現我的困惑所在。

1、AddInTree??插件樹
??? SharpDevelop 中的插件被組織成一棵插件樹結構,樹的結構是通過 Extension(擴展點)中定義的Path(路徑)來定義的,類似一個文件系統的目錄結構。系統中的每一個插件都在配置文件中指定了 Extension,通過Extension中指定的 Path 掛到這棵插件樹上。在系統中可以通過 AddTreeSingleton對象來訪問各個插件,以實現插件之間的互動。

2、?AddIn 插件
??? 在 SharpDevelop 的概念中,插件是包含多個功能模塊的集合(而不是我過去認為的一個功能模塊)。在文件的表現形式上是一個addin配置文件,在系統中對應 AddIn 類。

3、Extension 擴展點
??? SharpDevelop中的每一個插件都會被掛到 AddInTree(插件樹) 中,而具體掛接到這個插件樹的哪個位置,則是由插件的 Extension 對象中的 Path?指定的。在addin 配置文件中,對應于 <Extension> 。例如下面這個功能模塊的配置

<Extension?path?=?"/SharpDevelop/Workbench/Ambiences">
?????????
<Class?id????=?".NET"?class?=?"ICSharpCode.SharpDevelop.Services.NetAmbience"/>
?
</Extension>

指定了擴展點路徑為 /SharpDevelop/Workbench/Ambiences ,也就是在插件樹中的位置。

4、Codon
??? 這個是一個比較不好理解的東西,在 SharpDevelop 的三個作者寫的書的中譯版中被翻譯為密碼子,真是個糟糕的翻譯,可以跟Handle(句柄)有一拼了。詞典中還有一個翻譯叫“基碼”,我覺得這個也不算好,不過還稍微有那么一點意思。(這里我原來誤寫為“代碼子”,在評論中有位仁兄說這個翻譯不錯,現在我覺得也好像確實不錯 ^o^)
??? 根據我對代碼的理解,Codon 的功能是描述(包裝)一個功能模塊(一個功能模塊對應一個實現了具體功能的 Command 類)。為了方便訪問各個插件中的功能模塊, Codon 給各種功能定義了基本的屬性,分別是 ID (功能模塊的標識),Name (功能模塊的類型。別誤會,這個Name 是addin文件定義中Codon的XML結點的名稱,ID才是真正的名稱),其中Name可能是Class(類)、MenuItem(菜單項)、Pad(面板)等等。根據具體的功能模塊,可以繼承Codon定義其他的一些屬性,SharpDevelop中就定義了 ClassCodon、MenuItemCodon、PadCodon等等,你可以根據需要自己定義其他類型的Codon。在addin定義文件中,Codon對應于 <Extension> 標簽下的內容。例如下面這個定義

<Extension?path?=?"/SharpDevelop/Workbench/Ambiences">
?????????
<Class?id????=?".NET"?class?=?"ICSharpCode.SharpDevelop.Services.NetAmbience"/>
?
</Extension>

<Extension ...> 內部定義了一個Codon,<Class ...>? 表示該Codon是一個 Class(類),接著定義了該Codon的?ID和具體實現該Codon的類名ICSharpCode.SharpDevelop.Services.NetAmbience。運行期間將通過反射來找到對應的類并創建出來,這一點也是我們無法在以前的語言中實現的。

再例如這一個定義

?<Extension?path?=?"/SharpDevelop/Views/ProjectBrowser/ContextMenu/CombineBrowserNode">
????????????????
<MenuItem?id?=?"Compile"
??????????????????????????label?
=?"${res:XML.MainMenu.RunMenu.Compile}"?
??????????????????????????class?
=?"ICSharpCode.SharpDevelop.Commands.Compile"/>
????????????????
<MenuItem?id?=?"CompileAll"
??????????????????????????label?
=?"${res:XML.MainMenu.RunMenu.CompileAll}"?
??????????????????????????class?
=?"ICSharpCode.SharpDevelop.Commands.CompileAll"/>
????????????????
<MenuItem?id?=?"CombineBuildGroupSeparator"?label?=?"-"?/>
?.
</Extension>

這個擴展點中定義了三個菜單項,以及各個菜單項的名字、標簽和實現的類名。這里的Codon就對應于系統中的MenuCodon對象。

5、Command 命令
??? 正如前文所述,Codon描述了一個功能模塊,而每個功能模塊都是一個 ICommand 的實現。最基本的 Command 是? AbstractCommand,根據Codon的不同對應了不同的 Command。例如 MenuItemCodon 對應 MenuItemCommand 等等。

6、Service 服務
??? 插件系統中,有一些功能是整個系統都要使用的,例如文件訪問、資源、消息等等。這些功能都作為插件系統的一個基本功能為整個系統提供服務,我們就叫“服務”好了。為了便于訪問,這些服務都統一通過 ServiceManager 來管理。其實服務也是一種類型的插件,它們的擴展點路徑在目錄樹中的 /Workspace/Services 中。

??? 理解了這幾個基本的概念之后,就可以看看 SharpDevelop 的代碼了。從 src\main\startup.cs 看起吧,之后是addin.cs、addinTree.cs?等等。?


二、主程序+隱藏的初始化

?在大學課程里面,我對于模擬電路總是搞不清楚,直到現在也是這樣。我總覺得電路圖很奇怪,總會問“這部分電路是做什么用的”、“為什么會有這樣的效果”。在我的腦海里面,每部分的電路都應該有一定的用處,可是我總是看不明白。我媽媽說,我的思路被軟件所固化的太久了,看電路圖不應該總是一個個模塊的看,正確的方法應該是從電源的一極順著電路看,一直看到電源的另一極。我現在仍然不懂看電路圖,可是以我看代碼的經驗來說,我覺得分析源代碼按照這樣的思路來看會比較容易把脈絡理清楚。
?????在SharpDevelop的代碼中,由于很多的接口和插件的原因,很多代碼在看到某個地方會突然失去函數/方法調用的線索。例如看某個函數的實現的時候會跳到一個接口里面去,那是因為這部分功能在運行期才會給一個實現了這個接口的對象來進行具體的執行。從這個角度來說,設計模式也給我們研究代碼稍微帶來了一點小小的難度。在看Linux下源代碼的時候也經常遇到這種問題,在這個時候尋找代碼線索比較好的方法是用一個文本搜索工具來搜索相關的關鍵字。在Linux下我經常會用grep,Windows下面類似UltraEdit的“批量文件查找”功能會很好用(或者“Search And Replace”之類的工具)。這個是我讀代碼的一點小小的經驗,如果你知道有更好的方法,請告訴我讓我也學習一下 ? 。
?????我不想大段大段的貼代碼出來占地方(空間、帶寬,還有各位看官的注意力),在需要的地方我會貼上主要的代碼,因此最好能夠找代碼來對應著看。把代碼包解壓縮,我把它解到了“F:\SharpDevelop”(如果沒有說明,下文都是以此為代碼的根目錄了)。由于SharpDevelop本身對于察看代碼不是很方便,沒有“轉到定義”之類的功能,因此我建議你把它的代碼轉成VS的工程來看。不過很可惜,SharpDevelop的工程導出功能現在有問題,如果導出\src\SharpDevelop.cmbx 這個總的復合工程的話會失敗(我記得RC1版本是可以成功的,不知道為什么后來的版本反而會出問題),所以只能一個一個工程的導出。
?????好了,讓我們來看SharpDevelop的代碼吧。
1、起點
??? 在主程序的起點在\src\Main\StartUp\SharpDevelopMain.cs,找到Main函數這就是整個程序的起點了。開始的部分是顯示封面窗體并加上命令行控制,其中SplashScreenForm 定義在\src\Main\Base\Gui\Dialogs\SplashScreen.cs文件中,這部分我就不多說了。之后是 Application.ThreadException?+=?new?ThreadExceptionEventHandler(ShowErrorBox);

??? SharpDevelop為了有效的進行錯誤報告,因此自己進行了異常的控制。系統出現異常的時候,SharpDevelop會攔截下來彈出它自己的異常提示報告對話框。這個代碼就是在這一行實現的。其中 ShowErrorBox 這個方法就在類SharpDevelopMain中,ExceptionBox 定義在\src\Main\StartUp\Dialogs\ExceptionBox.cs中。如果需要進行自己的異常控制,可以學習一下這里的技巧。

2、充滿玄機的初始化

string?[]?addInDirs?=?ICSharpCode.SharpDevelop.AddInSettingsHandler.GetAddInDirectories(?out?ignoreDefaultPath?);
AddInTreeSingleton.SetAddInDirectories(addInDirs,?ignoreDefaultPath);

??? 通過AddInSettingsHandler取得插件的目錄,并告知AddInTreeSingleton。AddInSettingsHandler定義在\src\Main\StartUp\Dialogs\AddInTreeSettingsHandler.cs中,它通過讀取系統配置(App.config)文件中的AddInDirectory節點的Path屬性來確定插件的目錄位置,或者你也可以通過自己定義的AddInDirectories節來指定插件目錄。如果你沒有做這些配置,默認的目錄在SharpDevelop運行目錄的..\Addins目錄下。

ServiceManager.Services.AddService(new?MessageService());
ServiceManager.Services.AddService(
new?ResourceService());
ServiceManager.Services.AddService(
new?IconService());

??? 通過ServiceManager(服務管理器)加入三個系統默認的服務,消息服務、資源服務、圖標服務。這三個服務中,消息服務是顯示各種信息提示,另外兩個是屬于系統的資源,SharpDevelop通過服務來進行統一調用和管理。
ServiceManager.Services.InitializeServicesSubsystem("/Workspace/Services");

??? 初始化其他的服務。SharpDevelop把服務定義在插件樹的/Workspace/Services這個路徑中,凡是在這個路徑下的插件都被認為是服務,因此如果你自己定義了一個服務的話,也需要掛到這個路徑下(這里就是系統服務的擴展點了)。

??? 注意!這一步中,在我們的眼皮子底下悄悄的進行了一個重要的初始化工作。各位看官請看,ServiceManager 定義在\src\Main\Core\Services\ ServiceManager.cs文件中,察看它的InitializeServicesSubsystem方法,我們發現這樣一行

AddServices((IService[])AddInTreeSingleton.AddInTree.GetTreeNode(servicesPath).BuildChildItems(this).ToArray(typeof(IService)));

??? 在這里,AddInTreeSingleton首次調用了AddInTree(插件樹)的實例。按照Singleton模式,只有在首次調用的時候才會初始化實例,這里也是同樣如此。整個系統的AddInTree是在這一步中進行了初始化工作,稍候我們將詳細介紹AddInTree如何進行初始化工作,先順便看看服務的初始化。在ServiceManager的InitializeServicesSubsystem方法中,通過AddInTree檢索服務插件路徑下的所有配置,并通過它來讀取、建立具體的對象,然后加入到服務列表中。之后通過一個循環,逐個的調用各個服務的InitializeService方法初始化服務。

??? AddInTree的初始化工作容我們稍候再看,先把主體的代碼看完。

commands = AddInTreeSingleton.AddInTree.GetTreeNode("/Workspace/Autostart").BuildChildItems(null);
for (int i = 0; i < commands.Count - 1; ++i)
{
?((ICommand)commands[i]).Run();
}

??? /Workspace/Autostart是系統自動運行命令的擴展點路徑,定義在這個路徑下的插件會在系統啟動的時候自動運行。在這里,通過插件樹初始化建立處于這個路徑下的Command(命令),并逐一執行。BuildChildItems方法的功能是建立這個擴展點下的Command列表,我會在介紹AddTree的時候具體說明它的實現。

???? 主程序代碼的最后,初始化完畢、關閉封面窗體,然后執行命令列表中最后一個命令(也就是系統的主界面)。在主界面退出的時候,系統卸載所有的服務。

??? 在這部分代碼中,我們知道了兩個系統指定的擴展點路徑 /Workspace/Services 和 /Workspace/Autostart ,我們實現服務和指定系統自動運行命令的時候就可以掛到這兩個擴展點路徑下了。
???? 托反射的福,ServiceManager.Services可以通過類型(接口)來查找具體的實例,也就是GetServices方法。但是ServiceManager的具體實現我們可以容后再看,這里已經不是最緊要的部分了。
???? 接下來,我們來看看整個插件系統的核心-AddinTree的代碼,看看它是如何通過插件配置進行初始化并建立起整個系統的插件樹骨干。

三、插件系統

?? 上回書說到SharpDevelop入口Main函數的結構,ServiceManager.Service在InitializeServicesSubsystem方法中首次調用了AddInTreeSingleton的AddInTree實例,AddInTree在這里進行了初始化。本回進入AddInTree著重講述SharpDevelop的插件系統。在敘述的時候為了方便起見,對于“插件”和插件具體的“功能模塊”這兩個詞不會特別的區分,各位看官可以從上下文分辨具體的含義(而事實上,SharpDevelop中的“插件”是指.addin配置文件,每一個“插件”都可能會包含多個“功能模塊”)。

1、插件的配置
?? 既然說到插件系統,那么我們先來看一看SharpDevelop插件系統的組織形式。
?? 很多時候,同一個事物從不同的角度來看會得出不一樣的結論,SharpDevelop的插件系統也是如此。在看SharpDevelop的代碼以前,按照我對插件的理解,我認為所謂的“插件”就是代表一個功能模塊,插件的配置就是描述該插件并指定如何把這個插件掛到系統中。SharpDevelop中有插件樹的思想,也就是每一個插件在系統中都有一個擴展點的路徑。那么按照我最初對插件的理解,編寫插件需要做的就是:
?? A、根據插件接口編寫功能模塊實現一個Command類
?? B、編寫一個配置文件,指定Command類的擴展點(Extension)路徑,掛到插件樹中

?? 之后按照這樣的理解,我編寫了一個察看插件樹的插件AddinTreeView,打算掛到SharpDevelop中去。根據SharpDevelop對插件的定義,我把具體插件的AddinTreeViewCommand實現了之后,編寫了一個配置文件AddinTreeView.addin如下:

<AddIn?name????????=?"AddinTreeView"
???????author??????
=?"SimonLiu"
???????copyright???
=?"GPL"
???????url?????????
=?"http://www.icsharpcode.net"
???????description?
=?"Display?AddinTree"
???????version?????
=?"1.0.0">

?
<Runtime>
??
<Import?assembly="http://www.cnblogs.com/bin/?AddinTreeView.dll"/>
?
</Runtime>

?
<Extension?path?=?"/SharpDevelop/Workbench/MainMenu/Tools">
??
<MenuItem?id?=?"AddinTreeView"?
???label?
=?"View?AddinTree"?
???class?
=?"Addins.AddinTreeView.AddinTreeViewCommand"/>
?
</Extension>?
</AddIn>


?? 在配置文件中,Runtime節指定了插件功能模塊所在的庫文件Addins.dll的具體路徑,在Extension節中指定了擴展點路徑/SharpDevelop/Workbench/MainMenu/Tools(我是打算把它掛到主菜單的工具菜單下),然后在Extension內指定了它的Codon為 MenuItem以及具體的ID、標簽、Command類名。這樣做,SharpDevelop運行的很不錯,我的插件出現在了Tools菜單下。之后,我又編寫了一個SharpDevelop的資源管理器(ResourceEditor)的插件類ResourceEditor.dll并把它掛到Tool菜單下。同樣的,我也寫了一個ResourceEditor.addin文件來對應。系統工作的很正常。

?? 如果我們對于每一個插件都編寫這樣的一個配置文件,那么插件的庫文件(.dll)、插件配置文件(.addin)是一一對應的。不過這樣就帶來了一個小小的問題,在這樣的一個以插件為基礎的系統中,每一個菜單、工具欄按鈕、窗體、面板都是一個插件,那么我們需要為每一個插件編寫配置文件,這樣就會有很多個配置文件(似乎有點太多了,不是很好管理)。SharpDevelop也想到了這個問題,于是它允許我們把多個插件的配置合并在一個插件的配置文件中。因此,我把我的兩個插件庫文件合并到一個Addins工程內生成了Addins.dll,又重新編寫了我的插件配置文件MyAddins.addin如下:

<AddIn?name????????=?"MyAddins"
???????author??????
=?"SimonLiu"
???????copyright???
=?"GPL"
???????url?????????
=?"http://www.icsharpcode.net"
???????description?
=?"Display?AddinTree"
???????version?????
=?"1.0.0">

?
<Runtime>
??
<Import?assembly="http://www.cnblogs.com/bin/Addins.dll"/>
?
</Runtime>

?
<Extension?path?=?"/SharpDevelop/Workbench/MainMenu/Tools">
??
<MenuItem?id?=?"ResourceEditor"?
???label?
=?"Resource?Editor"?
???class?
=?"Addins.ResourceEditor.Command.ResourceEditorCommand"/>?
??
<MenuItem?id?=?"AddinTreeView"?
???label?
=?"View?AddinTree"?
???class?
=?"Addins.AddinTreeView.AddinTreeViewCommand"/>?
?
</Extension>?
</AddIn>


?? 這樣,我把兩個插件的功能模塊使用一個插件配置文件來進行配置。同樣的,我也可以把幾十個功能模塊合并到一個插件配置文件中。SharpDevelop把這個插件配置文件稱為“Addin(插件)”,而把具體的功能模塊封裝為Codon,使用Command類來包裝具體的功能。SharpDevelop本身的核心配置SharpDevelopCore.addin里面就包含了所有的基本菜單、工具欄、PAD的插件配置。
我們回過頭來看一下,現在我們有了兩顆樹。首先,插件樹本身是一個樹形的結構,這個樹是根據系統所有插件的各個Codon的擴展點路徑構造的,表示了各個Codon在插件樹中的位置,各位看官可以通過我寫的這個小小的AddinTreeView來看看SharpDevelop中實際的結構。其次,插件的配置文件本身也具有了一個樹形的結構,這個樹結構的根節點是系統的各個插件配置文件,其下是根據這個配置文件中的Extension節點的來構成的,描述了每個Extension節點下具有的Codon。我們可以通過SharpDevelop的Tools菜單下的AddinScout來看看這個樹的結構。
我為了試驗,把SharpDevelop的插件精簡了很多,構成了一個簡單的小插件系統。下面是這個精簡系統的兩個樹的截圖。各位看官可以通過這兩副圖理解一下插件樹和插件配置文件的關系(只是看同樣問題的兩個角度,一個是Codon的ExtensionPath,一個是配置文件的內容)。


總結一下SharpDevelop插件的配置文件格式。首先是 <AddIn>節點,需要指定AddIn的名稱、作者之類的屬性。其次,在AddIn節點下的<Runtime>節點內,使用<Import …>來指定本插件配置中Codon所在的庫文件。如果分布在多個庫文件中,可以一一指明。然后,編寫具體功能模塊的配置。每個功能模塊的配置都以擴展點<Extension>開始,指定了路徑(Path)屬性之后,在這個節點內配置在這個擴展點下具體的Codon。每個Codon根據具體不同的實現有不同的屬性。各位看官可以研究一下SharpDevelop的核心配置文件SharpDevelopCore.addin的寫法,相信很容易理解的。

2、插件系統的核心AddIn和AddInTree
?? 前文講到,在SharpDevelop的Main函數中,ServiceManager.Service在InitializeServicesSubsystem方法中首次調用了AddInTreeSingleton的AddInTree實例,AddinTree在這個時候進行了初始化。現在我們就來看看AddInTreeSingleton.AddInTree到底做了些什么事情,它定義在\src\Main\Core\AddIns\AddInTreeSingleton.cs文件中。

???public?static?IAddInTree?AddInTree?
???
{
??????
get?
??????
{
?????????
if?(addInTree?==?null)?
?????????
{
????????????CreateAddInTree();
?????????}

?????????
return?addInTree;
??????}

???}

?? AddInTreeSingleton是插件樹的一個Singleton(具體的可以去看《設計模式》了),AddInTreeSingleton.AddInTree是一個屬性,返回一個IAddinTree接口。這里我注意到一點,AddInTreeSingleton是從DefaultAddInTree繼承下來的。既然它是一個單件模式,包含的方法全部都是靜態方法,沒有實例化的必要,而且外部是通過AddInTree屬性來訪問插件樹,為什么要從DefaultAddInTree繼承呢?這好像沒有什么必要。這也許是重構過程中被遺漏的一個小問題吧。

?? 我們先來看看IAddinTree接口的內容,它定義了這樣的幾個內容:
????? A、屬性ConditionFactory ConditionFactory 返回一個構造條件的工廠類,這里的條件是指插件配置中的條件,我們以后再詳細說明。
????? B、屬性CodonFactory CodonFactory 返回一個構造Codon的工廠類。
????? C、屬性AddInCollection AddIns 返回插件樹的根節點Addin(插件)集合。
????? D、方法IAddInTreeNode GetTreeNode(string path) 根據擴展點路徑(path)返回對應的樹節點
????? E、方法void InsertAddIn(AddIn addIn) 根據AddIn中的擴展點路徑添加一個插件到樹中
????? F、方法void RemoveAddIn(AddIn addIn) 刪除一個插件
????? G、方法Assembly LoadAssembly(string assemblyFile)? 讀入插件中Runtime節的Import指定的Assembly,并構造相應的CodonFactory和CodonFactory類。

?? AddInTreeSingleton在首次調用AddInTree的時候會調用CreateAddInTree方法來進行初始化。CreateAddInTree方法是這樣實現的:

addInTree?=?new?DefaultAddInTree();

????? 初始化插件樹為DefaultAddInTree的實例,這里我感受到了一點重構的痕跡。首先,DefaultAddInTree從名稱上看是默認的插件樹(既然是默認,那么換句話說還可以有其他的插件樹)。但是SharpDevelop并沒有給外部提供使用自定義插件樹的接口(除非我們修改這里的代碼),也就是說這個名稱并不像它本身所暗示的那樣。其次,按照Singleton通常的寫法以及前面提到AddInTreeSingleton是從DefaultAddInTree繼承下來的疑問,我猜想DefaultAddinTree的內容本來是在AddinTreeSingleton里面實現的,后來也許為了代碼的條理性,把實現IAddinTree內容的代碼剝離了出去,形成了DefaultAddinTree類。至于繼承DefaultAddInTree的問題,也許這里本來是一個AddInTree的基類。這是題外話,也未加證實,各位看官可以不必放在心上(有興趣的可以去找找以前SharpDevelop的老版本的代碼來看看)。
這里有兩個察看代碼的線路,一個是DefaultAddInTree的構造函數的代碼,在這個構造函數中構造了Codon和Condtion的工廠類。另外一個是CreateAddInTree后面的代碼,搜索插件文件,并根據插件文件進行AddIn的構造。各位看官可以選擇走分支線路,也可以選擇先看主線(不過這樣你會漏掉不少內容)。

2.1 支線 (DefaultAddInTree的構造函數)
?? 我們把CreateAddInTree的代碼中斷一下壓棧先,跳到DefaultAddInTree的構造函數中去看一看。DefaultAddInTree定義在\src\Main\Core\AddIns\DefaultAddInTree.cs文件中。在DefaultAddInTree的構造函數中,注意到它具有一個修飾符internal,也就是說這個類只允許Core這個程序集中的類對DefaultAddInTree進行實例化(真狠啊)。構造函數中的代碼只有一句:

?LoadCodonsAndConditions(Assembly.GetExecutingAssembly());

?? 雖然只有一行代碼,不過這里所包含的內容卻很精巧,是全局的關鍵,要講清楚我可有得寫了。首先,通過全局的Assembly對象取得入口程序的Assembly,傳入LoadCodonsAndConditions方法中。在該方法中,枚舉傳入的Assembly中的所有數據類型。如果不是抽象的,并且是AbstractCodon的子類,并且具有對應的CodonNameAttribute屬性信息,那么就根據這個類的名稱建立一個對應的CodonBuilder并它加入CodonFactory中(之后對Condition也進行了同樣的操作,我們專注來看Codon部分,Condition跟Codon基本上是一樣的)。
?? 這里的CodonFactory類和CodonBuilder類構成了SharpDevelop插件系統靈活的基礎,各位看官可要看仔細了。
?? 我們以實例來演示,以前文我編寫的AddinTreeViewCommand為例。在入口的Assembly中會搜索到MenuItemCodon,它是AbstractCodon的一個子類、包裝MenuItem(菜單項)Command(命令)的Codon。符合條件,執行

codonFactory.AddCodonBuilder(new?CodonBuilder(type.FullName,?assembly));

?? 首先根據類名MenuItemCodon和assembly 構造CodonBuilder。CodonBuilder定義在\src\Main\Core\AddIns\Codons\CodonBuilder.cs文件中。在CodonBuilder的構造函數中根據MenuItemCodon的CodonNameAttribute屬性信息取得該Codon的名稱MenuItem。CodonNameAttribute描述了Codon的名稱,這個MenuItem也就是在.addin配置文件中對應的<MenuItem>標簽,后文會看到它的重要用途。在CodonBuilder中除了包含了該Codon的ClassName(類名)和CodonName屬性之外,就只有一個方法BuildCodon了。

??public?ICodon?BuildCodon(AddIn?addIn)
??
{
???ICodon?codon;
???
try?{
????
//?create?instance?(ignore?case)
????codon?=?(ICodon)assembly.CreateInstance(ClassName,?true);
????
????
//?set?default?values
????codon.AddIn?=?addIn;
???}
?catch?(Exception)?{
????codon?
=?null;
???}

???
return?codon;
??}


?? 很明顯,BuildCodon根據構造函數中傳入的assembly和類型的ClassName,建立了具體的Codon的實例,并和具體的AddIn關聯起來。
?? 之后,codonFactory調用AddCodonBuilder方法把這個CodonBuilder加入它的Builder集合中。我們向上一層,看看codonFactory如何使用這個CodonBuilder。
?? 在文件\src\Main\Core\AddIns\Codons\CodonFactory.cs中,codonFactory只有兩個方法。AddCodonBuilder方法把CodonBuilder加入一個以CodonName為索引的Hashtable中。另外一個方法很重要:

??public?ICodon?CreateCodon(AddIn?addIn,?XmlNode?codonNode)
??
{
???CodonBuilder?builder?
=?codonHashtable[codonNode.Name]?as?CodonBuilder;
???
???
if?(builder?!=?null)?{
????
return?builder.BuildCodon(addIn);
???}

???
???
throw?new?CodonNotFoundException(String.Format("no?codon?builder?found?for?<{0}>",?codonNode.Name));
??}

?? 在這里,addin是這個配置文件的描述(也就是插件),而這個XmlNode類型的CodonNode是什么東西?
?? 還記得配置文件中在<Extension>標簽下的<Class>、<MenuItem>、<Pad>之類的標簽嗎?我曾經說過,這些就是Codon的描述,現在我們來看看到底是不是如此。以前文的AddinTreeView配置為例:

?<Extension?path?=?"/SharpDevelop/Workbench/MainMenu/Tools">
??
<MenuItem?id?=?"AddinTreeView"?
???label?
=?"View?AddinTree"?
???class?
=?"Addins.AddinTreeView.AddinTreeViewCommand"/>?
?
</Extension>?

?? SharpDevelop在讀入插件配置文件的<Extension>標簽之后,就把它的ChildNodes(XmlElement的屬性)依次傳入CodonFactory的CreateCodon方法中。這里它的ChildNodes[0]就是這里的<MenuItem id = ..... />節點,也就是codonNode參數了。這個XML節點的Name是MenuItem,因此CreateCodon的第一行

CodonBuilder?builder?=?codonHashtable[codonNode.Name]?as?CodonBuilder;

?? 根據節點的名稱(MenuItem)查找對應的CodonBuilder。記得前面的CodonBuilder根據CodonNameAttribute取得了MenuItemCodon的CodonName嗎?就是這個MenuItem了。CodonFactory找到了對應的MenuItemCodon的CodonBuilder(這個是在DefaultAddInTree的構造函數中調用LoadCodonsAndConditions方法建立并加入CodonFactory中的,還記得么?),之后使用這個CodonBuilder建立了對應的Codon,并把它返回給調用者。
?? 就這樣,通過CodonNameAttribute,SharpDevelop把addin配置文件的<MenuItem>節點、CodonBulder、MenuItemCodon三部分串起來形成了一個構造Codon的路線。

?? 我們回過頭來整理一下思路,SharpDevelop進行了下面這樣幾步工作:
????? A、建立各個Codon,使用CodonNameAttribute指明它在配置節點中的名稱
????? B、DefaultAddInTree的構造函數中調用LoadCodonsAndConditions方法,搜索所有的Codon,根據Codon的CodonNameAttribute建立對應的CodonBuilder加入CodonFactory中。
????? C、讀取配置文件,在<Extension>標簽下遍歷所有的節點,根據節點的Name使用CodonFactory建立對應的Codon。
?? 其中,Codon的CodonNameAttribute、CodonBuilder的CodonName以及<Extension>標簽下XML節點的Name是一致的。對于Condition(條件)的處理也是一樣。
?? 抱歉,我上網不是很方便也不太會在Blog里面貼圖(都是為了省事的借口^o^),否則也許更好理解這里的脈絡關系。

?? 好了,看到這里,我們看看SharpDevelop中插件的靈活性是如何體現的。首先,addin配置中的Extension節點下的Codon節點名稱并沒有在代碼中和具體的Codon類聯系起來,而是通過CodonNameAttribute跟Codon聯系起來。這樣做的好處是,SharpDevelop的Codon和XML的標簽一樣具有無限的擴展能力。假設我們要自己定義一個Codon類SplashFormCodon作用是指定某個窗體作為系統啟動時的封面窗體。要做的工作很簡單:首先,在SplashFormCodon中使用CodonNameAttribute指定CodonName為Splash,并且在SplashFormCodon中定義自己需要的屬性。然后,在addin配置文件使用<Splash>標簽這樣寫:

??????<Extension?path?=?"/SharpDevelop/?">
????????????
<Splash?id?=?"MySplashForm"?class?=?"MySplashFormClass"/>?
??????
</Extension>

?? 是不是很簡單?另外,對于Condition(條件)的處理也是一樣,也就是說我們也可以使用類似的方法靈活的加入自己定義的條件。

?? 這里我有個小小的疑問:不知道我對于設計模式的理解是不是有點小問題,我感覺CodonBuilder類的實現似乎并不如它的類名所暗示的是《設計模式》中的Builder模式,反而似乎應該是Proxy模式,因此我覺得改叫做CodonProxy是不是比較容易理解?各位看官覺得呢?
?? 另外,雖然稍微麻煩了一小點,不過我覺得配置如果這樣寫會讓我們比較容易和代碼中具體的類關聯起來:

??????<Extension?path?=?"/SharpDevelop/?">
????????????
<Codon?name=”Splash”?id?=?"MySplashForm"?class?=?"MySplashFormClass"/>?
??????
</Extension>


2.2 主線 (AddInTreeSingleton. CreateAddInTree)
?? 啊~我寫的有點累了。不過還是讓我們繼續AddInTreeSingleton中CreateAddInTree的代碼。
?? 在建立了DefaultAddInTree的實例后,AddInTreeSingleton在插件目錄中搜索后綴為.addin的文件。還記得在SharpDevelop的Main函數中曾經調用過AddInTreeSingleton. SetAddInDirectories嗎,就是搜索這個傳入的目錄。看來SharpDevelop把在插件目錄中所有后綴為.addin的文件都看做是插件了。

FileUtilityService?fileUtilityService?=?(FileUtilityService)ServiceManager.Services.GetService(typeof(FileUtilityService));

?? 先學習一下如何從ServiceManager取得所需要的服務,在SharpDevelop中要取得一個服務全部都是通過這種方式取得的。調用GetService傳入要獲取的服務類的類型作為參數,返回一個IService接口,之后轉換成需要的服務。

?? 搜索插件目錄找到一個addin文件后,調用InsertAddIns把這個addin文件中的配置加入到目錄樹中。

static?StringCollection?InsertAddIns(StringCollection?addInFiles)
??
{
???StringCollection?retryList??
=?new?StringCollection();
???
???
foreach?(string?addInFile?in?addInFiles)?{
????AddIn?addIn?
=?new?AddIn();
????
try?{
?????addIn.Initialize(addInFile);
?????addInTree.InsertAddIn(addIn);
????}
?catch?(CodonNotFoundException)?{
?????retryList.Add(addInFile);
????}
?catch?(ConditionNotFoundException)?{
?????retryList.Add(addInFile);
????}
?catch?(Exception?e)?{
?????
throw?new?AddInInitializeException(addInFile,?e);
????}
?
???}

???
???
return?retryList;
??}

?? InsertAddIns建立一個對應的AddIn(插件),調用AddInTree的InsertAddIn方法把它掛到插件樹中。在這里有一個小小的處理,由于是通過Assembly查找和插件配置中Codon的標簽對應的類,而Codon類所在的Assembly是通過Import標簽導入的。因此在查找配置中某個Codon標簽對應的Codon類的時候,也許Codon類所在的文件是在其他的addin文件中Import的。這個時候在前面支線中講到CodonFactory中查找CodonBuilder會失敗,因此必須等到Codon類所在的addin處理之后才能正確的找到CodonBuilder。這是一個依賴關系的處理問題。
?? SharpDevelop在這里處理的比較簡單,調用InsertAddIns方法的時候,凡是出現CodonNotFoundException的時候,都加入一個retryList列表中返回。在CreateAddinTree處理完所有的addin文件之后,再重新循環嘗試處理retryList列表中的addin。如果某次循環中再也無法成功的加入retryList中的addin,那么才提示失敗錯誤。

?? 我們回頭來看看對AddIn的處理。

2.2.1? addIn.Initialize (AddIn的初始化)
?? 建立了AddIn的實例后,調用Initialize 方法進行初始化。AddIn是對一個.addin文件的封裝,定義在\src\Main\Core\AddIns\AddIn.cs文件中。其中包含了.addin文件的根元素<AddIn>的描述,包括名稱、作者、版權之類的屬性。在<AddIn>節點下包括兩種節點:一個是<Runtime>節點,包含了<Import>指定要導入的Assembly;另外一個是<Extension>節點,指定Codon的擴展點。在AddIn.Initialize方法中,使用XmlDocument對象來讀取對應的addin文件。首先讀取name、author 、copyright之類的基本屬性,之后遍歷所有的ChildNodes(子節點)。

?? 如果子節點是Runtime節點,則調用AddRuntimeLibraries方法。

???foreach?(object?o?in?el.ChildNodes)?
???
{
??????XmlElement?curEl?
=?(XmlElement)o;

??????
string?assemblyName?=?curEl.Attributes["assembly"].InnerText;
??????
string?pathName?????=?Path.IsPathRooted(assemblyName)???assemblyName?:?fileUtilityService.GetDirectoryNameWithSeparator(path)?+?assemblyName;
??????Assembly?asm?
=?AddInTreeSingleton.AddInTree.LoadAssembly(pathName);
??????RuntimeLibraries[assemblyName]?
=?asm;
???}

?? 通過AddInTreeSingleton.AddInTree.LoadAssembly方法把Assembly中所有的Codon和Condition的子類加入對應Factory類中(調用了LoadCodonsAndConditions方法,我們在DefaultAddInTree的構造函數中見過了),并且把該文件和對應的Assembly保存到RuntimeLibraries列表中。

?? 如果子節點是Extension節點,則調用AddExtensions方法。

??????Extension?e?=?new?Extension(el.Attributes["path"].InnerText);
??????AddCodonsToExtension(e,?el,?
new?ConditionCollection());
??????extensions.Add(e);

?? 根據這個擴展點的XML描述建立Extension對象加入到AddIn的Extensions列表中,并通過AddCodonsToExtension方法把其中包括的Codon加入到建立的Extension對象中。Extension對象是AddIn的一個內嵌類,其中一個重要的屬性就是CodonCollection這個列表。AddCodonsToExtension就是把在配置中出現的Codon都加入到這個列表中保存。

?? 來看看AddCodonsToExtension方法。在代碼中我略過了對Condition(條件)的處理的分析和一些無關緊要的部分,我們把注意力集中在插件的處理。首先是一個 foreach (object o in el.ChildNodes) 遍歷<Extension>下所有的子節點,對于每個子節點的處理如下:

??????XmlElement?curEl?=?(XmlElement)o;
??????
switch?(curEl.Name)
??????
{
??????(對條件的處理)
??????
default:
?????????ICodon?codon?
=?AddInTreeSingleton.AddInTree.CodonFactory.CreateCodon(this,?curEl);
?????????AutoInitializeAttributes(codon,?curEl);

?????????(對codon.InsertAfter?和codon.InsertBefore?的處理,主要是處理codon在列表中的順序問題,這一點在對于MenuItemCodon的處理上比較重要)

?????????e.CodonCollection.Add(codon);
?????????
if?(curEl.ChildNodes.Count?>?0)?
?????????
{
????????????Extension?newExtension?
=?new?Extension(e.Path?+?'/'?+?codon.ID);
????????????AddCodonsToExtension(newExtension,?curEl,?conditions);
????????????extensions.Add(newExtension);
?????????}

?????????
break;
???}


?? 我們看到了一個期待已久的調用

AddInTreeSingleton.AddInTree.CodonFactory.CreateCodon(this,?curEl);

?? 經過了上文支線2.1代碼中的鋪墊,SharpDevelop使用建立好的CodonFactory,調用CreateCodon方法根據<Extension>下的節點構造出實際的Codon對象,一切盡在不言中了吧。
?? e.CodonCollection.Add(codon);把構造出來的Codon對象加入到Extension對象的CodonCollection列表中。
?? 之后,在形如菜單的這種允許無限嵌套的結構中,SharpDevelop對此進行了處理。如果該節點有嵌套的子節點,那么構造一個新的Extension對象,遞歸調用AddCodonsToExtension添加到這個Extension對象中。注意一點,這個新構造的Extension對象并不是分開保存在Codon中,而是直接保存在AddIn的擴展點列表中。這樣是為了方便查找,畢竟保存在具體的Codon中也沒有什么用處,我們可以通過Extension對象的Path屬性得知它在插件樹中的具體位置。

2.2.2 addInTree.InsertAddIn(把AddIn添加到AddInTree中)
?? 對AddIn的構造完成之后,需要把AddIn的實例對象添加AddInTree中管理。

??????addIns.Add(addIn);
??????
foreach?(AddIn.Extension?extension?in?addIn.Extensions)
??????
{
?????????AddExtensions(extension);
??????}

?? 在DefaultAddInTree中,保存了兩課樹。一個是根據插件文件的結構形成的樹,每個插件文件作為根節點,往下依次是Extension、Codon節點。addIns.Add(addIn);就是把插件加入到這個樹結構中。另外一個樹是根據Extension的Path+Codon的ID作為路徑構造出來的,每一個樹節點是一個AddInTreeNode類,包含了在這個路徑上的Codon對象。嵌套在這個節點中的Codon在通過它子節點來訪問。在DefaultAddInTree中可以通過GetTreeNode來指定一個路徑獲得插件樹上某一個節點的內容。
?? AddExtensions方法很簡單,遍歷Extension中所有的Codon,把Extension的Path+Codon的ID作為路徑,創建這個路徑上的所有節點,并把Codon連接到這個AddInTreeNode上。由于Codon的ID是全局唯一的,因此每一個AddInTreeNode都具有一個唯一的Codon。

3、最后一公里(Codon和Command的關聯)
?? 在插件樹的討論中,我們依次把AddIn-Extension-Codon的配置和他們對應的類關聯了起來。不過我們一直沒有涉及到Codon和它包含的Command是如何關聯的。由于這個關聯調用是在插件樹外部的(記得在講述SharpDevelop程序入口Main函數中,提到ServiceManager的方法InitializeServicesSubsystem么?AddServices((IService[])AddInTreeSingleton.AddInTree.GetTreeNode(servicesPath).BuildChildItems(this).ToArray(typeof(IService))); 這里就調用了BuildChildItems),因此單獨在這里說明。實現這個關聯的就是AddInTreeNode的BuildChildItems和BuildChildItem方法以及Codon的BuildItem方法。
?? BuildChildItem方法和BuildChildItems方法僅有一字之差,BuildChildItem是根據指定的Codon的ID在所屬AddInTreeNode的子節點下查找包含該Codon的節點并調用該Codon的BuildItem方法;而BuildChildItems則是首先遍歷所屬AddInTreeNode的所有子節點,依次調用各個子節點的Codon的BuildItem方法,之后再調用所屬AddInTreeNode的Codon的BuildItem方法(也就是一個樹的后根遍歷)。
?? 重點在Codon的BuildItem方法。在AbstractCodon中,這個方法是一個抽象方法,SharpDevelop的代碼注釋中并沒有明確說清楚這個方法是做什么用的。但是我們可以找一個Codon的實例來看看。例如ClassCodon的BuildItem:

??????public?override?object?BuildItem(object?owner,?ArrayList?subItems,?ConditionCollection?conditions)
??????
{
?????????System.Diagnostics.Debug.Assert(Class?
!=?null?&&?Class.Length?>?0);
?????????
return?AddIn.CreateObject(Class);
??????}

?? 調用AddIn的CreateObject,傳入Codon的Class(類名)作為參數,建立這個類的實例。例如這個配置

???<Extension?path?=?"/Workspace/Autostart">
??????
<Class?id?=?"InitializeWorkbenchCommand"?
??????????class?
=?"ICSharpCode.SharpDevelop.Commands.InitializeWorkbenchCommand"/>
???
</Extension>

?? 而Codon的中的Class(類名)屬性就是ICSharpCode.SharpDevelop.Commands.InitializeWorkbenchCommand。也就是說,Codon的Class指的是實現具體功能模塊的Command類的名稱。在讀取addin配置中的<Runtime>節的時候,AddInTree把Assembly保存到了RuntimeLibraries中,因此CreateObject方法可以通過它們來查找并建立類的實例。
?? 各位看官可以再看看MenuItemCodon的實現,同樣是建立了對應的SdMenuCommand。
?? 這樣,SharpDevelop本身的插件結構可以和具體的對象建立分離開來,實際的對象建立是在各個Codon的BuildItem中進行的。因此我們可以發現在SharpDevelop整個是基礎插件系統部分沒有任何GUI的操作,實現了很好的解耦效果。

4、問題
?? 好了,本文對插件樹構造的分析到此告一段落。我提一個小小的問題給各位看官思考:在構造插件樹的過程中,如果Codon的某一個節點路徑不存在(也就是說它的依賴項不存在),那么SharpDevelop會提示失敗并且終止程序運行。可是實際上可能因為部署的原因或者權限的原因,某些Codon的失敗并不會影響整個系統的使用,例如試用版本僅僅提供部分插件給客戶使用,而并不希望系統因此而終止運行。那么就存在一個Codon依賴項失敗而允許繼續運行的問題。另外,我希望各個插件不在系統啟動的時候全部調入系統,而是在運行期實際調用的時候才調入系統,也就是一個緩存機制,這樣就可以實現系統插件的熱部署。如何修改SharpDevelop的插件系統來實現這兩個功能呢?

轉載于:https://www.cnblogs.com/sea_peak/archive/2011/04/08/2009910.html

總結

以上是生活随笔為你收集整理的【转载】SharpDevelop代码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

又大又黄又粗又爽的免费视频 | 无码国产激情在线观看 | aⅴ亚洲 日韩 色 图网站 播放 | 最近中文2019字幕第二页 | 成人无码影片精品久久久 | 精品无码国产自产拍在线观看蜜 | 日本精品高清一区二区 | 久久久国产一区二区三区 | 99久久亚洲精品无码毛片 | 欧美xxxx黑人又粗又长 | 欧美熟妇另类久久久久久多毛 | 欧美国产亚洲日韩在线二区 | 亚洲区欧美区综合区自拍区 | 久久无码中文字幕免费影院蜜桃 | 日韩精品久久久肉伦网站 | 国产在线精品一区二区三区直播 | 台湾无码一区二区 | 激情五月综合色婷婷一区二区 | 人妻无码久久精品人妻 | 久久午夜无码鲁丝片秋霞 | 国产亚洲人成a在线v网站 | 狂野欧美性猛交免费视频 | 中文字幕无码日韩专区 | 日韩av无码一区二区三区 | 久久97精品久久久久久久不卡 | 国产精品怡红院永久免费 | 成人精品一区二区三区中文字幕 | 俺去俺来也在线www色官网 | 国产精品国产自线拍免费软件 | 国产人成高清在线视频99最全资源 | 男人扒开女人内裤强吻桶进去 | 男女猛烈xx00免费视频试看 | 欧美丰满老熟妇xxxxx性 | 国产欧美精品一区二区三区 | 国产两女互慰高潮视频在线观看 | 国产sm调教视频在线观看 | 精品午夜福利在线观看 | 成 人 免费观看网站 | 亚洲成色www久久网站 | 国产精品沙发午睡系列 | 亚洲色欲久久久综合网东京热 | 日韩人妻无码一区二区三区久久99 | 999久久久国产精品消防器材 | 老司机亚洲精品影院 | 天天摸天天透天天添 | 18无码粉嫩小泬无套在线观看 | 人人爽人人爽人人片av亚洲 | 正在播放老肥熟妇露脸 | 久久精品女人天堂av免费观看 | 人人爽人人爽人人片av亚洲 | 欧美老妇与禽交 | 男女下面进入的视频免费午夜 | 国产精品久久久一区二区三区 | 蜜臀av在线播放 久久综合激激的五月天 | 日韩亚洲欧美精品综合 | 欧美xxxx黑人又粗又长 | 给我免费的视频在线观看 | 免费国产黄网站在线观看 | 男女超爽视频免费播放 | 亚洲精品一区二区三区在线观看 | 成人亚洲精品久久久久软件 | 无码人妻丰满熟妇区五十路百度 | 麻豆md0077饥渴少妇 | 男人和女人高潮免费网站 | 疯狂三人交性欧美 | 亚洲日韩一区二区三区 | 久久久久人妻一区精品色欧美 | 精品少妇爆乳无码av无码专区 | 亚洲人成人无码网www国产 | 一本精品99久久精品77 | 日韩无码专区 | 亚洲另类伦春色综合小说 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产97在线 | 亚洲 | 99精品视频在线观看免费 | 久久精品人妻少妇一区二区三区 | 永久免费观看国产裸体美女 | 色综合久久久无码网中文 | 成人试看120秒体验区 | 永久免费观看国产裸体美女 | 人人澡人人妻人人爽人人蜜桃 | 国产精品久久久一区二区三区 | 特黄特色大片免费播放器图片 | 亚洲日韩中文字幕在线播放 | 亚洲狠狠婷婷综合久久 | aa片在线观看视频在线播放 | 国产又爽又猛又粗的视频a片 | 久久国产精品精品国产色婷婷 | 丝袜人妻一区二区三区 | √天堂资源地址中文在线 | 在线观看免费人成视频 | 亚洲精品综合五月久久小说 | 天堂一区人妻无码 | 亚洲男女内射在线播放 | 无码午夜成人1000部免费视频 | 亚洲另类伦春色综合小说 | 无码免费一区二区三区 | 中文精品无码中文字幕无码专区 | 99久久精品午夜一区二区 | 久青草影院在线观看国产 | 中文字幕人妻丝袜二区 | 色一情一乱一伦一区二区三欧美 | 久久精品人人做人人综合 | 精品少妇爆乳无码av无码专区 | 人妻中文无码久热丝袜 | 小泽玛莉亚一区二区视频在线 | 国产真实乱对白精彩久久 | 麻豆精产国品 | 中文字幕无码av激情不卡 | 在线观看欧美一区二区三区 | 亚洲精品成人av在线 | 国产疯狂伦交大片 | 久久综合给久久狠狠97色 | 色偷偷人人澡人人爽人人模 | 1000部啪啪未满十八勿入下载 | 乱人伦人妻中文字幕无码久久网 | 55夜色66夜色国产精品视频 | 欧美 日韩 人妻 高清 中文 | 国产成人综合在线女婷五月99播放 | 久久精品国产一区二区三区肥胖 | 精品久久久中文字幕人妻 | 国产97人人超碰caoprom | 日韩视频 中文字幕 视频一区 | 国产精品成人av在线观看 | 四十如虎的丰满熟妇啪啪 | 精品人人妻人人澡人人爽人人 | 小泽玛莉亚一区二区视频在线 | 亚洲精品一区三区三区在线观看 | 欧美日韩综合一区二区三区 | 成 人 网 站国产免费观看 | 精品无码成人片一区二区98 | 丝袜人妻一区二区三区 | 国产精品永久免费视频 | 国产av无码专区亚洲awww | 熟妇人妻无码xxx视频 | 黑人大群体交免费视频 | 欧美日韩亚洲国产精品 | 99久久亚洲精品无码毛片 | 久久精品国产日本波多野结衣 | 精品国精品国产自在久国产87 | 亚洲国产综合无码一区 | 少妇无码一区二区二三区 | 国产特级毛片aaaaaaa高清 | 人人妻人人藻人人爽欧美一区 | 国产97人人超碰caoprom | 蜜桃视频韩日免费播放 | 中文精品无码中文字幕无码专区 | 久久综合九色综合欧美狠狠 | 亚洲一区二区三区四区 | 免费人成在线视频无码 | 亚洲国产精品一区二区第一页 | 美女毛片一区二区三区四区 | 无码毛片视频一区二区本码 | 黑人巨大精品欧美黑寡妇 | 久久亚洲日韩精品一区二区三区 | 成人影院yy111111在线观看 | 性做久久久久久久久 | 2020久久香蕉国产线看观看 | 成年美女黄网站色大免费视频 | 欧美日韩一区二区免费视频 | 久久久久久a亚洲欧洲av冫 | 日本xxxx色视频在线观看免费 | 国产农村乱对白刺激视频 | 性啪啪chinese东北女人 | 在线精品国产一区二区三区 | 国产香蕉尹人综合在线观看 | 成人亚洲精品久久久久软件 | 久久综合狠狠综合久久综合88 | 免费无码肉片在线观看 | 欧美性生交xxxxx久久久 | 少妇无码一区二区二三区 | 日本饥渴人妻欲求不满 | 国产美女精品一区二区三区 | 欧美人与禽zoz0性伦交 | 久久综合久久自在自线精品自 | 蜜桃无码一区二区三区 | 色综合久久久久综合一本到桃花网 | 亚洲 高清 成人 动漫 | 国产一区二区三区日韩精品 | 国产肉丝袜在线观看 | 久久久婷婷五月亚洲97号色 | 99re在线播放 | 久久久久久国产精品无码下载 | 国产无套内射久久久国产 | 人妻少妇精品久久 | 成熟女人特级毛片www免费 | 九九在线中文字幕无码 | 国产香蕉97碰碰久久人人 | 欧美变态另类xxxx | 青草视频在线播放 | 久久国产精品精品国产色婷婷 | 欧洲熟妇精品视频 | 国产成人精品优优av | 少妇人妻av毛片在线看 | 国产综合色产在线精品 | 日本护士毛茸茸高潮 | 亚洲 欧美 激情 小说 另类 | 老熟女重囗味hdxx69 | 啦啦啦www在线观看免费视频 | 日本熟妇大屁股人妻 | 亚洲va欧美va天堂v国产综合 | 麻豆人妻少妇精品无码专区 | 亚洲精品欧美二区三区中文字幕 | 在线观看国产一区二区三区 | 国产一区二区三区日韩精品 | 一个人看的视频www在线 | 亚洲午夜久久久影院 | 国产乱人伦av在线无码 | 欧美人妻一区二区三区 | 在线视频网站www色 | 秋霞成人午夜鲁丝一区二区三区 | 伊人久久大香线蕉午夜 | av人摸人人人澡人人超碰下载 | 国产又爽又黄又刺激的视频 | 久久亚洲中文字幕精品一区 | 欧美兽交xxxx×视频 | 东京一本一道一二三区 | 在线欧美精品一区二区三区 | 国产成人无码av片在线观看不卡 | 精品国产一区av天美传媒 | 色情久久久av熟女人妻网站 | 成人亚洲精品久久久久软件 | 久久国产精品精品国产色婷婷 | 久久久无码中文字幕久... | 性生交大片免费看女人按摩摩 | 精品国精品国产自在久国产87 | 天天摸天天碰天天添 | 欧美精品国产综合久久 | 欧美日韩人成综合在线播放 | 国产一区二区不卡老阿姨 | 图片小说视频一区二区 | 99久久99久久免费精品蜜桃 | 日本丰满护士爆乳xxxx | 在线播放亚洲第一字幕 | 亚洲大尺度无码无码专区 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产黑色丝袜在线播放 | 人妻有码中文字幕在线 | 天堂无码人妻精品一区二区三区 | 日本一区二区三区免费播放 | 蜜臀av无码人妻精品 | 99久久久无码国产精品免费 | 中文字幕无线码 | 久久综合久久自在自线精品自 | 骚片av蜜桃精品一区 | 久久久久久国产精品无码下载 | 999久久久国产精品消防器材 | 日本熟妇大屁股人妻 | 亚洲国产精品久久久天堂 | 亚洲中文字幕成人无码 | 国产极品视觉盛宴 | 55夜色66夜色国产精品视频 | 麻花豆传媒剧国产免费mv在线 | 国产亚洲精品久久久久久国模美 | 国产无套粉嫩白浆在线 | 漂亮人妻洗澡被公强 日日躁 | 综合网日日天干夜夜久久 | 国产精品亚洲一区二区三区喷水 | 97无码免费人妻超级碰碰夜夜 | 亚洲成色在线综合网站 | 亚洲精品一区二区三区大桥未久 | 丰满妇女强制高潮18xxxx | 大肉大捧一进一出好爽视频 | 在线 国产 欧美 亚洲 天堂 | 亚洲成a人片在线观看日本 | 亚洲人成网站在线播放942 | 成人无码视频在线观看网站 | 一本久久伊人热热精品中文字幕 | 中文字幕无线码免费人妻 | 久久人人爽人人爽人人片av高清 | 好爽又高潮了毛片免费下载 | 中文字幕无码免费久久9一区9 | 日日碰狠狠躁久久躁蜜桃 | 亚洲阿v天堂在线 | 色窝窝无码一区二区三区色欲 | 一本加勒比波多野结衣 | 国色天香社区在线视频 | 精品无人国产偷自产在线 | 国产熟妇另类久久久久 | 理论片87福利理论电影 | 国产av一区二区精品久久凹凸 | 99久久无码一区人妻 | 亚洲色大成网站www | 国产艳妇av在线观看果冻传媒 | 欧美亚洲国产一区二区三区 | 久久国产精品精品国产色婷婷 | 欧美老人巨大xxxx做受 | 亚洲精品国产精品乱码视色 | 国产午夜无码视频在线观看 | 女人高潮内射99精品 | 国产一区二区三区精品视频 | 亚洲精品一区国产 | 亚洲中文无码av永久不收费 | 日本爽爽爽爽爽爽在线观看免 | 一本色道婷婷久久欧美 | 国产精品无码一区二区三区不卡 | 美女黄网站人色视频免费国产 | 久久精品一区二区三区四区 | 天堂无码人妻精品一区二区三区 | 妺妺窝人体色www婷婷 | 亚洲а∨天堂久久精品2021 | 久久久久国色av免费观看性色 | 精品无码一区二区三区爱欲 | 55夜色66夜色国产精品视频 | 中文无码伦av中文字幕 | 亚洲精品一区二区三区四区五区 | 日本大香伊一区二区三区 | 成人影院yy111111在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产欧美精品一区二区三区 | а天堂中文在线官网 | 亚洲精品无码人妻无码 | 暴力强奷在线播放无码 | 中文字幕乱码中文乱码51精品 | 国产成人精品无码播放 | 好男人www社区 | 无码吃奶揉捏奶头高潮视频 | 奇米影视7777久久精品人人爽 | 久久精品人妻少妇一区二区三区 | 少妇人妻偷人精品无码视频 | 久久99精品国产.久久久久 | 国产精品自产拍在线观看 | 国产精品永久免费视频 | 欧美肥老太牲交大战 | 无码人妻久久一区二区三区不卡 | 亚洲精品美女久久久久久久 | 久久国产精品二国产精品 | 国产av剧情md精品麻豆 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 欧美乱妇无乱码大黄a片 | 日本一区二区三区免费播放 | 无人区乱码一区二区三区 | 久久无码中文字幕免费影院蜜桃 | 亚洲成av人片在线观看无码不卡 | 亚洲精品一区二区三区大桥未久 | 成人性做爰aaa片免费看 | 亚洲精品一区二区三区大桥未久 | 成人无码影片精品久久久 | 西西人体www44rt大胆高清 | 青草青草久热国产精品 | 免费看少妇作爱视频 | 亚洲精品国产第一综合99久久 | 在线观看国产午夜福利片 | 久久久久成人精品免费播放动漫 | 伊人久久大香线蕉亚洲 | 老熟女乱子伦 | 四虎永久在线精品免费网址 | 俺去俺来也www色官网 | 国产在线精品一区二区高清不卡 | 蜜臀av在线播放 久久综合激激的五月天 | 人人妻人人澡人人爽欧美一区九九 | 女人高潮内射99精品 | 大地资源中文第3页 | 午夜男女很黄的视频 | 国产精品美女久久久网av | 国产成人精品优优av | 国产精品99久久精品爆乳 | 波多野结衣av在线观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产免费久久久久久无码 | 激情综合激情五月俺也去 | 亚欧洲精品在线视频免费观看 | 国产成人综合在线女婷五月99播放 | 日本va欧美va欧美va精品 | 国产精品igao视频网 | 熟妇女人妻丰满少妇中文字幕 | 国产三级精品三级男人的天堂 | 国产香蕉97碰碰久久人人 | 一区二区三区乱码在线 | 欧洲 | 久久精品国产大片免费观看 | 国产一区二区三区日韩精品 | 无人区乱码一区二区三区 | 无码av岛国片在线播放 | 最近的中文字幕在线看视频 | 欧美成人高清在线播放 | 无码人妻精品一区二区三区下载 | 性做久久久久久久免费看 | 精品午夜福利在线观看 | 一区二区三区高清视频一 | 久久99精品久久久久婷婷 | 九九在线中文字幕无码 | 久青草影院在线观看国产 | 丰满肥臀大屁股熟妇激情视频 | 97久久精品无码一区二区 | 丰腴饱满的极品熟妇 | 无码人妻黑人中文字幕 | 无码精品人妻一区二区三区av | 国产熟女一区二区三区四区五区 | 成人欧美一区二区三区黑人 | 日韩精品成人一区二区三区 | 国产精品永久免费视频 | 亚洲国产精品一区二区美利坚 | 最近免费中文字幕中文高清百度 | 亚洲精品一区二区三区在线观看 | 国产午夜视频在线观看 | 国产女主播喷水视频在线观看 | 亚洲 a v无 码免 费 成 人 a v | 岛国片人妻三上悠亚 | 久久亚洲中文字幕精品一区 | 一本色道婷婷久久欧美 | 青青青手机频在线观看 | 亚洲人成影院在线无码按摩店 | 国产人妻精品一区二区三区不卡 | 午夜时刻免费入口 | 波多野结衣一区二区三区av免费 | 日本精品人妻无码77777 天堂一区人妻无码 | 中文字幕亚洲情99在线 | 亚拍精品一区二区三区探花 | 99久久人妻精品免费一区 | 国产特级毛片aaaaaa高潮流水 | 少妇性l交大片欧洲热妇乱xxx | 国产无遮挡又黄又爽又色 | 俺去俺来也在线www色官网 | 日本又色又爽又黄的a片18禁 | 色综合久久久无码网中文 | 少妇性l交大片欧洲热妇乱xxx | 国产精品-区区久久久狼 | 波多野结衣高清一区二区三区 | 久久99精品久久久久久动态图 | 亚洲午夜久久久影院 | 精品偷自拍另类在线观看 | 国产精品久久久久无码av色戒 | 午夜福利不卡在线视频 | 欧美精品在线观看 | 乱中年女人伦av三区 | 中文无码成人免费视频在线观看 | 成人精品天堂一区二区三区 | 在线看片无码永久免费视频 | 在线观看国产午夜福利片 | 国产精品亚洲а∨无码播放麻豆 | 亚洲呦女专区 | 高中生自慰www网站 | 在线观看免费人成视频 | 久9re热视频这里只有精品 | 国产精品久久国产三级国 | 国产97人人超碰caoprom | 日本熟妇大屁股人妻 | 国产69精品久久久久app下载 | 窝窝午夜理论片影院 | 久久无码专区国产精品s | 精品国产麻豆免费人成网站 | 日产精品高潮呻吟av久久 | 精品无码一区二区三区的天堂 | 国产亚洲精品久久久久久国模美 | 国产色在线 | 国产 | 亚洲毛片av日韩av无码 | 精品国产麻豆免费人成网站 | 色情久久久av熟女人妻网站 | 国产成人无码午夜视频在线观看 | 激情人妻另类人妻伦 | 秋霞特色aa大片 | 99久久婷婷国产综合精品青草免费 | 一本久道久久综合婷婷五月 | 婷婷五月综合激情中文字幕 | 久久午夜夜伦鲁鲁片无码免费 | 色欲综合久久中文字幕网 | 国产色xx群视频射精 | 日韩欧美中文字幕公布 | 美女毛片一区二区三区四区 | 狠狠色丁香久久婷婷综合五月 | 日本www一道久久久免费榴莲 | 亚洲 a v无 码免 费 成 人 a v | 国产午夜亚洲精品不卡 | 国产三级精品三级男人的天堂 | 国产情侣作爱视频免费观看 | 狠狠综合久久久久综合网 | 成熟女人特级毛片www免费 | 亚洲精品久久久久久一区二区 | 国产电影无码午夜在线播放 | 在线观看欧美一区二区三区 | 精品国产一区二区三区四区在线看 | 成年女人永久免费看片 | a国产一区二区免费入口 | av无码不卡在线观看免费 | 人妻插b视频一区二区三区 | 国产麻豆精品一区二区三区v视界 | 国产69精品久久久久app下载 | 免费无码肉片在线观看 | 国产无遮挡又黄又爽免费视频 | 2019午夜福利不卡片在线 | 成人无码视频免费播放 | 亚洲熟熟妇xxxx | 国产一区二区三区日韩精品 | 伊在人天堂亚洲香蕉精品区 | 四虎永久在线精品免费网址 | 99久久精品国产一区二区蜜芽 | 东京无码熟妇人妻av在线网址 | 国语自产偷拍精品视频偷 | 天堂无码人妻精品一区二区三区 | 18精品久久久无码午夜福利 | 欧洲精品码一区二区三区免费看 | 国产精品18久久久久久麻辣 | 亚洲区小说区激情区图片区 | 国产sm调教视频在线观看 | 精品国产一区二区三区四区 | 扒开双腿疯狂进出爽爽爽视频 | а√天堂www在线天堂小说 | 国产亚洲精品久久久闺蜜 | 亚洲国产精品无码一区二区三区 | 久久久精品成人免费观看 | 在线精品国产一区二区三区 | 国产综合久久久久鬼色 | 久久国语露脸国产精品电影 | 中文字幕无码av激情不卡 | 乱人伦中文视频在线观看 | 国内揄拍国内精品少妇国语 | 亚洲国产午夜精品理论片 | 色婷婷综合中文久久一本 | 精品无码一区二区三区的天堂 | 精品无码国产自产拍在线观看蜜 | 国产xxx69麻豆国语对白 | 免费国产成人高清在线观看网站 | 精品少妇爆乳无码av无码专区 | 日本精品人妻无码免费大全 | 国产精品手机免费 | 无码免费一区二区三区 | 色欲久久久天天天综合网精品 | 我要看www免费看插插视频 | 樱花草在线播放免费中文 | 亚洲精品成a人在线观看 | 国产无套粉嫩白浆在线 | 国产又粗又硬又大爽黄老大爷视 | 亚洲国产成人a精品不卡在线 | 亚洲日韩av一区二区三区四区 | 999久久久国产精品消防器材 | 永久免费观看国产裸体美女 | 大肉大捧一进一出视频出来呀 | 欧美真人作爱免费视频 | 领导边摸边吃奶边做爽在线观看 | 亚洲熟妇色xxxxx欧美老妇 | 欧美人与禽猛交狂配 | 国产色视频一区二区三区 | 国产又粗又硬又大爽黄老大爷视 | 久久国产自偷自偷免费一区调 | 西西人体www44rt大胆高清 | 荡女精品导航 | 中文字幕 亚洲精品 第1页 | 欧美老妇与禽交 | 老司机亚洲精品影院 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲国产精品一区二区美利坚 | 久久99热只有频精品8 | 亚洲乱亚洲乱妇50p | 欧洲极品少妇 | 亚洲一区av无码专区在线观看 | 精品无码国产一区二区三区av | 中文字幕无码免费久久99 | 亚拍精品一区二区三区探花 | 无码人妻丰满熟妇区五十路百度 | 中文精品无码中文字幕无码专区 | 精品久久久久久亚洲精品 | 亚洲经典千人经典日产 | 久9re热视频这里只有精品 | 人人妻人人澡人人爽欧美精品 | 欧美性生交xxxxx久久久 | 亚洲一区av无码专区在线观看 | 玩弄中年熟妇正在播放 | 欧美老熟妇乱xxxxx | 精品一区二区三区无码免费视频 | 亚洲天堂2017无码 | 亚洲精品中文字幕 | 国内精品一区二区三区不卡 | 国产精品久久久久影院嫩草 | 日本精品久久久久中文字幕 | 午夜精品久久久久久久久 | 国产无遮挡吃胸膜奶免费看 | 国产精品嫩草久久久久 | 2020最新国产自产精品 | 欧美丰满老熟妇xxxxx性 | 中文字幕乱妇无码av在线 | 一本色道久久综合亚洲精品不卡 | 久久综合色之久久综合 | 最新版天堂资源中文官网 | 黄网在线观看免费网站 | 国产激情精品一区二区三区 | 自拍偷自拍亚洲精品10p | 奇米影视7777久久精品人人爽 | 久久zyz资源站无码中文动漫 | 永久免费观看美女裸体的网站 | 亚洲精品一区国产 | 成人欧美一区二区三区黑人 | 国产亚洲精品久久久ai换 | 日韩成人一区二区三区在线观看 | 亚洲国产综合无码一区 | 亚洲精品一区二区三区婷婷月 | 亚欧洲精品在线视频免费观看 | 大胆欧美熟妇xx | 亚洲乱码国产乱码精品精 | 国内综合精品午夜久久资源 | 无码av岛国片在线播放 | 亚洲一区二区观看播放 | 男女作爱免费网站 | 午夜性刺激在线视频免费 | 国产一区二区三区日韩精品 | 国产小呦泬泬99精品 | 波多野结衣aⅴ在线 | 久久精品人人做人人综合 | 丰满岳乱妇在线观看中字无码 | 成人欧美一区二区三区黑人免费 | 野狼第一精品社区 | 女高中生第一次破苞av | 少妇高潮喷潮久久久影院 | 国产卡一卡二卡三 | 久久亚洲国产成人精品性色 | 日本精品久久久久中文字幕 | 久久人人爽人人爽人人片av高清 | 狂野欧美性猛交免费视频 | 欧美日韩视频无码一区二区三 | 久久午夜无码鲁丝片 | 亚洲精品国产a久久久久久 | 国产高清不卡无码视频 | 国产极品美女高潮无套在线观看 | 在线a亚洲视频播放在线观看 | 免费观看的无遮挡av | 久久精品成人欧美大片 | 波多野结衣av一区二区全免费观看 | 人妻少妇被猛烈进入中文字幕 | 黑人大群体交免费视频 | 影音先锋中文字幕无码 | 国产成人综合在线女婷五月99播放 | 午夜时刻免费入口 | 国产色视频一区二区三区 | 天堂а√在线地址中文在线 | 国产人成高清在线视频99最全资源 | 免费国产黄网站在线观看 | 国产一区二区不卡老阿姨 | 人人妻人人澡人人爽欧美一区 | ass日本丰满熟妇pics | 爆乳一区二区三区无码 | 亚洲国产成人av在线观看 | 免费观看的无遮挡av | 久久亚洲国产成人精品性色 | 无码成人精品区在线观看 | √天堂资源地址中文在线 | 国产精品无码一区二区桃花视频 | 久久国产36精品色熟妇 | 久久精品中文字幕一区 | 亚洲乱码日产精品bd | 免费乱码人妻系列无码专区 | 强辱丰满人妻hd中文字幕 | 亚洲国产精品成人久久蜜臀 | 久久久www成人免费毛片 | 美女黄网站人色视频免费国产 | 国产午夜精品一区二区三区嫩草 | 日本饥渴人妻欲求不满 | 色五月丁香五月综合五月 | 成人亚洲精品久久久久 | 久久综合给久久狠狠97色 | 精品国偷自产在线 | 久久久久久久人妻无码中文字幕爆 | 人人妻人人澡人人爽欧美一区九九 | aa片在线观看视频在线播放 | 国产在线无码精品电影网 | 全球成人中文在线 | 欧美老人巨大xxxx做受 | 亚洲国产成人av在线观看 | 精品无人区无码乱码毛片国产 | 日本精品久久久久中文字幕 | 亚洲乱码中文字幕在线 | 亚洲 激情 小说 另类 欧美 | 亚洲 高清 成人 动漫 | 中文字幕亚洲情99在线 | 国产成人精品无码播放 | 国语精品一区二区三区 | 人人妻人人澡人人爽欧美一区 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲国产精品久久久天堂 | 高清无码午夜福利视频 | 无套内射视频囯产 | 强奷人妻日本中文字幕 | 欧美精品一区二区精品久久 | 18无码粉嫩小泬无套在线观看 | 亚洲精品成a人在线观看 | 伊人久久大香线蕉午夜 | av小次郎收藏 | 国产成人无码av一区二区 | 无码人妻黑人中文字幕 | 无码国模国产在线观看 | 国产午夜亚洲精品不卡下载 | 麻豆md0077饥渴少妇 | 中文字幕乱码亚洲无线三区 | 国产在热线精品视频 | 成人精品视频一区二区三区尤物 | 少妇一晚三次一区二区三区 | 动漫av一区二区在线观看 | 亚洲色大成网站www国产 | 国产精品无码永久免费888 | 久久国产精品_国产精品 | 四十如虎的丰满熟妇啪啪 | 国产超碰人人爽人人做人人添 | 成人片黄网站色大片免费观看 | 亚洲aⅴ无码成人网站国产app | 在线播放无码字幕亚洲 | 亚洲日韩一区二区 | 亚洲理论电影在线观看 | 亚洲a无码综合a国产av中文 | 少妇久久久久久人妻无码 | 2019午夜福利不卡片在线 | 久久99精品国产麻豆 | 精品无码成人片一区二区98 | 国产精品人人爽人人做我的可爱 | 99精品国产综合久久久久五月天 | 久久亚洲国产成人精品性色 | 国产激情艳情在线看视频 | 国产av无码专区亚洲a∨毛片 | 丁香啪啪综合成人亚洲 | 无码人妻少妇伦在线电影 | 福利一区二区三区视频在线观看 | 久久97精品久久久久久久不卡 | 国产午夜亚洲精品不卡下载 | 亚洲中文字幕无码中字 | 国产精品亚洲а∨无码播放麻豆 | 精品乱子伦一区二区三区 | 少妇性l交大片 | 又色又爽又黄的美女裸体网站 | 国产在线一区二区三区四区五区 | 中文字幕无码免费久久99 | 色五月五月丁香亚洲综合网 | 夫妻免费无码v看片 | 欧美日韩综合一区二区三区 | 内射欧美老妇wbb | 狠狠色噜噜狠狠狠狠7777米奇 | 国产乱子伦视频在线播放 | 中文字幕av日韩精品一区二区 | 妺妺窝人体色www在线小说 | 国产av一区二区三区最新精品 | 99精品国产综合久久久久五月天 | 久久人人爽人人爽人人片av高清 | 日韩av激情在线观看 | 久久亚洲精品中文字幕无男同 | 无码av免费一区二区三区试看 | 免费播放一区二区三区 | 俺去俺来也在线www色官网 | 四虎影视成人永久免费观看视频 | 国产一区二区三区影院 | 清纯唯美经典一区二区 | 国产一区二区三区四区五区加勒比 | 国产激情综合五月久久 | 成人毛片一区二区 | 久久精品中文字幕大胸 | 日本熟妇乱子伦xxxx | av在线亚洲欧洲日产一区二区 | 香港三级日本三级妇三级 | 午夜精品一区二区三区在线观看 | 国产精品国产三级国产专播 | 国产成人午夜福利在线播放 | 青青久在线视频免费观看 | 国精品人妻无码一区二区三区蜜柚 | 欧美人与善在线com | 久久久国产精品无码免费专区 | 精品国产青草久久久久福利 | 国产猛烈高潮尖叫视频免费 | 国产两女互慰高潮视频在线观看 | 沈阳熟女露脸对白视频 | 亚洲精品中文字幕久久久久 | 国产色xx群视频射精 | 国产绳艺sm调教室论坛 | 欧美肥老太牲交大战 | 黑人大群体交免费视频 | 夜夜影院未满十八勿进 | 成 人 免费观看网站 | 国产乱人伦av在线无码 | 国产激情精品一区二区三区 | 少妇高潮一区二区三区99 | 小泽玛莉亚一区二区视频在线 | 久久国产精品精品国产色婷婷 | 久久综合网欧美色妞网 | 欧美精品无码一区二区三区 | 中文字幕无码热在线视频 | 久久久久久a亚洲欧洲av冫 | 精品国产精品久久一区免费式 | 老司机亚洲精品影院 | 亚洲中文字幕无码中文字在线 | 欧美 亚洲 国产 另类 | 熟妇人妻无乱码中文字幕 | 国产美女极度色诱视频www | 国产成人人人97超碰超爽8 | 久久99精品国产麻豆蜜芽 | 国精产品一品二品国精品69xx | 成人aaa片一区国产精品 | 中文字幕无码av激情不卡 | 丰满肥臀大屁股熟妇激情视频 | 国产精品无码永久免费888 | 免费无码肉片在线观看 | 18精品久久久无码午夜福利 | 中文毛片无遮挡高清免费 | 亚洲精品中文字幕 | 欧美自拍另类欧美综合图片区 | 无码一区二区三区在线 | 中国女人内谢69xxxxxa片 | 风流少妇按摩来高潮 | 国产无av码在线观看 | 国产极品美女高潮无套在线观看 | 帮老师解开蕾丝奶罩吸乳网站 | 精品久久久无码中文字幕 | 性生交大片免费看l | 中文无码成人免费视频在线观看 | 131美女爱做视频 | 亚洲国产欧美国产综合一区 | 中文字幕无码av波多野吉衣 | 人人妻在人人 | 强开小婷嫩苞又嫩又紧视频 | 亚洲日本一区二区三区在线 | 久久久www成人免费毛片 | 亚洲日韩一区二区 | 97人妻精品一区二区三区 | 国内精品久久久久久中文字幕 | 国产女主播喷水视频在线观看 | 丰满少妇熟乱xxxxx视频 | 亚洲综合无码久久精品综合 | 狠狠cao日日穞夜夜穞av | 3d动漫精品啪啪一区二区中 | 国产午夜无码精品免费看 | 十八禁视频网站在线观看 | 久久久久久av无码免费看大片 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲aⅴ无码成人网站国产app | 国产婷婷色一区二区三区在线 | 亚洲va欧美va天堂v国产综合 | 给我免费的视频在线观看 | 熟妇人妻无乱码中文字幕 | 日韩精品久久久肉伦网站 | 丰满少妇熟乱xxxxx视频 | 国内少妇偷人精品视频免费 | 伊人久久大香线焦av综合影院 | 自拍偷自拍亚洲精品被多人伦好爽 | 欧美人与物videos另类 | 四虎4hu永久免费 | 国产精品久久久久久久影院 | 丰满人妻被黑人猛烈进入 | 扒开双腿吃奶呻吟做受视频 | 兔费看少妇性l交大片免费 | 亚洲综合色区中文字幕 | 牲交欧美兽交欧美 | 67194成是人免费无码 | 亚洲va中文字幕无码久久不卡 | 国产在线精品一区二区高清不卡 | 一本色道久久综合狠狠躁 | 国产精品欧美成人 | 日本又色又爽又黄的a片18禁 | 国产一区二区三区影院 | 国产亚av手机在线观看 | 中国大陆精品视频xxxx | 久久久久久a亚洲欧洲av冫 | 一本色道久久综合亚洲精品不卡 | 日本精品人妻无码77777 天堂一区人妻无码 | 双乳奶水饱满少妇呻吟 | 国产肉丝袜在线观看 | 内射后入在线观看一区 | 人妻有码中文字幕在线 | 美女极度色诱视频国产 | 乱中年女人伦av三区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国语自产偷拍精品视频偷 | 亚洲爆乳大丰满无码专区 | 丰满少妇弄高潮了www | 99久久久国产精品无码免费 | 日韩欧美中文字幕在线三区 | 疯狂三人交性欧美 | 中文精品无码中文字幕无码专区 | 亚洲 高清 成人 动漫 | 97精品国产97久久久久久免费 | 国产无套内射久久久国产 | 亚洲熟悉妇女xxx妇女av | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲自偷自拍另类第1页 | 人人妻人人澡人人爽人人精品 | 亚洲综合色区中文字幕 | 欧美色就是色 | 超碰97人人射妻 | 亚洲综合无码久久精品综合 | 国内精品人妻无码久久久影院 | 国内综合精品午夜久久资源 | 亚洲欧洲日本无在线码 | 国产人妻精品一区二区三区不卡 | 亚洲国产精品久久久天堂 | 日日夜夜撸啊撸 | 国产亚洲精品久久久久久大师 | 300部国产真实乱 | 日本乱人伦片中文三区 | 性开放的女人aaa片 | 色窝窝无码一区二区三区色欲 | 欧美性猛交xxxx富婆 | 国产乱人无码伦av在线a | 亚洲欧洲日本综合aⅴ在线 | 无码人妻久久一区二区三区不卡 | 图片区 小说区 区 亚洲五月 | 欧美性猛交内射兽交老熟妇 | 成人免费视频在线观看 | 18精品久久久无码午夜福利 | 精品国产一区av天美传媒 | 在线欧美精品一区二区三区 | 无码人妻精品一区二区三区下载 | 少妇一晚三次一区二区三区 | 久久国产精品萌白酱免费 | 任你躁国产自任一区二区三区 | 日产国产精品亚洲系列 | 麻豆蜜桃av蜜臀av色欲av | 欧美日韩久久久精品a片 | 亚洲国产午夜精品理论片 | 三上悠亚人妻中文字幕在线 | 中文字幕无码热在线视频 | 久久www免费人成人片 | 亚洲热妇无码av在线播放 | 激情内射亚州一区二区三区爱妻 | 国产精品久久久久无码av色戒 | 国产精品丝袜黑色高跟鞋 | 岛国片人妻三上悠亚 | 又大又硬又黄的免费视频 | 国产又爽又猛又粗的视频a片 | 色一情一乱一伦一视频免费看 | 无码吃奶揉捏奶头高潮视频 | 国内综合精品午夜久久资源 | 亚洲色大成网站www国产 | 亚洲a无码综合a国产av中文 | 特级做a爰片毛片免费69 | 18无码粉嫩小泬无套在线观看 | 亚洲男人av香蕉爽爽爽爽 | 国产成人综合在线女婷五月99播放 | 欧美人与动性行为视频 | 熟女少妇在线视频播放 | 国精产品一品二品国精品69xx | 久久综合香蕉国产蜜臀av | 成人免费视频一区二区 | 久久久av男人的天堂 | 精品欧洲av无码一区二区三区 | 午夜免费福利小电影 | 国产xxx69麻豆国语对白 | 麻豆av传媒蜜桃天美传媒 | 少妇性荡欲午夜性开放视频剧场 | 亚洲精品一区国产 | 亚洲码国产精品高潮在线 | 久久人人爽人人爽人人片av高清 | 国产福利视频一区二区 | 无码人妻久久一区二区三区不卡 | 亚洲一区二区三区含羞草 | 亚洲一区二区三区播放 | 丁香花在线影院观看在线播放 | 欧美xxxx黑人又粗又长 | 日日摸天天摸爽爽狠狠97 | 日日碰狠狠丁香久燥 | 好男人社区资源 | 亚洲精品一区二区三区四区五区 | 亚洲日韩av一区二区三区中文 | 无码国内精品人妻少妇 | 高潮毛片无遮挡高清免费 | 久久久亚洲欧洲日产国码αv | 国产69精品久久久久app下载 | 久久精品国产一区二区三区肥胖 | 色综合久久久无码中文字幕 | 国产乡下妇女做爰 | 欧美 亚洲 国产 另类 | 97精品人妻一区二区三区香蕉 | 四虎永久在线精品免费网址 | 成人精品视频一区二区 | www一区二区www免费 | 99久久99久久免费精品蜜桃 | 老子影院午夜伦不卡 | 鲁一鲁av2019在线 | 男女作爱免费网站 | 日韩成人一区二区三区在线观看 | 亚洲日韩av一区二区三区四区 | 久久亚洲日韩精品一区二区三区 | 天堂在线观看www | 少妇性l交大片欧洲热妇乱xxx | 欧美精品一区二区精品久久 | 久久成人a毛片免费观看网站 | 欧美日韩综合一区二区三区 | 亚洲精品午夜国产va久久成人 | 国产手机在线αⅴ片无码观看 | 极品尤物被啪到呻吟喷水 | 黑人巨大精品欧美一区二区 | 麻豆精品国产精华精华液好用吗 | 国产人妻精品一区二区三区 | 国产熟妇高潮叫床视频播放 | 高清不卡一区二区三区 | 久久人人97超碰a片精品 | 国内精品久久久久久中文字幕 | 国产又爽又猛又粗的视频a片 | 55夜色66夜色国产精品视频 | 亚洲国产日韩a在线播放 | 人妻无码αv中文字幕久久琪琪布 | 人妻少妇精品无码专区二区 | 一本加勒比波多野结衣 | 欧美 日韩 人妻 高清 中文 | 亚洲国产精品无码一区二区三区 | а√资源新版在线天堂 | 成人aaa片一区国产精品 | 国产成人无码av一区二区 | 天天爽夜夜爽夜夜爽 | 香港三级日本三级妇三级 | 日本护士xxxxhd少妇 | 黑人玩弄人妻中文在线 | 无码中文字幕色专区 | 蜜桃视频插满18在线观看 | 精品乱子伦一区二区三区 | 色欲久久久天天天综合网精品 | 香港三级日本三级妇三级 | 中文字幕 人妻熟女 | 无人区乱码一区二区三区 | 国产国语老龄妇女a片 | 美女极度色诱视频国产 | 免费观看又污又黄的网站 | 久久久久成人片免费观看蜜芽 | 亚洲欧洲中文日韩av乱码 | 性色欲网站人妻丰满中文久久不卡 | 黑人玩弄人妻中文在线 | 久久国产精品二国产精品 | a在线亚洲男人的天堂 | 国产精品亚洲一区二区三区喷水 | 人人妻人人澡人人爽人人精品 | 亚洲日韩一区二区 | 久久综合给久久狠狠97色 | 18禁黄网站男男禁片免费观看 | 国内老熟妇对白xxxxhd | 熟妇人妻无乱码中文字幕 | 日韩精品无码免费一区二区三区 | aⅴ在线视频男人的天堂 | 亚洲人成网站免费播放 | 久久综合狠狠综合久久综合88 | 台湾无码一区二区 | 精品久久久久久人妻无码中文字幕 | 天天综合网天天综合色 | 黑人粗大猛烈进出高潮视频 | 久久99精品久久久久久动态图 | 荡女精品导航 | 精品人人妻人人澡人人爽人人 | 在线观看欧美一区二区三区 | 国产欧美亚洲精品a | 白嫩日本少妇做爰 | 国产在线精品一区二区三区直播 | 日韩av无码一区二区三区不卡 | 无码精品人妻一区二区三区av | 欧美真人作爱免费视频 | 人人爽人人澡人人高潮 | 97精品人妻一区二区三区香蕉 | 久久久久99精品成人片 | 免费看少妇作爱视频 | 国内少妇偷人精品视频免费 | 国产口爆吞精在线视频 | 无码人妻黑人中文字幕 | 欧美日韩在线亚洲综合国产人 | www国产亚洲精品久久网站 | 无码中文字幕色专区 | 久久午夜无码鲁丝片秋霞 | 国产精品理论片在线观看 | 亚洲中文字幕无码中字 | 久久精品国产大片免费观看 | 国产欧美精品一区二区三区 | 99riav国产精品视频 | 小鲜肉自慰网站xnxx | 99在线 | 亚洲 | 国产精品视频免费播放 | 国产免费久久精品国产传媒 | 蜜桃视频韩日免费播放 | 久久亚洲中文字幕无码 | 国产成人无码一二三区视频 | 老太婆性杂交欧美肥老太 | 亚洲熟女一区二区三区 | 在线天堂新版最新版在线8 | 亚洲精品午夜无码电影网 | 亚洲一区二区观看播放 | 性做久久久久久久免费看 | 久久www免费人成人片 | 天下第一社区视频www日本 | 天堂а√在线中文在线 | 97精品国产97久久久久久免费 | 熟妇女人妻丰满少妇中文字幕 | 人妻与老人中文字幕 | 色欲人妻aaaaaaa无码 | 亚洲大尺度无码无码专区 | 亚洲日韩av一区二区三区中文 | 少妇人妻大乳在线视频 | 亚洲大尺度无码无码专区 | 国产精品美女久久久网av | 午夜福利一区二区三区在线观看 | 美女扒开屁股让男人桶 | 性色欲情网站iwww九文堂 | 成人无码影片精品久久久 | 极品尤物被啪到呻吟喷水 | 夜精品a片一区二区三区无码白浆 | 爽爽影院免费观看 | 高清无码午夜福利视频 | 亚洲欧美国产精品专区久久 | 欧美精品免费观看二区 | 超碰97人人射妻 | 福利一区二区三区视频在线观看 | 乱码av麻豆丝袜熟女系列 | 少妇性荡欲午夜性开放视频剧场 | 中文字幕亚洲情99在线 | 亚洲国产成人a精品不卡在线 | 国产精品久久久久无码av色戒 | 天天av天天av天天透 | 精品人人妻人人澡人人爽人人 | 97久久精品无码一区二区 | 亚洲理论电影在线观看 | 日本护士毛茸茸高潮 | 在教室伦流澡到高潮hnp视频 | 天堂无码人妻精品一区二区三区 | 国产午夜亚洲精品不卡 | 亚洲国产精品毛片av不卡在线 | 无码人妻丰满熟妇区五十路百度 | 亚洲国产精品成人久久蜜臀 | 日韩欧美中文字幕公布 | 日韩无码专区 | 精品人人妻人人澡人人爽人人 | 67194成是人免费无码 | 自拍偷自拍亚洲精品10p | 一个人看的视频www在线 | 伊人久久婷婷五月综合97色 | 久久久久av无码免费网 | 在线欧美精品一区二区三区 | 国产女主播喷水视频在线观看 | 在线成人www免费观看视频 | 全黄性性激高免费视频 | 强辱丰满人妻hd中文字幕 | 亚洲色大成网站www国产 | 亚洲精品一区国产 | 精品无码国产一区二区三区av | 日韩人妻系列无码专区 | 色综合天天综合狠狠爱 | 日韩av无码一区二区三区 | 国产亚洲美女精品久久久2020 | 亚洲午夜福利在线观看 | 欧美丰满熟妇xxxx性ppx人交 | 欧美喷潮久久久xxxxx | 国产精品亚洲五月天高清 | 欧洲极品少妇 | 免费观看的无遮挡av | 亚洲熟悉妇女xxx妇女av | 欧美熟妇另类久久久久久不卡 | 久久99精品国产麻豆蜜芽 | 丰满岳乱妇在线观看中字无码 | 丰满人妻精品国产99aⅴ | 好屌草这里只有精品 | 少妇人妻偷人精品无码视频 | 亚洲人成人无码网www国产 | 亚洲国产成人av在线观看 | 日本乱人伦片中文三区 | 一本久久a久久精品vr综合 | 内射欧美老妇wbb | 欧美精品在线观看 | √天堂资源地址中文在线 | 国产成人精品必看 | 四虎永久在线精品免费网址 | 亚洲中文字幕成人无码 | 999久久久国产精品消防器材 | 久久久久成人精品免费播放动漫 | 伊人色综合久久天天小片 | 亚洲另类伦春色综合小说 | 国产亚洲日韩欧美另类第八页 | 日产精品高潮呻吟av久久 | 国产成人一区二区三区在线观看 | 精品无码国产一区二区三区av | 精品无码一区二区三区的天堂 | 国产精品美女久久久 | 成人女人看片免费视频放人 | 超碰97人人射妻 | 午夜精品久久久内射近拍高清 | 久久国产劲爆∧v内射 | 亚洲色欲久久久综合网东京热 | 无码人中文字幕 | 丰满诱人的人妻3 | 高清不卡一区二区三区 | 成人免费无码大片a毛片 | 少妇久久久久久人妻无码 | 性开放的女人aaa片 | 亚拍精品一区二区三区探花 | 久久国产精品_国产精品 | 宝宝好涨水快流出来免费视频 | 国产精品va在线播放 | 青青青手机频在线观看 | 精品无码国产自产拍在线观看蜜 | 久久久久国色av免费观看性色 | 天堂а√在线中文在线 | 人妻与老人中文字幕 | 国产成人人人97超碰超爽8 | 99久久亚洲精品无码毛片 | 天堂久久天堂av色综合 | 女人被爽到呻吟gif动态图视看 | 国产午夜无码精品免费看 | 亚洲国产高清在线观看视频 | 思思久久99热只有频精品66 | 欧美日韩综合一区二区三区 | 国产午夜精品一区二区三区嫩草 | 国产精品多人p群无码 | 天下第一社区视频www日本 | 国产午夜亚洲精品不卡下载 | 偷窥村妇洗澡毛毛多 | 日本精品人妻无码77777 天堂一区人妻无码 | 内射欧美老妇wbb | 麻豆国产人妻欲求不满谁演的 | 日日摸夜夜摸狠狠摸婷婷 | 无码免费一区二区三区 | 久久精品人人做人人综合 | 久久久久久a亚洲欧洲av冫 | 国产精品久久福利网站 | 亚洲大尺度无码无码专区 | 国产97色在线 | 免 | 免费无码的av片在线观看 | 成人片黄网站色大片免费观看 | 性欧美牲交xxxxx视频 | 少妇被黑人到高潮喷出白浆 | 久久综合九色综合欧美狠狠 | 宝宝好涨水快流出来免费视频 | 久久精品国产一区二区三区 | 久久99久久99精品中文字幕 | 学生妹亚洲一区二区 | 日日麻批免费40分钟无码 | 少妇高潮一区二区三区99 | 狠狠cao日日穞夜夜穞av | 国产亚洲欧美日韩亚洲中文色 | 少妇的肉体aa片免费 | 日韩在线不卡免费视频一区 | 国产午夜无码精品免费看 | 久久无码专区国产精品s | 强奷人妻日本中文字幕 | 扒开双腿吃奶呻吟做受视频 | 午夜精品一区二区三区在线观看 | 久久久亚洲欧洲日产国码αv | 久久久久se色偷偷亚洲精品av | 丰满人妻精品国产99aⅴ | 国产sm调教视频在线观看 | 亚洲一区二区三区无码久久 | 国产免费无码一区二区视频 | 亚洲一区二区三区在线观看网站 | 国产精品a成v人在线播放 | 在线精品亚洲一区二区 | 国产综合在线观看 | 久久综合网欧美色妞网 | 国产激情无码一区二区app | 日韩精品无码一本二本三本色 | 久久午夜无码鲁丝片午夜精品 | 国产成人亚洲综合无码 | 国产精品无码久久av | 特级做a爰片毛片免费69 | 欧美国产日韩亚洲中文 | 在线亚洲高清揄拍自拍一品区 | 国产亚洲欧美在线专区 | 中文字幕无线码免费人妻 | 国产超级va在线观看视频 | 日本熟妇乱子伦xxxx | 夜精品a片一区二区三区无码白浆 | 波多野结衣 黑人 | 欧美丰满熟妇xxxx性ppx人交 | 成人aaa片一区国产精品 | 欧美性生交xxxxx久久久 | 色五月丁香五月综合五月 | 蜜桃视频韩日免费播放 | 国产亚洲欧美在线专区 | 中文字幕乱码亚洲无线三区 | 丰满人妻一区二区三区免费视频 | 波多野结衣aⅴ在线 | 国产69精品久久久久app下载 | 免费无码av一区二区 | 精品一区二区三区波多野结衣 | 欧美乱妇无乱码大黄a片 | 熟女俱乐部五十路六十路av | 亚洲区小说区激情区图片区 | 曰韩无码二三区中文字幕 | 又紧又大又爽精品一区二区 | 少妇被黑人到高潮喷出白浆 | 无码国内精品人妻少妇 | 男人和女人高潮免费网站 | 国产va免费精品观看 | 中文无码成人免费视频在线观看 | 精品偷自拍另类在线观看 | 理论片87福利理论电影 | 亚洲中文字幕在线观看 | 国产精品亚洲一区二区三区喷水 | 窝窝午夜理论片影院 | 日日干夜夜干 | 中文字幕无码免费久久9一区9 | 久久久精品成人免费观看 | 亚洲а∨天堂久久精品2021 | www国产亚洲精品久久网站 | 亚洲另类伦春色综合小说 | 亚洲一区av无码专区在线观看 | 国产精品手机免费 | 婷婷丁香六月激情综合啪 | 国产在线精品一区二区高清不卡 | 亚洲色无码一区二区三区 | 内射巨臀欧美在线视频 | 麻豆人妻少妇精品无码专区 | 精品国产一区二区三区四区在线看 | 丰满护士巨好爽好大乳 | 国产偷抇久久精品a片69 | 少妇被黑人到高潮喷出白浆 | 国产精品久久国产三级国 | 午夜理论片yy44880影院 | 成人试看120秒体验区 | 亚洲人成人无码网www国产 | 午夜丰满少妇性开放视频 | 精品水蜜桃久久久久久久 | 日本一本二本三区免费 | 青青青手机频在线观看 | 妺妺窝人体色www在线小说 | 妺妺窝人体色www在线小说 | 美女扒开屁股让男人桶 | 亚洲日韩精品欧美一区二区 | 亚洲人成影院在线无码按摩店 | 久久综合九色综合欧美狠狠 | 亚洲码国产精品高潮在线 | 免费人成网站视频在线观看 | 久久精品人人做人人综合试看 | 久久午夜无码鲁丝片秋霞 | www成人国产高清内射 | 2019nv天堂香蕉在线观看 | 野外少妇愉情中文字幕 | 国产精品久久久久影院嫩草 | 女人被爽到呻吟gif动态图视看 | 亚洲精品中文字幕久久久久 | 亚洲日韩中文字幕在线播放 | 色婷婷久久一区二区三区麻豆 | 成年美女黄网站色大免费全看 | 国产办公室秘书无码精品99 | 55夜色66夜色国产精品视频 | 国产偷国产偷精品高清尤物 | 内射爽无广熟女亚洲 | 欧美性生交xxxxx久久久 | 亚洲色欲色欲欲www在线 | 久久精品中文闷骚内射 | 老头边吃奶边弄进去呻吟 | 亚洲成色在线综合网站 | 亚洲精品成人福利网站 | 国产suv精品一区二区五 | 日本va欧美va欧美va精品 | 久久久av男人的天堂 | 国产午夜手机精彩视频 | 久久精品国产99久久6动漫 | 色综合久久88色综合天天 | 国精品人妻无码一区二区三区蜜柚 | 特黄特色大片免费播放器图片 | 无码一区二区三区在线观看 | 精品aⅴ一区二区三区 | 午夜熟女插插xx免费视频 | 亚洲精品一区国产 | 99久久久国产精品无码免费 | 亚洲日本va午夜在线电影 | 成人性做爰aaa片免费看 | 久久zyz资源站无码中文动漫 | 丰满少妇高潮惨叫视频 | 国产精品第一国产精品 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 一本久道高清无码视频 | 天下第一社区视频www日本 | 亚洲成av人片天堂网无码】 | 正在播放老肥熟妇露脸 | 国产人妻人伦精品1国产丝袜 | 中文精品久久久久人妻不卡 | 99久久精品午夜一区二区 | 最近的中文字幕在线看视频 | 日本一卡二卡不卡视频查询 | 亚洲色欲色欲天天天www | 国产免费观看黄av片 | 国内精品久久毛片一区二区 | 无码国产色欲xxxxx视频 | 国内少妇偷人精品视频 | 精品国偷自产在线视频 | 亚洲熟悉妇女xxx妇女av | 国产av无码专区亚洲awww | 亚洲色无码一区二区三区 | 99久久精品午夜一区二区 | aⅴ亚洲 日韩 色 图网站 播放 | 东京热男人av天堂 | 131美女爱做视频 | 无码人妻久久一区二区三区不卡 | 青草青草久热国产精品 | 永久黄网站色视频免费直播 | 亚洲一区二区三区在线观看网站 | 欧美人与动性行为视频 | 高清不卡一区二区三区 | 老司机亚洲精品影院无码 | 日韩亚洲欧美精品综合 | 国产激情综合五月久久 | 精品久久久无码人妻字幂 | 日日躁夜夜躁狠狠躁 | 国产又爽又猛又粗的视频a片 | 玩弄人妻少妇500系列视频 | 亚洲理论电影在线观看 | 性做久久久久久久免费看 | 亚洲国产精品一区二区第一页 | 亚洲欧美国产精品久久 | 亚洲色欲色欲欲www在线 | 国产激情一区二区三区 | 国产人妻人伦精品 | 久在线观看福利视频 | 欧洲欧美人成视频在线 | 国产va免费精品观看 | 久久久久成人精品免费播放动漫 | 亚洲国产av精品一区二区蜜芽 | 青青草原综合久久大伊人精品 | 国内精品人妻无码久久久影院 | 久久99国产综合精品 | 国产精品无码成人午夜电影 | 久久97精品久久久久久久不卡 | 扒开双腿吃奶呻吟做受视频 | 麻豆果冻传媒2021精品传媒一区下载 | 中文字幕无码乱人伦 | 亚洲国产欧美日韩精品一区二区三区 | 网友自拍区视频精品 | 午夜福利不卡在线视频 | 国产亚洲精品久久久久久国模美 | 国产色视频一区二区三区 | 波多野结衣av一区二区全免费观看 | 国产成人无码av一区二区 | aa片在线观看视频在线播放 | 香蕉久久久久久av成人 | 一区二区三区高清视频一 | 亚洲精品鲁一鲁一区二区三区 | 精品人妻人人做人人爽 | 亚洲欧美国产精品专区久久 | 青青青爽视频在线观看 | 亚洲爆乳精品无码一区二区三区 | 色婷婷综合激情综在线播放 | 九九在线中文字幕无码 | 国产一区二区三区四区五区加勒比 | 久久久久久亚洲精品a片成人 | 一本一道久久综合久久 | 领导边摸边吃奶边做爽在线观看 | 久久国产精品精品国产色婷婷 | 午夜福利试看120秒体验区 | 精品亚洲韩国一区二区三区 | 国产无套内射久久久国产 | 色综合视频一区二区三区 | 少妇无码av无码专区在线观看 | 亚洲人成网站在线播放942 | 高清无码午夜福利视频 | 99久久精品午夜一区二区 | 午夜精品久久久久久久久 | 日韩人妻系列无码专区 | 奇米影视888欧美在线观看 | 午夜精品一区二区三区在线观看 | 天堂一区人妻无码 | 99re在线播放 | 色欲综合久久中文字幕网 | 亚洲第一网站男人都懂 | 色婷婷av一区二区三区之红樱桃 | 2020久久超碰国产精品最新 | 特大黑人娇小亚洲女 | 中文无码成人免费视频在线观看 | 男人的天堂2018无码 | 日本大香伊一区二区三区 | 国产一区二区三区日韩精品 | 在线天堂新版最新版在线8 | 亚洲欧洲日本无在线码 | 国产极品美女高潮无套在线观看 | 俺去俺来也在线www色官网 | 色一情一乱一伦一区二区三欧美 | 国产亚洲日韩欧美另类第八页 | 亚洲综合伊人久久大杳蕉 | 亚洲国产精品一区二区美利坚 | 国内精品九九久久久精品 | 呦交小u女精品视频 | 久久国产精品_国产精品 | 人人妻人人澡人人爽欧美一区 | 国产精品久久久久9999小说 | 亚洲精品综合五月久久小说 | 亚洲伊人久久精品影院 | 久久97精品久久久久久久不卡 | a片免费视频在线观看 | 亚洲精品鲁一鲁一区二区三区 | 欧美35页视频在线观看 | 日本va欧美va欧美va精品 | 色婷婷综合中文久久一本 | 国产成人无码av片在线观看不卡 | 久激情内射婷内射蜜桃人妖 | ass日本丰满熟妇pics | 少妇被黑人到高潮喷出白浆 | 最新国产乱人伦偷精品免费网站 | 亚洲精品成人av在线 | 欧美亚洲日韩国产人成在线播放 | 动漫av一区二区在线观看 | 狠狠亚洲超碰狼人久久 | 中文字幕无码av激情不卡 | 中文字幕+乱码+中文字幕一区 | 精品国产麻豆免费人成网站 | 免费无码的av片在线观看 | 久久精品国产99久久6动漫 | 亚洲综合精品香蕉久久网 | 中文字幕人成乱码熟女app | 少妇厨房愉情理9仑片视频 | 亚洲成色www久久网站 | 免费观看黄网站 | 国产精品亚洲а∨无码播放麻豆 | 久久99精品久久久久婷婷 | 成熟妇人a片免费看网站 | 国产国产精品人在线视 | 国产精品第一区揄拍无码 | 国产亚洲欧美日韩亚洲中文色 | 国精品人妻无码一区二区三区蜜柚 | 国产精品美女久久久久av爽李琼 | 亚洲男女内射在线播放 | 在线 国产 欧美 亚洲 天堂 | 99国产欧美久久久精品 | 又色又爽又黄的美女裸体网站 | 亚洲精品国偷拍自产在线麻豆 | 亚洲伊人久久精品影院 | 免费国产黄网站在线观看 | 内射爽无广熟女亚洲 | 精品久久久久久人妻无码中文字幕 | 在线精品亚洲一区二区 | 草草网站影院白丝内射 | 欧美三级a做爰在线观看 | 国产成人精品一区二区在线小狼 | 国产美女极度色诱视频www | 欧美 日韩 人妻 高清 中文 | 亚洲色在线无码国产精品不卡 | 亚洲国产精品久久久久久 | 精品国产一区二区三区四区在线看 | 99久久亚洲精品无码毛片 | 国产美女极度色诱视频www | 精品一区二区三区波多野结衣 | 国产成人无码一二三区视频 | 中文字幕无码免费久久99 | 欧美激情一区二区三区成人 | 国产精品无码成人午夜电影 | 国产av无码专区亚洲a∨毛片 | 国产精品亚洲综合色区韩国 | av无码久久久久不卡免费网站 | 亚洲乱码国产乱码精品精 | 欧美日韩亚洲国产精品 | 久久精品人妻少妇一区二区三区 | 精品久久久久久亚洲精品 | 无码人妻丰满熟妇区五十路百度 | 国产精品亚洲一区二区三区喷水 | 四虎影视成人永久免费观看视频 | 学生妹亚洲一区二区 | 无遮挡国产高潮视频免费观看 | 国产疯狂伦交大片 | 2019nv天堂香蕉在线观看 | 国产亚洲精品久久久久久久久动漫 | 国产精品爱久久久久久久 | 国产办公室秘书无码精品99 | 成人亚洲精品久久久久 | 一个人看的www免费视频在线观看 | 国产熟女一区二区三区四区五区 | 99久久人妻精品免费二区 | 激情内射日本一区二区三区 | 欧美乱妇无乱码大黄a片 | 亚洲成av人影院在线观看 | 日本一本二本三区免费 | 久久99热只有频精品8 | 国产熟妇另类久久久久 | 撕开奶罩揉吮奶头视频 | 国产亚洲精品久久久久久大师 | 亚洲综合精品香蕉久久网 | 国产精品亚洲五月天高清 | 国产色视频一区二区三区 | 国产美女极度色诱视频www | 无码人妻丰满熟妇区毛片18 | 天堂亚洲2017在线观看 | 一本大道久久东京热无码av | 久久午夜夜伦鲁鲁片无码免费 | 内射后入在线观看一区 | 国产精品爱久久久久久久 | 狂野欧美激情性xxxx | 成熟女人特级毛片www免费 | 人人爽人人澡人人高潮 | 日韩欧美中文字幕在线三区 | 国产成人无码av在线影院 | 久久精品视频在线看15 | 亚洲七七久久桃花影院 | 日本一卡二卡不卡视频查询 | 欧美人与物videos另类 | 成人免费无码大片a毛片 | 久久精品国产日本波多野结衣 | 亚洲gv猛男gv无码男同 | 无码人妻av免费一区二区三区 | 亚洲一区av无码专区在线观看 | 亚洲精品综合一区二区三区在线 | 亚洲精品成a人在线观看 | 九九综合va免费看 | 欧美性生交xxxxx久久久 | 欧美放荡的少妇 | 亚洲国产高清在线观看视频 | 小泽玛莉亚一区二区视频在线 | 午夜精品一区二区三区在线观看 | 日韩人妻系列无码专区 | 99国产精品白浆在线观看免费 | 亚洲熟妇色xxxxx欧美老妇 | 午夜精品久久久久久久久 | 精品偷拍一区二区三区在线看 | 欧美第一黄网免费网站 | 欧美日韩精品 | 色综合天天综合狠狠爱 | 内射巨臀欧美在线视频 | 国产福利视频一区二区 | 日韩av激情在线观看 | 夜夜高潮次次欢爽av女 | 中文字幕人成乱码熟女app | 中文字幕日产无线码一区 | 俺去俺来也www色官网 | 全球成人中文在线 | 日欧一片内射va在线影院 | 国产无套内射久久久国产 | 久久午夜无码鲁丝片午夜精品 | 六十路熟妇乱子伦 | 综合人妻久久一区二区精品 | 国产av一区二区三区最新精品 | 成人精品视频一区二区三区尤物 | 精品国产麻豆免费人成网站 | 99国产精品白浆在线观看免费 | 丰满少妇熟乱xxxxx视频 | 内射白嫩少妇超碰 | 奇米影视7777久久精品人人爽 | 日本www一道久久久免费榴莲 | 亚洲精品国偷拍自产在线观看蜜桃 | 无码人妻精品一区二区三区不卡 | 日日躁夜夜躁狠狠躁 | 亚洲の无码国产の无码影院 | 亚洲国产成人av在线观看 | 亚洲七七久久桃花影院 | 久久精品一区二区三区四区 | 精品无码成人片一区二区98 | 久久久精品成人免费观看 | 日本精品高清一区二区 | 国产婷婷色一区二区三区在线 | 最新国产麻豆aⅴ精品无码 | 国产人妻精品一区二区三区 | 国产精品a成v人在线播放 | 无码av岛国片在线播放 | 97无码免费人妻超级碰碰夜夜 | 亚洲日韩精品欧美一区二区 | 亚洲中文字幕乱码av波多ji | 中文精品久久久久人妻不卡 | 精品国精品国产自在久国产87 | 久久精品一区二区三区四区 | 日韩视频 中文字幕 视频一区 | 内射白嫩少妇超碰 | 免费无码一区二区三区蜜桃大 | 天堂久久天堂av色综合 | 永久免费精品精品永久-夜色 | 久久99久久99精品中文字幕 | 国产激情无码一区二区 | 一本大道久久东京热无码av | 亚洲人成网站免费播放 | 婷婷五月综合缴情在线视频 | 夜夜躁日日躁狠狠久久av | 国产婷婷色一区二区三区在线 | 国产成人精品三级麻豆 | 亚洲区欧美区综合区自拍区 | 性生交大片免费看女人按摩摩 | 未满小14洗澡无码视频网站 | 久久精品中文字幕一区 | 国产精品亚洲五月天高清 | 国产内射爽爽大片视频社区在线 | 六十路熟妇乱子伦 | 国产区女主播在线观看 | 性欧美牲交xxxxx视频 | 男人的天堂2018无码 | 国产内射老熟女aaaa | 国产精品爱久久久久久久 | 国产成人精品视频ⅴa片软件竹菊 | 天堂а√在线地址中文在线 | 国产女主播喷水视频在线观看 | 无码任你躁久久久久久久 | 国产亲子乱弄免费视频 | 无码国内精品人妻少妇 | 亚洲精品欧美二区三区中文字幕 | 国产亚洲精品久久久久久国模美 | 亚洲国产精华液网站w | 中文无码伦av中文字幕 | 国产三级精品三级男人的天堂 | 牲欲强的熟妇农村老妇女视频 | 日韩精品乱码av一区二区 | 久久99精品久久久久久 | 国产精品福利视频导航 | 少女韩国电视剧在线观看完整 | 精品国精品国产自在久国产87 | 国产精品无码一区二区桃花视频 | 欧美 丝袜 自拍 制服 另类 | 麻豆国产丝袜白领秘书在线观看 | 国产无遮挡吃胸膜奶免费看 | 国精产品一品二品国精品69xx |